Manejo de varias interfaces de red en Python
-
11-09-2019 - |
Pregunta
¿Cómo puedo hacer las siguientes cosas en Python:
- Lista de todas las interfaces IP del equipo actual.
- Recibe sobre los cambios en las interfaces de red (sube, baja, cambia la dirección IP).
Cualquier paquete python disponible en Ubuntu Hardy va a hacer.
Solución
Creo que la mejor manera de hacer esto es a través de dbus-python.
El tutorial toca en las interfaces de red un poco :
import dbus
bus = dbus.SystemBus()
proxy = bus.get_object('org.freedesktop.NetworkManager',
'/org/freedesktop/NetworkManager/Devices/eth0')
# proxy is a dbus.proxies.ProxyObject
Otros consejos
He estado usando el siguiente código:
temp = str(os.system("ifconfig -a | awk '$2~/^Link/{_1=$1;getline;if($2~/^addr/){print _1" "}}'"))
que dará a las interfaces de red 'Up'
por ejemplo. eth0, eth2, wlan0
No, no ... Usted no tiene que molestarse os.system () o API dbus.
Lo que realmente necesita es utilizar la API de enlace de red para implementar esto. O bien utilizar libnl interfaz (netlink.route.link) o manejar mensajes de conexión de red por sí mismo . Echar un vistazo a este ejemplo .
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow