是否有一种方法只获取物理以太网接口的名称(即不获取虚拟以太网接口)?
为了给出一些背景信息,我试图让一些SBCs(RPi 3)将它们的IP地址写入DataBase。但是,由于不同SBCs上的物理以太网接口的名称通常不一样,我发现很难获得它们的IP地址。
解决这个问题的一种方法是给所有的SBCs以太网接口一个像eth0这样的通用名称。但这种方法有点笨重。那么,是否还有其他选择来获得物理以太网接口的名称呢?
发布于 2021-11-17 18:55:28
发布于 2019-03-01 17:54:08
这将给出一个物理设备的名称。我认为awk不适用于多种设备。但是,去掉awk,您就会得到所有物理名称的列表。
lshw -class network | grep -A 1 "bus info" | grep name | awk -F': ' '{print $2}'
发布于 2021-10-13 15:06:21
我使用了下面的方法在python中获得它。
#!/usr/bin/env python3
from os import listdir
from os.path import islink, realpath, join
interfaces = [i for i in listdir("/sys/class/net") if islink(join("/sys/class/net", i))]
interfaces = [i for i in interfaces if not realpath(join("/sys/class/net", i)).startswith(("/sys/devices/virtual", "/sys/devices/vif"))]
print("Physical interfaces:", interfaces)在我的案件中打印以下内容:
Physical interfaces: ['enp3s0']请注意,虚拟网络设备并不总是通过路径“/sys/设备/虚拟”找到的。例如,在Xen节点上,也有“设备/vif-1-0/net/vif1.0”等设备,因此我也将它们排除在外。
https://unix.stackexchange.com/questions/432245
复制相似问题