要实现Ping一个网段的所有IP,并检测网络连接状态是否正常,很多方法都可以实现,下面简单介绍几种,如下:
脚本1
#!/bin/sh # Ping网段所有IP # 2012/02/05 ip=1 #通过修改初值 while [ $ip != "254]; do #yes正常,no主机不存在或不正常 ping 192.168.0.$ip -c 2 | grep -q "ttl=" && echo "192.168.0.$ip yes" || echo "192.168.0.$ip no" ip=`expr "$ip" "+" "1"` done
输出结果:
192.168.0.1 yes
192.168.0.2 no
192.168.0.3 no
192.168.0.4 no
192.168.0.5 yes
192.168.0.6 no
192.168.0.7 yes
...
脚本2
#!/bin/sh # Ping网段所有IP # 2012/02/05 ip="192.168.0." for i in `seq 1 254` do ping -c 2 $ip$i | grep -q 'ttl=' && echo "$ip$i yes"|| echo "$ip$i no" #yes正常,no主机不存在或不正常 done
输出结果:
192.168.0.1 yes
192.168.0.2 no
192.168.0.3 no
192.168.0.4 no
192.168.0.5 yes
192.168.0.6 no
192.168.0.7 yes
①先用一个文件统计ip地址(当然这个文件也是用cat,grep,awk一系列命令来统计出来的),保证每一行是一个ip地址。
②编写shell脚本来统计所有ping不通的IP
#!/bin/bash test -e result || touch result while read ipaddr do ping $ipaddr -c 2 if [ $? -eq "0" ] then echo ping success else echo $ipaddr>>result fi done < ystest2
脚本中使用了两个文件:
ystest2:即保存了所有IP地址的输入文件
result:即保存了所有ping不通的IP地址的输出文件