マシンの状態をpingで確認するシェルスクリプト

マシンが途中でフリーズしていたりするのをチェックするアプリケーションとして、Nagiosなどがありますが、もっと簡単に外部監視をしたいということで、pingを投げてチェックする簡単なシェルスクリプトを書きました。

hosts=(
hoge1
hoge2
hoge3
)
for machine in ${hosts[@]}; do
  echo -n $machine
  r=`ping -c 1 ${machine} | grep -i "Unreachable" | sed "s/\r//"`
  if [ -n "$r" ]; then
    echo " is stop"
  else
    echo " is running"
  fi
done

pingを投げて、grepでUnreachableが含まれているかをチェックして、sedはif文でエラーを起こさないために改行を削除しています。
ただ、なぜか動いてないやつもrunningと表示されたり。。。

停電でシャットダウンしなければならない時に、ユーザーがシャットダウン忘れて放置しているマシンを発見するために作りました。
起動しているマシンを探すならそれだといいけど、停止しているマシンを発見するのには意味が無いコードになってしまった…。