查找网络信息

2024-10-05 12:23:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用Python和psutil查找我的计算机网络信息。结果如下:

{'Local Area Connection* 2': [snic(family=-1, address='34-F3-9A-4C-D0-C5', netmask=None, broadcast=None, ptp=None), snic(family=2, address='169.254.189.147', netmask='255.255.0.0', broadcast=None, ptp=None), snic(family=23, address='fe80::b83c:382a:1976:bd93', netmask=None, broadcast=None, ptp=None)], 'Ethernet': [snic(family=-1, address='C8-5B-76-AC-B7-BC', netmask=None, broadcast=None, ptp=None), snic(family=2, address='10.164.200.11', netmask='255.255.255.0', broadcast=None, ptp=None), snic(family=23, address='fe80::28db:c0b:3d58:9aba', netmask=None, broadcast=None, ptp=None)], 'Wi-Fi': [snic(family=-1, address='34-F3-9A-4C-D0-C4', netmask=None, broadcast=None, ptp=None), snic(family=2, address='192.168.1.102', netmask='255.255.255.0', broadcast=None, ptp=None), snic(family=23, address='fe80::5c61:43a3:f2d6:c994', netmask=None, broadcast=None, ptp=None)], 'Local Area Connection* 4': [snic(family=-1, address='00-00-00-00-00-00-00-E0', netmask=None, broadcast=None, ptp=None), snic(family=23, address='2001:0:9d38:90d7:1093:131:3f57:fe99', netmask=None, broadcast=None, ptp=None), snic(family=23, address='fe80::1093:131:3f57:fe99', netmask=None, broadcast=None, ptp=None)], 'Loopback Pseudo-Interface 1': [snic(family=2, address='127.0.0.1', netmask='255.0.0.0', broadcast=None, ptp=None), snic(family=23, address='::1', netmask=None, broadcast=None, ptp=None)]}

我试图得到连接名和相应的ip,网络掩码,mac地址。但我拿不到。当我使用for循环时,这个dict的键是我唯一得到的:

def NETWORK():
netinfo = psutil.net_if_addrs()
for connection_name in netinfo :
    print connection_name

结果是:

Local Area Connection* 2
Ethernet
Wi-Fi
Local Area Connection* 4
Loopback Pseudo-Interface 1
None

我试图通过这种方式获取这些密钥的价值,但没有成功:

print netinfo['address']
print connection_name['address']
print connection_name.address()

请告诉我如何访问这个dict并获取连接名和相应的ip、netmask、mac地址。 非常感谢


Tags: namenoneaddresslocalareaconnectionfamilynetmask
1条回答
网友
1楼 · 发布于 2024-10-05 12:23:38

它是dict格式的输出。因此,您需要通过键访问这些值。你知道吗

当您运行命令时,您会得到'en0'、'en1'等作为键。你知道吗

>>> out = psutil.net_if_addrs()

out将是一个dict。因此,为了获得'en0'的信息,使用

>>>out['en0']

这将给出snic对象的列表。您可以循环遍历它们并获得如下数据

>>> for a in out['en0']:
...     print(a.address)

这将给出不同的地址。 要访问其他密钥信息,请使用a.netmask

相关问题 更多 >

    热门问题