如何在Python中获取网络接口卡名称?

2024-06-10 14:42:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我对python编程完全不熟悉,所以请耐心等待。

有没有办法知道机器里网卡的名字,等等,eth0,lo?如果是,你怎么做?

我已经研究过了,但到目前为止我只找到了获取IP地址和MAC地址的代码,比如

import socket
socket.gethostbyname(socket.gethostname())

关于这些守则的建议将非常感谢。谢谢!


Tags: 代码import机器lomac地址编程socket
3条回答

我认为标准库中没有任何东西可以查询这些名称。

如果在Linux系统上需要这些名称,我将解析ifconfig的输出或/proc/net/dev的内容。看看这个blog entry类似的问题。

在Linux上,您只需通过以下方式在/sys/class/net/中列出链接

os.listdir('/sys/class/net/')

不确定这是否适用于所有分发版。

我用过的一个很棒的Python库是psutil。它可以在Linux、Windows和OSX等平台上使用,并且从Python2.6到3.6都支持它。

Psutil提供net_if_addrs()函数,该函数返回一个字典,其中键是NIC名称,值是分配给NIC的每个地址的命名元组列表,其中包括地址系列、NIC地址、网络掩码、广播地址和目标地址。

一个使用net_if_addrs()的简单示例,它将打印NIC名称的Python列表:

import psutil

addrs = psutil.net_if_addrs()
print(addrs.keys())

相关问题 更多 >