在Python中处理多个网络接口

时间:2009-07-07 06:48:38

标签: python linux networking ip

如何在python中执行以下操作:

  1. 列出当前计算机上的所有IP接口。
  2. 接收有关网络接口更改的更新(上升,下降,更改IP地址)。
  3. Ubuntu Hardy中提供的任何python包都可以。

3 个答案:

答案 0 :(得分:3)

我认为最好的方法是通过dbus-python

tutorial稍微触及了网络接口:

import dbus
bus = dbus.SystemBus()
proxy = bus.get_object('org.freedesktop.NetworkManager',
                       '/org/freedesktop/NetworkManager/Devices/eth0')
# proxy is a dbus.proxies.ProxyObject

答案 1 :(得分:0)

我一直在使用以下代码,

temp =  str(os.system("ifconfig -a | awk '$2~/^Link/{_1=$1;getline;if($2~/^addr/){print _1" "}}'"))

它将提供' up'网络接口

e.g。 eth0,eth2,wlan0

答案 2 :(得分:0)

不,不......你不需要打扰os.system()或dbus API。

您真正需要的是使用netlink API来实现这一点。使用libnl接口(netlink.route.link)或自己处理netlink消息。看看this example