2016-02-05 30 views
1

语言:Python 3.x都有netifaces:试图让所有接口的ip地址在Linux中

操作系统:Ubuntu的14.04

如何通过使用Python 3.X与获得所有接口的IP地址netifaces模块或通过使用任何其他模块。

>>> netifaces.interfaces() 
['lo', 'eth0', 'eth1'] 

>>> netifaces.interfaces() 
['lo', 'eth0', 'eth1'] 
>>> netifaces.ifaddresses('eth0') 
{17: [{'broadcast': 'ff:ff:ff:ff:ff:ff', 'addr': '08:00:27:5b:24:09'}], 2: [{'broadcast': '10.0.2.255', 'netmask': '255.255.255.0', 'addr': '10.0.2.15'}], 10: [{'netmask': 'ffff:ffff:ffff:ffff::', 'addr': 'fe80::a00:27ff:fe5b:2409%eth0'}]} 

我想用

>>> len(netifaces.interfaces()) 
3 

,并希望开发一些while循环带来ip地址在我的系统中所有interaces。但是在netifaces.ifaddress()函数替换接口名称的区域失败。

如果您需要更多信息,请让我知道。

谢谢。

回答

1

你可以做

list(map(lambda i:netifaces.ifaddresses(i),netifaces.interfaces())) 
+0

请你解释一下它会做的。我正在学Python。\ –

+0

这是我得到的,>>>地图(lambda i:netifaces.ifaddresses(i),netifaces.interfaces()) <地图对象在0x7f7420ccd3c8> 我不知道如何提取。可能会使用谷歌搜索帮助我 –

+0

它给所有接口的IP地址。但我其实并没有多少想法。就像只提取接口的IP地址一样。我在lambda后给出了print i:以获得接口名称。但是我得到了错误。并以同样的方式,我可以包括一个新的行字符 –