【小ネタ】複数のホストにpingを打ってその結果をわかりやすく出力する


タイトルのまんま、複数のホストにpingを打ってその結果をわかりやすく出力してみたくなったので、
一行大好きな(っ´∀`)っ ゃーは、pingを打つ対象をfor文でグルグルまわし、pingが通ったら「生きてるよー」
死んでたら「死んでるよー」と出力するようにしました。
以下の例は、192.168.0.1から192.168.0.8まで、それぞれに1発ずつ1バイトのパケットを投げて
pingによる死活監視をし、終了ステータスから判断して生きてたら「(時刻)(TAB)~~~ is alive」、
死んでたら「(時刻)(TAB)~~~ is dead」という返事をさせます。
$ for i in 192.168.0.{1..8}; do ping  -c 1 -s 1 $i | grep "bytes from" > /dev/null ; if [ 0 -eq `echo $?` ]; then echo `date`$'t'$i' is alive'; else echo `date`$'t'$i' is dead' ; fi; done
出力結果(例)は以下の通りです。
Fri May 2 17:21:12 JST 2008     192.168.0.1 is alive
Fri May 2 17:21:15 JST 2008     192.168.0.2 is dead
Fri May 2 17:21:15 JST 2008     192.168.0.3 is alive
Fri May 2 17:21:18 JST 2008     192.168.0.4 is dead
Fri May 2 17:21:21 JST 2008     192.168.0.5 is dead
Fri May 2 17:21:24 JST 2008     192.168.0.6 is dead
Fri May 2 17:21:27 JST 2008     192.168.0.7 is dead
Fri May 2 17:21:30 JST 2008     192.168.0.8 is dead
コマンドの途中に、pingの出力を/dev/nullに捨てていますが、もし「 > /dev/null」がないと、以下のようになります。
$ for i in 192.168.0.{1..8}; do ping  -c 1 -s 1 $i | grep "bytes from" ; if [ 0 -eq `echo $?` ]; then echo `date`$'t'$i' is alive'; else echo `date`$'t'$i' is dead' ; fi; done
9 bytes from 192.168.0.1: icmp_seq=0 ttl=255
Fri May 2 17:24:57 JST 2008     192.168.0.1 is alive
Fri May 2 17:25:00 JST 2008     192.168.0.2 is dead
9 bytes from 192.168.0.3: icmp_seq=0 ttl=64
Fri May 2 17:25:00 JST 2008     192.168.0.3 is alive
Fri May 2 17:25:03 JST 2008     192.168.0.4 is dead
Fri May 2 17:25:06 JST 2008     192.168.0.5 is dead
Fri May 2 17:25:09 JST 2008     192.168.0.6 is dead
Fri May 2 17:25:12 JST 2008     192.168.0.7 is dead
Fri May 2 17:25:15 JST 2008     192.168.0.8 is dead
ちょっと見づらいですね。