Linuxを使って、特定の端末へのpingを監視しようと思っています。
(ツール)ネットワーク遅延グラフツールSmokePingを入れてみたで紹介したsmokepingでもいいんですが、あれはどちらかと言うと遅延状態を全体的に見るような感じになります。
細かい情報を取ろうとすると、やはりpingで結果をとりたいものです。
指定間隔で監視対象端末にpingを実行して、その結果を日時付けてログに残すという仕様にしました。 当初cronで考えたんですが、cronだと秒数単位での実行が難しいので、シェルスクリプトを無限ループサせて実行させることとした。
参考にさせてもらったのは、あんみのの備忘録:pingコマンドの結果をログファイルに収集するです。
コンソール上で以下のシェルスクリプトを実行し、止めるときはCtrl+Cで強制終了という形になります。
監視対象端末は3台とします。
#!/bin/sh #autoping.sh #監視対象端末のIPを設定 IP1='監視対象IP' IP2='監視対象IP' IP3='監視対象IP' logfile='ping.log' while : do #5秒間隔でping実行 sleep 5 #日時取得 daytime="`date +"%b %d %H:%M:%S"` " if ping -c 1 $IP1 > /dev/null; then #ping応答があった場合 echo "$daytime \"$IP1\" alive" >> $logfile else #ping応答なかった場合 echo "$daytime PING is NOT UNREACHABLE. \"$IP1\" may NOT BE AVILE." >> $logfile fi if ping -c 1 $IP2 > /dev/null; then echo "$daytime \"$IP2\" alive" >> $logfile else echo "$daytime PING is NOT UNREACHABLE. \"$IP2\" may NOT BE AVILE." >> $logfile fi if ping -c 1 $IP3 > /dev/null; then echo "$daytime \"$IP3\" alive" >> $logfile else echo "$daytime PING is NOT UNREACHABLE. \"$IP3\" may NOT BE AVILE." >> $logfile fi done