通过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
如果以上输出全部为no的话,则可能主机上通过iptables禁用了ping。
脚本2,
复制代码代码示例:
#!/bin/sh
# Ping网段所有IP 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 最后,介绍下用于ping多个域名的一段shell脚本。
通过ping命令,找出域名与IP地址的对应关系。
复制代码代码示例:
#!/bin/sh
# filename ping.sh for a in `cat list`;do ping -c 1 $a; done
运行脚本:
代码说明:
附,ping参考。
-d 使用Socket的SO_DEBUG功能。
(责任编辑:IT)-c<完成次数> 设置完成要求回应的次数。 -f 极限检测。 -i<间隔秒数> 指定收发信息的间隔时间。 -I<网络界面> 使用指定的网络界面送出数据包。 -l<前置载入> 设置在送出要求信息之前,先行发出的数据包。 -n 只输出数值。 -p<范本样式> 设置填满数据包的范本样式。 -q 不显示指令执行过程,开头和结尾的相关信息除外。 -r 忽略普通的Routing Table,直接将数据包送到远端主机上。 -R 记录路由过程。 -s<数据包大小> 设置数据包的大小。 -t<存活数值> 设置存活数值TTL的大小。 -v 详细显示指令的执行过程。 |