通过ping命令扫描网络内存活的主机,正常的思路是利用for循环一个一个去ping,然后判断是否平通。一个为c类网段最少有254台机器,如果一个ping需要1秒,则最少需要254秒。这样的速度显然是不能接受的。
有一个解决的办法是在循环中把每个ping的动作扔进后台执行,这样一来254台机器在1-3秒之内就全部扫描完毕。
1.脚本--扫描网络内存活主机
#!/bin/bash
# -------------+--------------------
# * Filename : saomiao.sh
# * Revision : 2.0
# * Date : 2017-09-07
# * Author : Aubin
# * Description :
# -------------+---------------------
# www.shuaiguoxia.com
#
net=172.18.252
for i in {1..254};do
{
if ping -c1 -w1 $net.$i &> /dev/null ;then
echo "$net.$i [ up ]"
fi
}&
done
wait
2.运行测试
在{......}&中的代码将扔进后台执行,正是因为有了后台机制,才能使254ping命令并行执行。