Linux测试网络互通性,过滤内容包含Connected,该用什么命令?

已排除使用ping命令,想要用curl命令测试端口,过滤返回内容包含Connected的字段即为网络通的,该如何用怎么的命令过滤?

curl -s 127.0.0.1:80 | grep -v "Connected" 
  1. 使用curl测试127.0.0.1主机上的80端口
  2. 使用grep的-v选项过滤返回内容,排除包含"Connected"的行
  3. 如果返回内容为空,表示80端口网络通,否则不通

-s选项会禁止curl显示进度条和错误信息。
-v选项表示grep使用反向选择,过滤掉匹配的行。所以,依次测试各个需要的网络端口,如果返回为空则网络正常,否则未连通。例如:

# 检查80端口
curl -s 127.0.0.1:80 | grep -v "Connected" 

# 检查22端口 
curl -s 127.0.0.1:22 | grep -v "Connected"

# 检查3306端口
curl -s 127.0.0.1:3306 | grep -v "Connected"

另外,也可以直接检查网络设备或网卡的连接状态,如:

# 检查eth0网卡链接状态 
ip link show eth0 | grep "state UP"

# 检查wlan0无线网卡链接状态
iwconfig wlan0 | grep "Access Point: " 

curl -s telnet://<IP>:<PORT> | grep Connected