有时候为了确认局域网哪些机器是活动的,需要用到批量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.