我想知道是否有办法区分物理和虚拟网络设备。ip a
没有选择。所以我正在努力/sys/class/net/<iface>
。有 2 个属性addr_assign_type
和类型,但类型只能说明Ethernet
或loopback
无法判断其是否为虚拟。
我想知道addr_assign_type
我们有什么不同吗?
根据我的观察,/sys/class/net/<iface>/{eth|loopback}
给出0
和/sys/class/net/<iface>/{virtualdevice}
给出1 or 3
。
我可以从中推断出什么吗?
答案1
当您运行时ethtool -i <network interface>
,物理接口应该有一条bus-info:
线来标识适当的硬件设备。对于虚拟设备,bus-info:
将为空。
对于/sys
基于 - 的识别,你可以这样做:
if readlink /sys/class/net/$IFACE | grep -q /virtual/
then
echo "$IFACE is virtual"
else
echo "$IFACE is physical"
fi
答案2
每kernel.org 上的 sysfs-class-net 页面:
What: /sys/class/net/<iface>/addr_assign_type
Date: July 2010
KernelVersion: 3.2
Contact: [email protected]
Description:
Indicates the address assignment type. Possible values are:
== ============================
0 permanent address
1 randomly generated
2 stolen from another device
3 set (by) dev_set_mac_address
== ============================