使用bash命令

使用与linux发行版无关的命令

# cat /sys/class/net/eth0/carrier 
1

上述1表示插接

cat /sys/class/net/eth1/carrier 
cat: /sys/class/net/eth1/carrier: Invalid argument

上面表示eth1是down的状态,可以用下面命令确认

cat /sys/class/net/eth1/operstate 
down

此时无法判断网线是否插接,需要先up下

ip link set dev eth1 up

然后再查看

cat /sys/class/net/eth1/carrier 
0

此时0表示没插接网线

上面过成也可以使用下面连续命令访问所有的网口,下面命令会列出所有的网卡

# for i in $( ls /sys/class/net ); do echo $i; done
eth0
eth1
lo
wlan0

使用ethtool

以eth1为例

#  ethtool eth1 | grep Link\ d
    Link detected: no

使用循环一次性检测所有网口

# 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

上面代码检测不到是down的网口,可以使用下面

# ethtool eth0 | grep Link\ d
        Link detected: yes
# ip link set dev eth0 down
# ethtool eth0 | grep Link\ d
        Link detected: no