Lister les interfaces réseau sous forme JSON en python

Le 21 septembre 2022
algorithme

Exemple:

python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import psutil
import json
import socket

def get_network_interfaces_json():
    interfaces = psutil.net_if_addrs()
    data = []
    for interface_name, interface_addresses in interfaces.items():
        interface_data = {}
        interface_data["name"] = interface_name
        interface_data["mac_address"] = ""
        interface_data["ipv4_address"] = ""
        interface_data["ipv6_address"] = ""
        for address in interface_addresses:
            if address.family == psutil.AF_LINK:
                interface_data["mac_address"] = address.address
            elif address.family == socket.AF_INET:
                interface_data["ipv4_address"] = address.address
            elif address.family == socket.AF_INET6:
                interface_data["ipv6_address"] = address.address
        data.append(interface_data)
    return json.dumps(data, indent=4)

Dans cet algorithme, nous utilisons la bibliothèque psutil pour obtenir les informations sur les interfaces réseau. Nous commençons par appeler la méthode psutil.net_if_addrs() pour obtenir un dictionnaire avec les noms d’interface réseau en tant que clés et les adresses associées en tant que valeurs.

Nous créons ensuite une liste data pour stocker les informations sur chaque interface réseau sous forme de dictionnaire. Pour chaque interface réseau, nous créons un dictionnaire interface_data vide et ajoutons les informations nécessaires en parcourant toutes les adresses associées à l’interface.

Pour chaque adresse, nous vérifions sa famille (address.family) pour déterminer s’il s’agit d’une adresse MAC, IPv4 ou IPv6. Nous stockons l’adresse correspondante dans le dictionnaire interface_data. Si une adresse n’est pas disponible pour une famille donnée, nous stockons une chaîne vide.

Une fois que toutes les informations sur une interface réseau ont été stockées dans interface_data, nous l’ajoutons à la liste data.

Enfin, nous utilisons la fonction json.dumps() pour convertir la liste data en une chaîne JSON formatée avec une indentation de 4 espaces.

Vous pouvez appeler cette fonction simplement en appelant get_network_interfaces_json(), comme suit :

python
1
2
result_json = get_network_interfaces_json()
print(result_json)

Résultat une chaîne JSON formatée contenant les informations de base sur les interfaces réseau.