• ベストアンサー

サーバのチェックのshellscript

Linuxで稼働しているサーバのデーモン(dns, httpd, sendmail等)が正常に作動しているかどうか判定して、自分の携帯に作動していないことが判明したらメールを送付するようなshelscripの例などがどこかURLに公開されておりますでしょうか。前回pingを用いてサーバの稼働を確認する方法を教えていただきましたが、使用している安心感がかなりあります。各ソフトの稼働状態が自動で携帯に入るので在ればこれは究極の監視ツールになるのでは無いかと思います。Unix, Shellscript超初心者です。

質問者が選んだベストアンサー

  • ベストアンサー
noname#4147
noname#4147
回答No.3

お久しぶりです。yostyです。 前回は低レベルなスクリプトでお手数をおかけしてしまいましたが、 こりずに発言させていただきます。 今回のスクリプトは、前回と違い、自分自身のマシンで実行します。 また、一度メールを送っても終了せず、監視を続けます。 以下では30分ごとを指定しています。sleepの後ろを書き換えてください。 /etc/rc.d/init.d/ に起動ファイルがあるものしか対応出来ません。 for target in の後ろに、必要な物を/etc/rc.d/init.d/ から選んで書いてください。 プロセスが死んでいる場合は、メールだけでなく、自力で起動もさせるようにしました。 /etc/rc.d/init.d/ 以外のものもとなると、 ps ax | grep $target を使う方法がありますが、syslog等、自分自身ではないプロセスに関連して文字列が出てくることもありますので、こちらのやり方を選びました。 ________________________________________________________________ #!/bin/sh while [ 0 ] do for target in named httpd syslog crond xinetd sshd do if /etc/rc.d/init.d/$target status &> /dev/null then : else /etc/rc.d/init.d/$target start &> /dev/null echo $target was dead | mail user@address.com fi done sleep 1800 done exit 1 ________________________________________________________________ なお、このスクリプトだけでは、プロセスに問題がないのか、マシン自体が落ちてしまって、スクリプトが動いていないのかの区別が付きませんので、前回のpingのスクリプトと会わせてお使い下さい。 プロセスが動いていることと、正常に動いていることとは同じではないので、あくまで補助的なものと考えてください。

cincinnati
質問者

お礼

貴重なお時間を頂きまして、前回に引き続いて御世話になります。ご記載頂きましたように書きまして、ソフトを停止したところ携帯に停止している旨のメールが入りました。このようなShellscriptが書けるようになるにはどんな本を読んで、どのように勉強すれば良いのでしょうか。ご教授頂ければ幸いです。本当に有り難うございました。これからはパソコンを持ち歩いて時々アクセスするなどと言う作業から多少は解放されそうです。

その他の回答 (2)

  • BigBoobs
  • ベストアンサー率36% (16/44)
回答No.2

でもさ、PINGじゃ意味ないと思うんだけど。だってNICが生きてるかどうかを確認してもDeaomは見えないジャン。なら、netstatとか自分にポートスキャンをかけて確認するほうがいいんじゃない? でもね、SMTPが死んでたら、DNS、HTTPDが生きててもメールで報告はできないから、違うドメインのSMTPじゃないとだめじゃない? ちょっと冷たいかもしれないけど、これは既存技術でこの手のソフトはいっぱいあるので究極ではなかったりする・・・しかも、この手の監視ソフトは動作が怪しいというか、監視間隔によって、ちょっとしたトラフィックもダウンと判断するよ

cincinnati
質問者

お礼

有り難うございました。

  • selenity
  • ベストアンサー率41% (324/772)
回答No.1

perlのNet::telnet等を使用して、直接サービスに接続して稼動を確認するのが良いでしょう。 たとえば、wwwなら「telnet remotehost 80」で接続できますので、接続後、「GET /hidden_index.html」等として正しくページが取得できるかどうかを確認すれば良いでしょう。 まぁ、面倒なら有償のリモート監視サービスを契約するほうが早いかも、、、 #ガンバレ!!

cincinnati
質問者

お礼

有り難うございました。今後もよろしく御願いいたします。

関連するQ&A