Manipulação de múltiplas interfaces de rede em Python
-
11-09-2019 - |
Pergunta
Como posso fazer as seguintes coisas em python:
- Lista todas as interfaces IP na máquina atual.
- Receber atualizações sobre as mudanças nas interfaces de rede (sobe, desce, muda de endereço IP).
Qualquer pacote python disponível no Ubuntu Hardy vai fazer.
Solução
Eu acho que a melhor maneira de fazer isso é através dbus-python .
O tutorial toques sobre interfaces de rede um pouco :
import dbus
bus = dbus.SystemBus()
proxy = bus.get_object('org.freedesktop.NetworkManager',
'/org/freedesktop/NetworkManager/Devices/eth0')
# proxy is a dbus.proxies.ProxyObject
Outras dicas
Eu estive usando o seguinte código,
temp = str(os.system("ifconfig -a | awk '$2~/^Link/{_1=$1;getline;if($2~/^addr/){print _1" "}}'"))
ele vai dar as 'up' interfaces de rede
por exemplo. eth0, eth2, wlan0
Não, não ... Você não precisa se preocupar os.system () ou dbus API.
O que você realmente precisa é usar API netlink para implementar isso. Ou usar mensagens netlink libnl de interface (netlink.route.link) ou punho por si mesmo . Dê uma olhada na este exemplo .
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow