使用ping网络工具编写Shell脚本程序实现网络连接故障初步排查

在学习ping命令的时候,突发奇想:为何不使用ping命令对网络连接故障进行排查?

具体思路:

1. ping  127.0.0.1 (虚拟网卡地址)以检查主机的TCP/IP协议栈是否正常。

2. ping   [网络号]    以广播的形式向局域网发送数据包,检查主机网卡、modem、路由器(网关)是否正常。

3. nslookup  www.baidu.com  检查DNS服务是否正常。

4. ping  www.58.com  查看能否连网。 

以下是shell代码内容(含解析):

 1 #4 times,time out = 10 s;
 2 ping -c 4 -w 10 127.0.0.1        #-c表示发送数据包次数(4次),-w表示超时时间(10s),127.0.0.1表示虚拟网卡地址(回环地址)
 3 if [ "$?" != 0 ];then            #如果回环测试不成功成功,变量 $s 为0表示上一个指令执行成功。这里注意[]内的三个组件之间要有空格,变量要用""。
 4     echo "ping fail! TCP/IP Stack is not ready!\a\n"          #回环测试失败,说明TCP/IP协议栈有问题   
 5     exit 0                                #退出脚本执行
 6 else
 7     echo "TCP/IP is ok !\a\n"                    #回环测试成功,说明TCP/IP协议栈没问题
 8     read -p "please input your network numbers: " addr      #提示用户输入网络号(路由器的IP),用addr变量接收
 9     ping -c 4 -w 10 -b $addr                     #ping 以广播形式(-b选项)向局域网广播
10     if [ "$?" != "0" ];then                      #广播失败,说明主机网卡、modem或者路由器出现问题
11         echo "ping fail! The Router is not ready!\a\n"      #打印错误信息
12         exit 0                              #退出脚本执行
13     else
14         echo "Router is ok !\a\n"                  #广播成功
15         nslookup www.baidu.com                    #使用nslookup命令测试DNS服务是否正常
16         if [ "$?" != "0" ];then                           
17             echo  "nslookup fail !The DNS Server is not ready !\a\n"    #打印DNS寻址失败,DNS服务异常信息
18             exit 0                                  #退出
19         else
20             echo "The DNS Server is ok !\a\n"                  #DNS服务正常
21             ping -c 4 -w 10 www.58.com                      #最后检查能否上网
22             if [ "$?" != "0" ];then
23                 echo "Other questions ....\a\n"                 #如果这里失败,可能是www.58.com设置了防火墙,ping数据包不回复
24                 exit 0
25             else
26                 echo "the net is ok"                       #网络正常
27                 exit 0                               #退出
28             fi
29         fi
30     fi
31 fi

 以下是脚本运行结果:

使用ping网络工具编写Shell脚本程序实现网络连接故障初步排查_第1张图片

使用ping网络工具编写Shell脚本程序实现网络连接故障初步排查_第2张图片

使用ping网络工具编写Shell脚本程序实现网络连接故障初步排查_第3张图片

使用ping网络工具编写Shell脚本程序实现网络连接故障初步排查_第4张图片

当我断开网络连接时,显示DNS服务异常:

使用ping网络工具编写Shell脚本程序实现网络连接故障初步排查_第5张图片

 

 

你可能感兴趣的:(使用ping网络工具编写Shell脚本程序实现网络连接故障初步排查)