可用方法:

 1、ip addr  |  grep  LOWER_UP

thtool eth0 | grep detect 

mii-tool  -w  ethx   这三个命令来查看网线是否插着,并且物理状态是否激活?

   问题由来:

所有基站都无法连接核心网设备。,接显示器发现arp -n,ip neigh list后,发现服务器上没有任何基站的mac地址,ifconfig  eth0发现链路是up态。让直连设备,反馈也ping不通,抓包发现arp请求消息没有回,查看网卡eth0的收发都是0,判断网卡故障,建议让dell服务器厂家进行检测,反馈检测网卡正常。判断为更换系统故障,让用户备份数据,准备重装centos系统。等服务人员到达现场发现,客户把网线查到服务器的idrac接口上,而不是eth0口上,改接回来后发现业务正常。

当时ifconfig看eth0是up态,为什么会没有没发现插线呢?显然受了这个命令的误导。

在公司模拟,发现ifconfig无论是否插网线,均显示up态。但断线后仅仅少了running的标志位。

发现用ifconfig,ip addr,ethtool,mii-tool才能检测线路的物理状态。

对比验证:

分别插上网线,拔掉网线用几个命令进行进行对比测试。

插上网线,并点亮网卡灯,通过双工和速率协商后的几个命令显示如下:

Thu Aug  1 16:31:05 CST 2019  开始测试链路物理状态
 ifconfig eth0
 eth0      Link encap:Ethernet  HWaddr C8:1F:66:E4:1A:0A 
           inet6 addr: fe80::ca1f:66ff:fee4:1a0a/64 Scope:Link
           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1(网线插上并且点亮状态灯是有running显示)
           RX packets:22464301 errors:0 dropped:0 overruns:0 frame:0
           TX packets:147296815 errors:0 dropped:0 overruns:0 carrier:0
           collisions:0 txqueuelen:1000
           RX bytes:2475109636 (2.3 GiB)  TX bytes:18645815710 (17.3 GiB)
           Interrupt:35
  ip addr | grep stat    出现LOWER_UP,stat变成up态。1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
 3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
 4: eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
 5: eth3: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
ethtool eth0 | grep detect
     Link detected: yes   连接检测为yes
Thu Aug  1 16:31:05 CST 2019  开始拔出网线进行几个命令的测试。
  NOW  pull  out the wire plug  (拔出网线插头)现在拔掉网线执行几个命令显示:
  ifconfig eth0  (发现ifconfig不能测试链路状态,都是up态)
 eth0      Link encap:Ethernet  HWaddr C8:1F:66:E4:1A:0A 
           inet6 addr: fe80::ca1f:66ff:fee4:1a0a/64 Scope:Link
           UP BROADCAST MULTICAST  MTU:1500  Metric:1(拔掉网线后没有running的显示)
           RX packets:22464315 errors:0 dropped:0 overruns:0 frame:0
           TX packets:147297002 errors:0 dropped:0 overruns:0 carrier:0
           collisions:0 txqueuelen:1000
           RX bytes:2475110672 (2.3 GiB)  TX bytes:18645839744 (17.3 GiB)
           Interrupt:35
  ip addr | grep stat (可以看到链路的物理状态,可以看到状态down,有没有载波的NO-CARRIER的显示,LOWER_UP消失,stat变成down)
 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
 2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN qlen 1000
 3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
 4: eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
 5: eth3: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
ethtool eth0 | grep detect   (检测到没有载波)
     Link detected: no   连接检测为no
  NOW  pull  on the wire plug
mii-tool  -w  eth0   (跟踪物理链路并且激活状态灯,可以看到连接是否在线)
 16:31:12 eth0: no link  (发现没有连接)
 16:31:20 eth0: negotiated 100baseTx-FD, link ok(发现)

测试时可以用ethtool  -p eth0来确定测试网卡是哪一个,命令执行时网卡的双灯会一秒一闪。

 ctrl+c来中断这个命令的执行。

结论:

     ifconfig ethx不可靠,可用ip addr,ethtool  ,mil-tool命令来确认。

     也可以用route -n显示路由来根据直连路由的是否生成来确定,因为接口down,对应配置的ip的直连路由也就失效了,路由就消失,查询不到。