如何在 Linux 中检查以太网端口的物理状态?

如何在 Linux 中检查以太网端口的物理状态?

我想检查指定的 ethX 是否处于物理开启或关闭状态。如何使用命令行执行此操作?

答案1

$ ethtool <eth?>

例如:

$ ethtool eth0

提供:

Settings for eth0:
        Supported ports: [ TP ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
        Supports auto-negotiation: Yes
        Advertised link modes:  10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
        Advertised pause frame use: No
        Advertised auto-negotiation: Yes
        Speed: 1000Mb/s
        Duplex: Full
        Port: Twisted Pair
        PHYAD: 1
        Transceiver: internal
        Auto-negotiation: on
        MDI-X: on
        Supports Wake-on: pumbg
        Wake-on: g
        Current message level: 0x00000001 (1)
        Link detected: yes

答案2

检查/sys/class/net/eth0/operstate此目录中的其他文件。

据我所知,这是 Linux 2.6+ 所特有的,但它为内核驱动程序提供了一个干净的接口。

文件系统这一部分的完整文档sys可以在这里找到:

https://www.kernel.org/doc/Documentation/ABI/testing/sysfs-class-net

答案3

ethtool [interface]

最后一行显示你想要的内容:

# ethtool eth0
eth0 的设置:
        支持端口:[ TP ]
        支持的链接模式:10baseT/Half 10baseT/Full
                                100baseT/半 100baseT/全
                                1000baseT/全
        支持自动协商:是
        公布的链接模式:10baseT/Half 10baseT/Full
                                100baseT/半 100baseT/全
                                1000baseT/全
        公布的自动协商:是
        速度:1000Mb/s
        双工:全双工
        端口:双绞线
        物理强度: 0
        收发器:内部
        自动协商:开启
        支持唤醒:g
        唤醒:d
        当前消息级别:0x00000037 (55)
        检测到链接:是

答案4

dmesg | grep eth

你应该看到所有的状态变化

相关内容