マシンが途中でフリーズしていたりするのをチェックするアプリケーションとして、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と表示されたり。。。
停電でシャットダウンしなければならない時に、ユーザーがシャットダウン忘れて放置しているマシンを発見するために作りました。
起動しているマシンを探すならそれだといいけど、停止しているマシンを発見するのには意味が無いコードになってしまった…。