在Python中处理多个networking接口

我怎样才能在Python中做以下的事情:

  1. 列出当前机器上的所有IP接口。
  2. 接收有关networking接口更改的更新(上,下,更改IP地址)。

任何在Ubuntu Hardy中可用的python包都可以。

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

本教程稍微介绍一下网络接口:

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

我一直在使用下面的代码,

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

它会给“up”网络接口

如eth0,eth2,wlan0

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

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