python netifaces - 如何获取当前使用的网络接口

python netifaces - How to get currently used network interface

我使用 python 中的 netifaces 获取本地 ip 地址,但如何选择当前使用的(系统)网络接口?请帮帮我。谢谢!

目前还不完全清楚你在问什么,因为系统不一定有单一的 "used" 界面。一个系统可能有多个带地址的接口,并且可能使用所有接口来联系不同的系统。

系统通常(但不总是!)有一个 "default route" 输出接口,通常用于联系系统未直接连接的主机。如果这是你想要的,你可以使用 Python netifaces 模块,像这样:

>>> import netifaces
>>> def_gw_device = netifaces.gateways()['default'][netifaces.AF_INET][1]

这将为您提供默认 IPv4 路由所使用的设备的名称。您可以像这样获取该接口的 MAC 地址:

>>> macaddr = netifaces.ifaddresses('enp0s25')[netifaces.AF_LINK][0]['addr']

您当然可以通过解析 ip 命令的输出来获得相同的信息,但是使用 netifaces 模块要干净得多。