[RESOLU] Match MAC Adresse avec Iface

Partagez ici vos idées de requêtes SQL pour le reporting dans la console WAPT Enterprise
Règles du forum
Règles du forum communautaire
* English support on www.reddit.com/r/wapt
* Le support communautaire en français se fait sur ce forum
* Merci de préfixer le titre du topic par [RESOLU] s'il est résolu.
* Merci de ne pas modifier un topic qui est taggé [RESOLU]. Ouvrez un nouveau topic en référençant l'ancien
* Préciser version de WAPT installée, version complète ET numéro de build (2.2.1.11957 / 2.2.2.12337 / etc.) AINSI QUE l'édition Enterprise / Discovery
* Les versions 1.8.2 et antérieures ne sont plus maintenues. Les seules questions acceptées vis à vis de la version 1.8.2 sont liés à la mise à jour vers une version supportée (2.1, 2.2, etc.)
* Préciser OS du serveur (Linux / Windows) et version (Debian Buster/Bullseye - CentOS 7 - Windows Server 2012/2016/2019)
* Préciser OS de la machine d'administration/création des paquets et de la machine avec l'agent qui pose problème le cas échéant (Windows 7 / 10 / 11 / Debian 11 / etc.)
* Eviter de poser plusieurs questions lors de l'ouverture de topic, sinon il risque d'être ignorer. Si plusieurs sujet, ouvrir plusieurs topic, et de préférence les uns après les autres et pas tous en même temps (ie ne pas spammer le forum).
* Inclure directement les morceaux de code, les captures d'écran et autres images directement dans le post. Les liens vers les pastebin, les bitly et autres sites tierces seront systématiquement supprimés.
* Comme tout forum communautaire, le support est fait bénévolement par les membres. Si vous avez besoin d'un support commercial, vous pouvez contacter le service commercial Tranquil IT au 02.40.97.57.55
gavit
Messages : 8
Inscription : 30 avr. 2020 - 16:21

22 juin 2022 - 11:37

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
Avatar de l’utilisateur
htouvet
Expert WAPT
Messages : 402
Inscription : 16 mars 2015 - 10:48
Contact :

22 juin 2022 - 17:38

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);
                                
Tranquil IT
gavit
Messages : 8
Inscription : 30 avr. 2020 - 16:21

23 juin 2022 - 13:16

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
Avatar de l’utilisateur
sfonteneau
Expert WAPT
Messages : 1783
Inscription : 10 juil. 2014 - 23:52
Contact :

29 juin 2022 - 22:28

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