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

时间:2015-06-07 21:15:22

标签: python linux ip-address

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

1 个答案:

答案 0 :(得分:10)

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

系统通常(但不总是!)有一个"默认路由"一个接口,通常用于联系系统未直接连接的主机。如果这是你想要的,你可以使用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模块更清晰。