如何使用Bash命令和Ethtool检测物理网络电缆连接
检测是否连接了物理网线
测试“eth0”网络接口的物理电缆连接:
# cat /sys/class/net/eth0/carrier 1
数字1表示网线已经连接到网卡的插槽。
测试第二个网络接口eth1
:
# cat /sys/class/net/eth1/carrier cat: /sys/class/net/eth1/carrier: Invalid argument
表示“eth1 网络接口处于断电状态”
可以通过以下Linux命令确认:
# cat /sys/class/net/eth1/operstate down
无法确定是否连接了网线,将网口拉起:
# ip link set dev eth1 up
我们可以再次检查网卡物理电缆连接:
# cat /sys/class/net/eth1/carrier 0
说明网口是没有插网线的。
下面的命令将列出Linux系统上的所有可用网络接口:
# for i in $( ls /sys/class/net ); do echo $i; done eth0 eth1 lo wlan0
使用Bash for循环,我们现在可以检查所有网口是否插了网线:
# for i in $( ls /sys/class/net ); do echo -n $i: ; cat /sys/class/net/$i/carrier; done eth0:1 eth1:0 lo:1 wlan0:cat: /sys/class/net/wlan0/carrier: Invalid argument
使用Ethtool检查是否连接了网线
在Ubuntu,Debian和Linux Mint上安装Ethtool:
$sudo apt install ethtool
在CentOS,Fedora,Almalinux和Red Hat中安装Ethtool:
$sudo dnf install ethtool
在Arch Linux和Manjaro上安装Ethtool:
$sudo pacman -S ethtool
检查eth1网口是否插了网线
# ethtool eth1 | grep Link\ d Link detected: no
使用Bash for循环检查所有的网口:
# for i in $( ls /sys/class/net ); do echo -n $i; ethtool $i | grep Link\ d; done eth0 Link detected: yes eth1 Link detected: no lo Link detected: yes wlan0 Link detected: no
上述ETHTOOL输出的唯一问题是如果网络接口关闭,它不会检测到连接的电缆。
考虑以下示例:
# ethtool eth0 | grep Link\ d Link detected: yes # ip link set dev eth0 down # ethtool eth0 | grep Link\ d Link detected: no
日期:2020-07-07 20:56:15 来源:oir作者:oir