シェルスクリプト

ping 生死確認」というキーワードでアクセスがあった。
どんな表示がされているのか気になったので、そのキーワードでググって見た。
…なんか、僕が考えているのと違う方法で生死確認している人がいる。
ping を実行して、そのメッセージを解析していたけど…
ping を実行して、その戻り値から判定したほうが確実な気がする。


たとえば、
# ping -c 1 192.168.1.234
# echo $?


0 正常
1 不通
2 引数異常

となる。
少なくとも、RedHat Linux での戻り値は確認している。


実験用シェルスクリプトにすると…


#!/bin/sh

Node="192.168.1.1 1.1.1.1 123.456.789.012"
OPT="-c 1"

for List in $Node
do
echo "exec - ping $OPT $List"
ping $OPT $List > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo "ping OK ($List)"
else
echo "ping NG ($List)"
fi
done

…と、基本はこんな感じ。
ひとつめは、家庭の環境なら1台はあるはず。
ふたつめは、たぶん、ない。
みっつめは、絶対無い。


上記のシェルスクリプトには、課題が残っている。
ネットワークが重くて反応が返らなかった場合の処理とか、実行時間や結果などを外部からチェックする方法とか。
環境依存があるかもしれない。
さらに、ping の結果表示内容を変えたに過ぎない。


メールで飛ばすなら、こんな実装かな?


nodecheck.sh
文字コードEUCなので注意。


一応、雛形としても使えるように作ってみた。
改善点が大量なのでツッコミは厳禁w


応用としては、出力先をhtmlファイルにして、ヒアドキュメントなどでhtmlのヘッダやボディ、タグを追記、ブラウザから参照できるようにするとか。
ブラウザでのサーバ監視を行うソフト、BigBrother は、そんな感じでhtmlファイルを作成しているし。
要望があれば、そんなバージョンも作成してみようとも思う。