Python netifaces提供不寻常的输出

时间:2017-06-02 07:29:01

标签: python windows ip network-interface python-netifaces

我过去一直使用netifaces没有问题,但最近发生了一些变化。我不确定它是Windows 10故障还是蟒蛇或者可能是netifaces本身。无论如何,这就是发生的事情。

根据文件代码:

import netifaces

netifaces.interfaces()

应该给我类似的结果:

['lo0', 'gif0', 'stf0', 'en0', 'en1', 'fw0']

虽然在我的情况下,我得到的是:

['{E3EE4C5B-38D5-4E38-ABD3-912690B3333B}', '{07ED21E7-D11D-4FAE-BCAB-00748015A895}', '{9F401909-A4A5-4AB6-8617-DFA205446FC6}', '{073251CD-250D-4FAA-889A-560941A96782}', '{6613CF18-67E7-4499-8716-58EEC449E5C6}', '{C1568B39-575B-46B3-8EA7-95A7DBA33DD0}', '{F7F856C1-2EEE-4291-B42C-444C28D7C389}', '{2FD83117-396D-11E7-81F5-806E6F6E6963}']

此时我不知道我正在处理什么以及接下来要选择什么。但随意使用任何结果如下:

netifaces.ifaddresses('{07ED21E7-D11D-4FAE-BCAB-00748015A895}')

还会返回某种加密的'结果:

{-1000: [{'addr': 'fc:f8:ae:15:6f:0e'}], 23: [{'addr': 'fe80::ec58:f02f:37d0:598b%4', 'netmask': 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128', 'broadcast': 'fe80::ec58:f02f:37d0:598b%4'}]}

而不是它在文档中呈现的方式(看起来更加用户友好,不是吗?):

{18: [{'addr': ''}], 2: [{'peer': '127.0.0.1', 'netmask': '255.0.0.0', 'addr': '127.0.0.1'}], 30: [{'peer': '::1', 'netmask': 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff', 'addr': '::1'}, {'peer': '', 'netmask': 'ffff:ffff:ffff:ffff::', 'addr': 'fe80::1%lo0'}]}

有人可以解释一下我发生了什么,以及如何解读'这些结果呢?我最终想要做的是获取我的电脑正在使用的所有网络接口的IP地址。

注意:Python 3.6,Netifaces 0.10.5,Windows 10

1 个答案:

答案 0 :(得分:2)

['lo0', 'gif0', 'stf0', 'en0', 'en1', 'fw0']是unix系统中NIC的名称。在Windows上,您将获得GUID网络接口。 要获得所谓的“友好名称”,您可以查找Windows注册表。查看this answer(在我的python 2.7上,我必须导入_winreg而不是winreg)。