教程集 www.jiaochengji.com
教程集 >  脚本编程  >  shell  >  正文 使用ping命令检测整个网段IP的网络状态的shell脚本(图文)

使用ping命令检测整个网段IP的网络状态的shell脚本(图文)

发布时间:2014-10-20   编辑:jiaochengji.com
本文介绍下,使用linux下的ping命令,检测整个网段IP的在线状态的一段shell脚本,有需要的朋友参考下。

通过ping网段中的IP地址,根据返回的状态信息,判断主机的网络状态。
下面分享两个可以实现这个功能的shell脚本。

脚本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

笔者在自己的网络中测试的结果如下:
ping检测网络状态

如果以上输出全部为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
# edit by www.jiaochengji.com
for a in `cat list`;do
ping -c 1 $a;
done

运行脚本:
#./test.sh

代码说明:
1,在运行脚本之前,创建list文件,里面写入要检测的域名,一行一个。
形如:
a.jiaochengji.com
b.jiaochengji.com
c.jiaochengji.com
...等等。
2,-c 是ping的参数。-c 1 表示ping完成一次。

附,ping参考。
参  数:
 

-d 使用Socket的SO_DEBUG功能。
-c<完成次数> 设置完成要求回应的次数。
-f 极限检测。
-i<间隔秒数> 指定收发信息的间隔时间。
-I<网络界面> 使用指定的网络界面送出数据包。
-l<前置载入> 设置在送出要求信息之前,先行发出的数据包。
-n 只输出数值。
-p<范本样式> 设置填满数据包的范本样式。
-q 不显示指令执行过程,开头和结尾的相关信息除外。
-r 忽略普通的Routing Table,直接将数据包送到远端主机上。
-R 记录路由过程。
-s<数据包大小> 设置数据包的大小。
-t<存活数值> 设置存活数值TTL的大小。
-v 详细显示指令的执行过程。

您可能感兴趣的文章:
使用ping命令检测整个网段IP的网络状态的shell脚本(图文)
ping检测告警函数的shell脚本
定时自动ping主机的shell脚本(图文)
分享几个ping主机是否存活的shell脚本(图文)
linux下自动ping命令检测IP地址的shell脚本(图文)
ping所有主机的shell脚本(图文)
一个检测网络连通性的shell脚本(图文)
python如何检测IP通不通
windows常用网络命令批处理脚本
检测linux网络服务是否开启的shell脚本(图文)

[关闭]
~ ~