我有一台笔记本电脑,使用一个或多个网络适配器连接到我组织的网络。我不知道如何开始这个或者我应该在哪里寻找本地 python 方法或其他资源。
我想知道如何使用 python 发现我连接到的所有网络适配器或网卡。我想尝试在没有第三方库的情况下完成此任务,但如果必须的话也可以。
我最终希望能够编写一个工具来持续监控每个网络的连接状态和连接质量。不过,我首先必须找出我连接的是哪个网络适配器以及有多少个网络适配器。
netifaces
将是一个好的开始。来自文档:
没有简单的方法可以从 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
获取它。
我最近需要类似的东西,并使用 psutil 提出了以下解决方案:
>>> import psutil
>>> psutil.net_if_addrs().keys()
dict_keys(['lo', 'eth0', 'docker0'])
我并不是说这比当前接受的答案更好、更快、更合适或更轻量。我只是认为记录该问题的其他解决方案会很好。