【问题标题】:netifaces: Trying to get ipaddress of all Interfaces in Linuxnetifaces:试图获取 Linux 中所有接口的 ipaddress
【发布时间】:2016-05-15 01:04:25
【问题描述】:

语言:Python 3.x

操作系统:Ubuntu 14.04

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

>>> 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 循环,为我系统中的所有交互带来 IPAddress。但在 netifaces.ifaddress() 函数中替换接口名称方面失败。

如果您需要更多信息,请告诉我。

谢谢。

【问题讨论】:

    标签: python linux ubuntu ip-address


    【解决方案1】:

    你可以的

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

    【讨论】:

    • 你能解释一下它会做什么吗?我正在学习python。\
    • 这就是我得到的,>>> map(lambda i:netifaces.ifaddresses(i),netifaces.interfaces()) 我不知道如何提取。可能是谷歌搜索会帮助我
    • 它为所有接口提供 IP 地址。但其实我的想法很少。就像只提取接口的 IPAddress 一样。我在 lambda i: 之后给出了 print i: 以获取接口名称。但我得到了错误。以同样的方式我可以包含一个换行符
    • 我现在正在研究带有列表的 lamda 地图。现在明白你已经编写了一个复杂的 lamda 函数。你能解释一下吗?我不明白的是 netifaces.interfaces() 如何在这里评估并为 ifaddress() 提供参数。
    • @Raja 当你使用地图时,它会接受一个列表并将给定的函数应用到它的每个元素上,在我们的例子中是 lambda....
    猜你喜欢
    • 1970-01-01
    • 2015-08-22
    • 2011-12-01
    • 2011-02-03
    • 1970-01-01
    • 1970-01-01
    • 2018-03-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多