【发布时间】:2019-07-18 11:53:15
【问题描述】:
我想检测连接到 DHCP 并从中获取 IP 的可用网络接口。我正在使用以下脚本来生成可用适配器的列表。
import psutil
addrs = psutil.net_if_addrs()
all_network_interfaces = addrs.keys()
available_networks = []
for value in all_network_interfaces:
if addrs[value][1][1].startswith("169.254"):
continue
else:
available_networks.append(value)
print(available_networks)
以 169.254 开头的是使用自动专用 IP 寻址 (APIPA) 的适配器,因此我想将它们过滤掉。当我使用以太网电缆连接时,此脚本会显示相关的适配器,如果我还在以太网仍然连接时通过 WiFi 连接,它会将 WiFi 添加到列表中。但是,从 WiFi 断开连接后,WiFi 适配器仍然持有该 IP,并且仍然存在于列表中。我认为这是我的适配器卡的问题(可能是功能)。绕过此问题并仅获取具有 DHCP 连接的适配器的最佳方法是什么?
【问题讨论】:
-
你能检测到是否连接了适配器吗?然后过滤掉那些因为 APIPA 而被过滤掉的那些断开连接的那些
-
感谢您的回答。来自 psutil 的文档:psutil.readthedocs.io/en/latest/#psutil.net_if_addrs 它没有提供这样的信息。很高兴听到您是否知道在 python 中执行此操作的方法。 ^^ @abdusco
标签: python networking psutil