快速检测一个网段内存活的主机

快速检测一个网段内的主机存活状态,有更好的方法(将在常用命令中给出),以下脚本只是给出了用脚本实现的一种途径,效果非常好,并行执行速度快。

#!/bin/bash
for ip in 192.168.3.{100..150};
do
(
ping -c1 $ip &> /dev/null 2>&1
if [ $? == 0 ]; then
echo "$ip is UP"
else
echo "$ip is down"
fi
)&
done
wait

例子给出的是检测的 192.168.3 这个网段,有需要这个网段可以随便换,脚本精华在于
( )&
wait
将循环体放进()内,可以使()内的命令作为子shell来执行,而&可以使之脱离当前线程,在后台继续运行。这个结构可以达到并行执行目的,加速程序运行。想要等到所有的子进程结束后再终止脚本,使用wait命令。注意wait放到最后。
这种思想还可以用到其他的场景中,这就好你自己发散思维了。
转载请注明出处:http://www.xiaomastack.com/2014/06/22/fastcheckhostalive/ 谢谢!

5 Comments

 Add your comment
  1. 如果有些PC开启了防火墙禁ping了,怎么办?

  2. 防火墙放开就行了。

  3. 那还要去检查防火墙?

  4. 少个do
    :)

  5. 马上补上:)

发表评论:

你的电子邮件地址将不会被公开.

× 8 = 40