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

Pep*_*nCZ 2 python linux ip-address

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

lar*_*sks 11

你问的是什么仍然不完全清楚,因为系统不一定有单独的"使用"界面.系统可以具有多个具有地址的接口,并且可以使用它们全部来联系不同的系统.

系统通常(但不总是!)具有一个接口的"默认路由",该接口通常用于联系系统未直接连接的主机.如果这是你想要的,你可以使用Python netifaces模块,如下所示:

>>> import netifaces
>>> def_gw_device = netifaces.gateways()['default'][netifaces.AF_INET][1]
Run Code Online (Sandbox Code Playgroud)

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

>>> macaddr = netifaces.ifaddresses('enp0s25')[netifaces.AF_LINK][0]['addr']
Run Code Online (Sandbox Code Playgroud)

您当然可以通过解析ip命令的输出来获取相同的信息,但使用该netifaces模块要清晰得多.