[RISOLTO] Corrispondenza indirizzo MAC con Iface

Condividi qui le tue idee sulle query SQL per la creazione di report nella console WAPT Enterprise
Regole del forum
Regole del forum della community
* Supporto in inglese su www.reddit.com/r/wapt
* Supporto della community in francese disponibile su questo forum
* Si prega di anteporre [RISOLTO] al titolo dell'argomento se è stato risolto.
* Si prega di non modificare un argomento contrassegnato con [RISOLTO]. Aprire un nuovo argomento facendo riferimento a quello precedente.
* Specificare la versione di WAPT installata, la versione completa e il numero di build (2.2.1.11957 / 2.2.2.12337 / ecc.) nonché l'edizione Enterprise/Discovery.
* Le versioni 1.8.2 e precedenti non sono più supportate. Le uniche domande accettate relative alla versione 1.8.2 riguardano l'aggiornamento a una versione supportata (2.1, 2.2, ecc.).
* Specificare il sistema operativo del server (Linux/Windows) e la versione (Debian Buster/Bullseye - CentOS 7 - Windows Server 2012/2016/2019).
* Specificare il sistema operativo della macchina di amministrazione/creazione dei pacchetti e della macchina con l'agente problematico, se applicabile (Windows 7/10/11/Debian 11/ecc.).
* Evitare di porre più domande quando si apre una discussione, altrimenti potrebbe essere ignorata. Se ci sono più discussioni, aprirle separatamente, preferibilmente una dopo l'altra e non tutte contemporaneamente (ovvero, non intasare il forum).
* Includere frammenti di codice, screenshot e altre immagini direttamente nel post. I link a Pastebin, Bitly e altri siti di terze parti verranno sistematicamente rimossi.
* Come in qualsiasi forum della community, il supporto è fornito volontariamente dai membri. Se si necessita di supporto commerciale, è possibile contattare il reparto vendite di Tranquil IT al numero 02.40.97.57.55
Bloccato
gavit
Messaggi: 25
Registrazione: 30 aprile 2020 - 16:21

22 giugno 2022 - 11:37

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
Avatar utente
htouvet
Esperto WAPT
Messaggi: 436
Registrazione: 16 marzo 2015 - 10:48
Contatto:

22 giugno 2022 - 17:38

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);
                                
Tranquillo IT
gavit
Messaggi: 25
Registrazione: 30 aprile 2020 - 16:21

23 giugno 2022 - 13:16

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
Avatar utente
sfontenau
Esperto WAPT
Messaggi: 2312
Registrato: 10 luglio 2014 - 23:52
Contatto:

29 giugno 2022 - 22:28

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