/sys/class/net/ を使用した物理ネットワークデバイスの識別

/sys/class/net/ を使用した物理ネットワークデバイスの識別

物理ネットワークデバイスと仮想ネットワークデバイスを区別する方法があるかどうか疑問に思います。ip a選択の余地がない。だから私はそれに取り組んでいます/sys/class/net/<iface>。 2つの属性とタイプがありますが、addr_assign_typeそのタイプは仮想かどうかを示すことができるか、決定できませんEthernetloopback

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
            == ============================

関連情報