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

最佳答案

仍然不清楚您要问的是什么,因为系统不一定具有单个“已用”界面。一个系统可能具有带有地址的多个接口(interface),并且可能正在使用它们中的所有接口(interface)来联系不同的系统。

系统通常(但并非总是如此!)通过一个接口(interface)具有“默认路由”,该接口(interface)通常用于联系未与系统直接连接的主机。如果这是您想要的,则可以使用Python的netifaces模块,如下所示:

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

这将为您提供默认IPv4路由所使用的设备的名称。您可以这样获取该接口(interface)的MAC地址:
>>> macaddr = netifaces.ifaddresses('enp0s25')[netifaces.AF_LINK][0]['addr']

当然,您可以通过分析ip命令的输出来获得相同的信息,但是使用netifaces模块更加简洁。

关于python - python netifaces-如何获取当前使用的网络接口(interface),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30698521/

10-15 06:44