可以使用各种工具来检测物理电缆承载器状态。但是,最简单的方法是使用基本的本地工具(例如
cat
要么grep
因此避免了任何额外的软件安装需求。让我们开始测试我们的eth0
low-level和Linux distro-agnostic方式中用于物理电缆连接的网络接口:
# 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
可以连接网络电缆,但目前尚无法确定。在我们检查物理电缆连接之前,我们需要将其打开:
# ifconfig eth1 up
在此阶段,我们可以再次检查网卡物理电缆连接:
# cat /sys/class/net/eth1/carrier
0
根据以上输出,我们可以说物理电缆已从网卡的插槽断开。 Let’s let’简要介绍了如何使上述过程自动化以一次检查多个网络接口。以下命令将列出您的Linux系统上所有可用的网络接口:
# for i in $( ls /sys/class/net ); do echo $i; done
eth0
eth1
lo
wlan0
现在,使用bash for loop,我们可以检查是否为所有网络接口同时连接了网络电缆:
# 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测试物理电缆连接
现在,如果您真的想花哨的话,可以使用ethtool
命令。安装:
REDHAT/CENTOS/FEDORA/SUSE
# yum install ethtool
DEBIAN/UBUNTU
# apt-get install ethtool
要检查单个网卡的电缆连接,请使用。举个例子,让我们检查一下eth1
:
# ethtool eth1 | grep Link\ d
Link detected: no
或者我们可以再次使用bash for loop一次检查所有网络接口:
# 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
# ifconfig eth0 down
# ethtool eth0 | grep Link\ d
Link detected: no
# ifconfig eth0 up
# ethtool eth0 | grep Link\ d
Link detected: yes