2016-02-05 60 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:以獲得接口名稱。但是我得到了錯誤。並以同樣的方式,我可以包括一個新的行字符 –