mac os 接口 eth0 无 en0 列表错误
interfaces eth0 nothing en0 list error for mac os
import netifaces as ni
ip = ni.ifaddresses("eth0")[ni.AF_INET]['addr']
错误
ip = ni.ifaddresses("eth0")[ni.AF_INET]['addr']
ValueError: You must specify a valid interface name.
ip = ni.ifaddresses("en0")[ni.AF_INET]['addr']
错误
ip = ni.ifaddresses("en0")[ni.AF_INET]['addr']
TypeError: list indices must be integers or slices, not str
有谁知道为什么 mac 会出现这样的错误?
第一个错误表示没有名为eth0
的接口。实际上,这是 Linux 上的常见接口名称,但在 MacOS 上不是。
第二个错误意味着您正在尝试提取一个不存在的字段。有关于 en0
的信息,但它是一个数组,而不是字典。这就像说 "hello"["addr"]
,没有办法访问序列的第 "addr"
: 个元素。你的意思显然是
ip = ni.ifaddresses("en0")[ni.AF_INET][0]['addr']
尽管断章取义无法判断仅获得一个地址是否真的是您想要的。你得到的数组代表了一些绑定;也许你想要全部?
addrs = ni.ifaddresses('en0')
ips = [x['addr'] for x in addrs[ni.AF_INET]]
netifaces
documentation 实际上对此进行了相当详细的解释。
import netifaces as ni
ip = ni.ifaddresses("eth0")[ni.AF_INET]['addr']
错误
ip = ni.ifaddresses("eth0")[ni.AF_INET]['addr'] ValueError: You must specify a valid interface name.
ip = ni.ifaddresses("en0")[ni.AF_INET]['addr']
错误
ip = ni.ifaddresses("en0")[ni.AF_INET]['addr'] TypeError: list indices must be integers or slices, not str
有谁知道为什么 mac 会出现这样的错误?
第一个错误表示没有名为eth0
的接口。实际上,这是 Linux 上的常见接口名称,但在 MacOS 上不是。
第二个错误意味着您正在尝试提取一个不存在的字段。有关于 en0
的信息,但它是一个数组,而不是字典。这就像说 "hello"["addr"]
,没有办法访问序列的第 "addr"
: 个元素。你的意思显然是
ip = ni.ifaddresses("en0")[ni.AF_INET][0]['addr']
尽管断章取义无法判断仅获得一个地址是否真的是您想要的。你得到的数组代表了一些绑定;也许你想要全部?
addrs = ni.ifaddresses('en0')
ips = [x['addr'] for x in addrs[ni.AF_INET]]
netifaces
documentation 实际上对此进行了相当详细的解释。