Wednesday, March 13, 2013

批量ping脚本

有时候为了确认局域网哪些机器是活动的,需要用到批量ping,下面是脚本:

#!/bin/bash
ip=$1
for i in `seq 1 255`
do
# set ping timeout to 1 sec
  ping $ip.$i -c1  |grep "64 bytes from"
 done


保存,命名为rangeping, 放到/usr/bin,然后
chmod +x /usr/bin/rangeping

这样只需要运行:
rangeping 192.168.1

就能把192.168.1.1~192.168.1.255 ping个遍历,并且只输出活动的设备,每行一个
输出结果如下:

64 bytes from 192.168.1.1: icmp_seq=0 ttl=64 time=15.533 ms
64 bytes from 192.168.1.4: icmp_seq=0 ttl=128 time=13.152 ms
64 bytes from 192.168.1.5: icmp_seq=0 ttl=128 time=14.160 ms
...

如果只想输出ip地址,那么:

rangeping 192.168.1 |  awk '{print $4}'

输出就是:

192.168.1.1
192.168.1.4
192.168.1.5

如需要将这些输出保存为文本,运行下面即可:

rangeping 192.168.1 >> report.txt


END.