用Python查找我连接的所有网络适配器的脚本
我有一台笔记本电脑,它通过一个或多个网络适配器连接到我所在组织的网络。我不太确定该从哪里开始,或者应该在哪里寻找原生的Python方法或其他资源。
我想知道如何用Python发现我连接的所有网络适配器或网络接口卡(NIC)。我希望尽量不使用第三方库,但如果必须使用也没关系。
最终,我想写一个工具,能够持续监测每个网络的连接状态和连接质量。不过,我首先得弄清楚我连接了哪些网络适配器,以及有多少个。
2 个回答
0
我最近需要类似的东西,于是想出了一个用 psutil 实现的解决方案:
>>> import psutil
>>> psutil.net_if_addrs().keys()
dict_keys(['lo', 'eth0', 'docker0'])
我并不是说这个方法比现在大家接受的答案更好、更快、更合适或者更轻量。我只是觉得记录其他解决方案也挺好的。
1
我一直觉得,从Python中获取机器网络接口的地址很麻烦,没什么简单的方法。 [...]
这个包就是为了帮助解决这个问题。
这里有一些相关的例子:
>>> netifaces.interfaces()
['lo0', 'gif0', 'stf0', 'en0', 'en1', 'fw0']
>>> netifaces.ifaddresses('lo0')
{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'}]}
你可以通过 pip install netifaces
来安装它。