我在python中使用netifaces来获取本地IP地址,但是如何选择当前使用的(由系统)网络接口?请帮帮我。谢谢!
答案 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
模块更清晰。