Seite 1 von 1

[GELÖST] MAC-Adressenabgleich mit Interface

Veröffentlicht: 22. Juni 2022 - 11:37 Uhr
von Gavit
Guten Morgen,

In einem 802.1.X-Projekt müsste ich alle MAC-Adressen meines Computernetzwerks abrufen.
Genauer gesagt, die MAC-Adresse der Ethernet-Karte und der WLAN-Karte.

Das Problem ist, dass PCs bis zu 38 MAC-Adressen haben.
Ich müsste sie alle auflisten und neben ihren Kartennamen (enps, eth usw.) schreiben
Aber das können wir nicht tun:

Code: Alle auswählen

 host_info->'networking'->*->'mac' as mac,
Wie kann ich vorgehen?

Angenommen, mein Code sieht derzeit so aus:

Code: Alle auswählen

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

Betreff: MAC-Adresse mit Benutzeroberfläche abgleichen

Veröffentlicht: 22. Juni 2022 – 17:38 Uhr
von htouvet
Guten Morgen,
Um „erweiterte“ Abfragen auf JSON durchzuführen, ähnlich wie XPath für XML, müssen Sie das Modul „jsquery“ zu PostgreSQL hinzufügen.

Unter Debian installieren Sie es wie folgt (falls PostgreSQL 13 installiert ist):

Code: Alle auswählen

apt install postgresql-13-jsquery 
sudo -u postgres psql wapt -c "CREATE EXTENSION jsquery;"
Dann die SQL-Abfrage:

Etwa so:

Code: Alle auswählen

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

Betreff: MAC-Adresse mit Benutzeroberfläche abgleichen

Veröffentlicht: 23. Juni 2022 – 13:16 Uhr
von Gavit
Guten Morgen,

Vielen Dank für die schnelle Antwort, die SQL-Abfrage funktioniert einwandfrei!
Bei MAC- und Linux-Computern gibt es keine Probleme beim Mounten.
Für Windows-PCs habe ich jedoch folgendes Feedback:
  • [ {6858AE84-3B6D-4D45-8D00-B9AFAA8D578E} (Beispiel)/Liste]

    Ich habe versucht, die Abfrage für die WMI-Tabelle anzupassen, daher für Windows-Clients

    Code: Alle auswählen

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

    Die Informationen werden dadurch nicht abgerufen; die Felder MACAddress und ProductName bleiben leer.

    Haben Sie eine Lösung für die Neuinstallation von Windows-PCs?
    Oder eine Lösung, die die korrekten Daten in einer einzigen Anfrage abruft, ohne dass eine Anfrage für Windows und eine weitere Anfrage für Linux/MAC gestellt werden muss.

    Aufrichtig,
    VITTAZ Gaëtan

Betreff: MAC-Adresse mit Benutzeroberfläche abgleichen

Veröffentlicht: 29. Juni 2022 - 22:28 Uhr
von Sfonteneau
Nicht weit! ;)

Code: Alle auswählen

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

Code: Alle auswählen

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