Manipulation de plusieurs interfaces réseau en Python
-
11-09-2019 - |
Question
Comment puis-je faire en python les choses suivantes:
- Liste toutes les interfaces IP sur la machine actuelle.
- Recevoir des mises à jour sur les changements dans les interfaces réseau (monte, descend, change d'adresse IP).
Tout paquet python disponible dans Ubuntu Hardy fera.
La solution
Je pense que la meilleure façon de le faire est par dbus-python .
Le tutoriel touche sur les interfaces réseau un peu :
import dbus
bus = dbus.SystemBus()
proxy = bus.get_object('org.freedesktop.NetworkManager',
'/org/freedesktop/NetworkManager/Devices/eth0')
# proxy is a dbus.proxies.ProxyObject
Autres conseils
J'utilise le code suivant,
temp = str(os.system("ifconfig -a | awk '$2~/^Link/{_1=$1;getline;if($2~/^addr/){print _1" "}}'"))
il donnera les interfaces réseau 'haut'
par exemple. eth0, eth2, wlan0
Non, non ... Vous n'avez pas besoin de déranger os.system () ou API dbus.
Qu'est-ce que vous avez vraiment besoin est d'utiliser l'API NetLink mettre en œuvre. Soit utiliser libnl interface (netlink.route.link) ou gérer les messages netlink par vous-même . Jetez un oeil à cet exemple .
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow