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 :
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.