Page 1 sur 1

[RESOLU] Match MAC Adresse avec Iface

Publié : 22 juin 2022 - 11:37
par gavit
Bonjour,

Dans un projet de 802.1.X j'aurais besoin de récupérer toutes les adresses mac de mon parc informatique.
Plus précisément de la MAC de la carte Ethernet et de la carte WIFI.

Le problème est que les PC on jusqu'à 38 adresses MAC.
J'aurais besoin de toutes les lister et les mettre en face de leur nom de carte (enps, eth, etc...)
Mais on ne peut pas faire de :

Code : Tout sélectionner

 host_info->'networking'->*->'mac' as mac,
Comment je peux procéder ?

Sachant que mon code ressemble à ça pour le moment :

Code : Tout sélectionner

select
distinct
host_info->'networking'->0->'mac' as mac,
host_info->'networking'->0->'iface' as iface,
computer_name
FROM hosts
Cordialement,
VITTAZ Gaëtan

Re: Match MAC Adresse avec Iface

Publié : 22 juin 2022 - 17:38
par htouvet
Bonjour,
Pour faire des requêtes "avancées" sur le JSon, à la manière du XPath de XML, il faut ajouter le module "jsquery" à PosgreSQL.

Sur Debian, pour l'installer : (si postgresql 13 installé)

Code : Tout sélectionner

apt install postgresql-13-jsquery 
sudo -u postgres psql wapt -c "CREATE EXTENSION jsquery;"
Puis la requête SQL:

quelque chose comme ça :

Code : Tout sélectionner

SELECT
  computer_fqdn,
  t.*
FROM
  hosts,
  jsonb_to_recordset(host_info->'networking') as t
    (mac text, iface text);
                                

Re: Match MAC Adresse avec Iface

Publié : 23 juin 2022 - 13:16
par gavit
Bonjour,

Merci beaucoup pour la réactivité la Requête SQL fonctionne bien !
Pour les ordinateurs MAC et Linux aucun problème de remonter.
Mais pour les PC Windows j'ai la remonter suivante :
  • [ {6858AE84-3B6D-4D45-8D00-B9AFAA8D578E} (exemple)/list]

    J'ai essayé d'adapter la requête pour la table wmi donc les clients Windows

    Code : Tout sélectionner

    SELECT
      computer_fqdn,
      t.*
    FROM
      hosts,
      jsonb_to_recordset(wmi->'Win32_NetworkAdapter') as t
        (MACAddress text, ProductName text);
        

    Cela ne me remonte pas les infos les champs MACAddress et ProductName restent vides.

    Avez-vous une solution pour la remontée des PC Windows ?
    Ou une solution qui ferait la bonne remontée en une requête sans à devoir faire une requête pour les Windows et une requête sous les Linux/MAC.

    Cordialement,
    VITTAZ Gaëtan

Re: Match MAC Adresse avec Iface

Publié : 29 juin 2022 - 22:28
par sfonteneau
Pas loin ! ;)

Code : Tout sélectionner

SELECT
  computer_fqdn,
  t.*
FROM
  hosts,
  jsonb_to_recordset(wmi->'Win32_NetworkAdapter') as t
    ("MACAddress" text, "ProductName" text);          
du coup par exemple :

Code : Tout sélectionner

SELECT
  computer_fqdn,
  t.*
FROM
  hosts,
  jsonb_to_recordset(wmi->'Win32_NetworkAdapter') as t("MACAddress" text, "ProductName" text)
  WHERE t."ProductName" !~* 'vpn'
  AND t."ProductName" !~* 'bluetooth'
  AND t."ProductName" !~* 'Virtual Adapter'
  AND t."ProductName" !~* 'WAN Miniport'
  AND t."ProductName" !~* 'TAP-Windows Adapter V9'
  AND t."ProductName" !~* 'VirtualBox Host-Only Ethernet Adapter'
  AND t."ProductName" !~* 'XenServer PV Network Device'
  AND t."ProductName" !~* 'RAS Async Adapter'
  AND (t."MACAddress" <> '') ;