Pagina 1 di 1

[RISOLTO] Corrispondenza indirizzo MAC con Iface

Pubblicato: 22 giugno 2022 - 11:37
di gavit
Buongiorno,

In un progetto 802.1.X, avrei bisogno di recuperare tutti gli indirizzi MAC della mia rete di computer.
Più specificamente, l'indirizzo MAC della scheda Ethernet e della scheda WIFI.

Il problema è che i PC hanno fino a 38 indirizzi MAC.
Dovrei elencarli tutti e metterli accanto al nome della loro carta (enps, eth, ecc...)
Ma non possiamo fare:

Codice: Seleziona tutto

 host_info->'networking'->*->'mac' as mac,
Come posso procedere?

Considerando che il mio codice attuale si presenta così:

Codice: Seleziona tutto

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

Re: Abbina l'indirizzo MAC con Iface

Pubblicato: 22 giugno 2022 - 17:38
di htouvet
Buongiorno,
Per effettuare query "avanzate" su JSON, come avviene con XPath per XML, è necessario aggiungere il modulo "jsquery" a PostgreSQL.

Su Debian, per installarlo: (se è installato postgresql 13)

Codice: Seleziona tutto

apt install postgresql-13-jsquery 
sudo -u postgres psql wapt -c "CREATE EXTENSION jsquery;"
Quindi la query SQL:

Qualcosa del genere:

Codice: Seleziona tutto

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

Re: Abbina l'indirizzo MAC con Iface

Pubblicato: 23 giugno 2022 - 13:16
di gavit
Buongiorno,

Grazie mille per la rapida risposta, la query SQL funziona perfettamente!
Per i computer MAC e Linux non ci sono problemi di montaggio.
Ma per i PC Windows, ho il seguente feedback:
  • [ {6858AE84-3B6D-4D45-8D00-B9AFAA8D578E} (esempio)/elenco]

    Ho provato ad adattare la query per la tabella WMI, quindi per i client Windows

    Codice: Seleziona tutto

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

    Questa operazione non recupera le informazioni; i campi MACAddress e ProductName rimangono vuoti.

    Avete una soluzione per reinstallare i PC Windows?
    Oppure una soluzione che recuperi i dati corretti in un'unica richiesta, senza dover effettuare una richiesta per Windows e un'altra per Linux/MAC.

    Sinceramente,
    VITTAZ Gaëtan

Re: Abbina l'indirizzo MAC con Iface

Pubblicato: 29 giugno 2022 - 22:28
di sfontenau
Non lontano! ;)

Codice: Seleziona tutto

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

Codice: Seleziona tutto

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" <> '') ;