• ベストアンサー

サーバのチェックの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

  • シェルスクプリプトを使ってサーバの監視システムを作りたいです。

    シェルスクプリプトを使ってサーバの監視システムを作りたいです。 サーバの稼動チェックにはpingを使って1分おきにチェックをして、状況をメールで管理者に知らせたいです。 crontabを使うのではないかと思うのですがなかなかうまくいきません。もしご存知の方が見えたらお願いします。

  • forwarderオンリーのDNSサーバのキャッシュをやめたい

    win2Kserver上のDNSサーバ(MS純正のやつ)のforwarderのキャッシュをやめる方法を教えていただきたいのです。 現在、会社の業務システムLAN上で、win2K serverを使ってDNSサーバを立ち上げているます。今回、わけあって新たに別のUNIXマシンでDNSサーバを立ち上げ、社内のほとんどの端末(win95,win2Kpro)はそのUNIXマシンで動いているbindをDNSサーバとして利用することにさせました(これらの端末にはDHCPでDNSサーバを渡しているため簡単に変更できます)。ただ、社内の300台程度の端末はDNSサーバを固定で持っているために、今後も昔のDNSサーバであるwin2KservのマシンをDNSとして稼動させつづけなくてはなりません。そこで、win2Kservでfowarderだけを稼動させることにしたのですが、そいつが端末からの問い合わせ結果をcacheしてしまい困っています。出来れば、まったくcacheさせたくないのですが、その方法をご存知の方はいらっしゃいますか?MMCのDNSスナップインの画面ではそれらしい画面はありませんでした。レジストリをいじれば可能じゃないかと予想してるんですが、それらしい文書を見つけることが出来てません。どなたかご存知の方いらっしゃいましたら教えてください。なお、このwin2kservマシンにtcp-relayなどの、MS純正以外のソフトをインストールすることは出来ません。

  • ubuntu11.10のサーバについて

    ubuntu11.10のサーバ版をインストールしました。おなじみのキャラクタベースです。 ウェブサーバの構築(商用とかでなく、趣味の範囲)が目的です。サーバをインストールするとき、アレコレと設定を指定します。httpd等のデーモンとかMySQL, PostgreSQLとかDNSとか、プロキシetc.のことなどです。なので、インストールした時点でだいぶ環境は出来上がっているとは思っています。ちゃんとやればメールサーバまで動くことになっているようです。 ただし、実際に運用する場合、htmlの体系をどこのフォルダに保管するとか(これはhttpd,おそらくapache)、場合によったらwordpressにするならどうするとか、メールサーバにするのであれば、利用者の登録の方法とかいろいろです。このあたりをやる・やらないはユーザの考え方に依存しますが、やる・やらないを指定した上で一般的な方法というのがあるとは思っています(やらないなら飛ばせばよいというような意味で)。 ということでubuntu11.10に対応したサーバの運用方法を解説してくれるサイト、あるいは文献があるでしょうか。ネット検索すると、apacheの導入方法などが解説してありますが、それは多分不必要ではないかなと思います。11.10なのでまだ文献・解説本が出ていないかも知れませんが。 apacheの導入方法を解説するということは、サーバ版でなくて、非サーバ版(通常はデスクトップ版というのではないかと思いますが、ubuntuサイトにはそのような名称はないようですが)に対して種々のサービスとかデーモンを導入してサーバを立ち上げることが可能なのでしょうか。普通だったらサーバ用のセットにはXwindowもありませんが、想定しているサーバの負荷は全然大したことはないのでXなどがあって邪魔になるということはないと思います。 デスクトップ版(版を重ねてどんどん仕様が変わっていくみたい)をサーバに仕立てることは可能なのでしょうか。 以上、よろしくお願いします。 すみません、よろしくお願いします。

  • netstat で表示される「UNIX domain sockets」とは?

    RHL4 apache で運用中です。 topコマンドでサーバーを監視していると、最近急に tasksの値が上昇しサーバーが重くなります。 # netstat -np  と打つと・・・ 「Active Internet connections (w/o servers)」の項目と 「Active UNIX domain sockets (w/o servers)」の項目の 2つが表示されますが、以下のように、 「Active UNIX domain sockets (w/o servers)」において 以下のようなものが大量発生していました。これは時間とともに じりじりと増加し、最後にはウェブサーバーが落ちてしまいます。 unix 3 [ ] STREAM CONNECTED 144254692 18819/httpd unix 3 [ ] STREAM CONNECTED 144254672 18850/httpd unix 3 [ ] STREAM CONNECTED 144254551 16862/httpd unix 3 [ ] STREAM CONNECTED 144246713 18401/httpd unix 3 [ ] STREAM CONNECTED 144246706 18864/httpd unix 3 [ ] DGRAM 144246691 13088/httpd unix 3 [ ] STREAM CONNECTED 144246544 18768/httpd unix 3 [ ] STREAM CONNECTED 144246518 18772/httpd unix 3 [ ] STREAM CONNECTED 144246514 18861/httpd unix 3 [ ] STREAM CONNECTED 144245873 13766/httpd unix 3 [ ] STREAM CONNECTED 144245868 18834/httpd unix 3 [ ] STREAM CONNECTED 144245636 18397/httpd unix 3 [ ] DGRAM 144245451 9277/httpd unix 4 [ ] STREAM CONNECTED 144245363 17896/httpd unix 4 [ ] STREAM CONNECTED 144245194 18771/httpd unix 3 [ ] STREAM CONNECTED 144244915 18330/httpd unix 4 [ ] STREAM CONNECTED 144244890 17760/httpd unix 4 [ ] STREAM CONNECTED 144244844 17914/httpd 質問ですが、 1)「Active UNIX domain sockets」 とは、いったい何でしょうか。 また、例えばどういうときに「 httpdの unix sockets 」 は 大量発生するのしょうか。 2)これはdosアタック等の攻撃でしょうか。 その場合、攻撃元IPを特定するにはどうしたらいいでしょうか。 #netstat -np で見る限りでは、「Active UNIX domain sockets」の 項目ではそのPIDに対応したIPが表示されません。 3)それとも、未熟なcgiやphp等のスクリプトが悪さをしているのでしょうか。 その場合、どのスクリプトが元凶なのか、どうやって調べることが できるでしょうか。 #lsof | grep PID で調査できるかとやってみましたが、 アクセス先として表示されるのは、ただのgifファイルだったりして どうもよくわかりません。

  • サーバーがネットにアクセスできません

    RedHat7.0 YahooBB AirStation(ブロードバンド、無線) YahooBBからAirstation 無線でWinのノートPC、有線でLinuxインターネットサーバーに継いでます。 ノートからPingをおくると正常なかいとうがきます(サーバーへ192.168.11.100) ルーターではDHCPに自動IP割り当てにして、サーバーには固定で192.168.11.100 にしてます。 まずサーバーで、nslookup をしますと *** Can't find server name for address 192.168.11.1(ルーターのプライベートアド) *** Default servers are not available これって ルーターのDNSが作動してないってことですか? でも もう一台のノートPC(無線)はもちろん普通にインターネットできてます。 サーバーにもDNSの設定が必要なんでしょうか? 今はまだ設定してません。 それと、このノートPCからPingをおくってみますと、ただしい回答がきますが サーバーからはTracerouteで永遠にパケットを送りつづけてタイムアウト(?!)します。 最初の回答(2回目くらいのパケットのではYahooBBなんとかかんとかとでて ました) サーバーの設定は固定のIP(192.168.11.100)にして、ゲートウェイはルーターのIP(192.168.11.1)です。その他DNS、セカンダリーDNSはデフォルトで勝手に設定されたんで、そのまんなになってます。 一体何がいけないのでしょう? もちろんルーターの設定で手動でこのサーバーには固定で192.168.11.100は 割り当てて、その他はDHCPにしてます。 こんなに設定だけでつまずくなんて、これから思いやられます。 なにか アドバイスありましたら、助けてください。

  • シェルスクリプトについて

    RedHat Linux v.7.1を常時接続で稼働しています。問題はコンピュータから長期に離れるときは携帯で時々アクセスして作動を確認しています。 どなたか、このサーバが止まったら自分の携帯にメールを送るとか、他のマシーンから時々Pingを打って作動を確認し、pingが返らないときは携帯にメールを送るようなshellスクリプトが在りましたら教えてください。 あるいは参考資料の在る場所など教えていただけませんでしょうか。 プログラムの経験は在りません。

  • 変更したIPでDNSサーバは稼動しているか

    宜しくお願いします。 管理しています、マスターDNSサーバの移設作業を行いIPアドレスを新規の 1**.**.**.***に変更しました。 OSは FreeBSD 6.3-RELEASE-p1です それで、本DNSサーバ上から、zone設定していますドメインに関して、 #dig www.hogehoge.co.jpとかを打つと以下のようになります。 ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 52*** ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2 ;; QUESTION SECTION: ;www.hogehoge.co.jp. IN A ;; ANSWER SECTION: www.hogehoge.co.jp. 300 IN A 1**.**.**.*** ;; AUTHORITY SECTION: hogehoge.co.jp. 300 IN NS マスターDNSサーバFQDN. hogehoge.co.jp. 300 IN NS スレーブDNSサーバFQDN.                 ;; ADDITIONAL SECTION: マスターDNSサーバFQDN. 600 IN A 2**.**.**.*** スレーブDNSサーバFQDN. 600 IN A 2**.**.***.*** ;; Query time: 0 msec ;; SERVER: 1**.**.**.***#53(1**.**.**.***) ;; WHEN: Wed Jul 22 15:24:20 2009 ;; MSG SIZE rcvd: 135 ●問題は、;; ADDITIONAL SECTION: マスターDNSサーバFQDN. 600 IN A 2**.**.**.*** の箇所でして、マスターDNSサーバのIPアドレスが古いままの状態で 表示されます。 そして、yahooに対して、digを打つと、 #dig www.yahoo.co.jp ; <<>> DiG 9.3.4-P1 <<>> www.yahoo.co.jp ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 47076 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;www.yahoo.co.jp. IN A status: SERVFAILとなります。 nslookupでは下記のようになります #nslookup www.hogehoge.co.jp Server: 1**.***.***.*** Address: 1**.***.***.***#53 Name: www.hogehoge.co.jp Address: 1**.***.***.*** で、新規変更しましたIPアドレスが表示されます。 pingでping www.yahoo.co.jpすると、 ping: cannot resolve www.yahoo.co.jp: Host name lookup failure となります。 また、localのWINDOWS端末からnslookup www.hogehoge.co.jpを打つと、 hogehoge.co.jp nameserver = DNSサーバFQDNが表示され、 そのFQDNにpingを打つと、 Pinging FQDN [2**.***.***.**] with 32 bytes of data と古いIPアドレスに見に行き、Request timed out.となります。 ●本DNSサーバからゲートウェイにpingで応答確認できています。 リモートで本DNSサーバに新規IPでssh接続できています。 データセンター内にあるルータ設定で、別のネットワークセグメントにもping応答が確認できています。 こういう状況で、本DNSサーバは実際に新規変更したIPアドレスで 稼動できていると言えますでしょうか。 新規変更したIPに向けるためには、何が必要でしょうか。 宜しくお願い致します。

  • Webサーバが固まる原因について

    よく理解できないことが起きているので、質問することにしました。クライアント様のサーバなのですが、SSHでリモートでアクセスできるのにウェブサーバやメールサーバが正常に動作していないことが稀にあります。 cronで毎分でPINGを飛ばして死活監視を実装していますが、この監視ではウェブサーバやメールサーバが正常に機能しているかのチェックにはなりません。したがって、そこまでチェックする機能を実装させるべきなのですが。 サーバの基本仕様を載せておきます。 OS: Fedora Core1 Webサーバ: apache1.3.29 + openssl-0.9.7e メールサーバ: postfix-2.1.4, qpopper4.0.5 疑問なのは、httpsdデーモンのプロセスが動作しているにもかかわらず、ホームページ閲覧ができない症状が起き得るのかということです。httpsdのアクセスログを見ると、不正アクセスらしいログが多々出ておりました。Linuxサーバなのに、Windowsサーバのファイル(.aspファイルなど)を閲覧しようとしていてファイルが存在しない、といったログが多々出ておりました。 もし、同じような症状が起きて問題解決できた方がいらっしゃれば、是非アドバイスをお願いします。

  • sendmailで別サーバにメールを送信したい

    sendmailで別サーバへメール送信をしたいですが送信できないためわかる方、ご教授ください。 環境:CentOS 5 Sendmail:sendmail-8.13 DNS:bind サーバは3台あり、この環境内でメールを送信したいとおもっております。 構成としては以下となります。 サーバA(SA) 10.100.10.2 サーバB(SB) 192.168.10.2 サーバC(SC) 192.168.10.3 目的:SAからSBへメールを送信したい SB⇔SC間は送受信ができております。 しかし、SA⇒SBの送信ができなくて困っています。 全サーバは、POP等は構築していないため、サーバ上でメールを確認する状態です。 SAのドメイン名は、sendmail.co.jp SBのドメイン名は、centos.co.jp DNSは、SAのみに構築しており nslookup centos.co.jp ============================== Server: 127.0.0.1 Address: 127.0.0.1#53 Name: centos.co.jp Address: 192.168.10.2 ============================== dig centos.co.jp ================================================================================ ;; QUESTION SECTION: ;centos.co.jp. IN A ;; ANSWER SECTION: centos.co.jp. 86400 IN A 192.168.10.2 ;; AUTHORITY SECTION: centos.co.jp. 86400 IN NS ns1.centos.co.jp. ;; ADDITIONAL SECTION: ns1.centos.co.jp. 86400 IN A 127.0.0.1 ;; Query time: 2 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ================================================================================ SBにはDNSがないため、hostsに記載して名前解決をしております。 SAからの送信の際に気になるのが、 mail test@centos.co.jp に送信しようとすると(SBにはtestアカウントは作成してあります) 送信ログをみるとrelay=test@localhostとDNSをみていないような気がしております・・・ SAは、 resolve.confは、127.0.0.1と設定しています。 ※これが正しいのかもわかりませんが。 nsswitch.confは、host: dns files SBは、 resolve.confは記述なし nsswitch.confは、host: files SAのsendmailは外部送信できるようにはしているつもりです。 m4を使ってcfを編集しており、元々のcentosのsendmailから変更した点は以下です。 ※頭のdnlを外したもの/つけたものも含んでいます。 DAEMON_OPTIONS(`Port=smtp,Addr=10.100.10.2, Name=MTA')dnl dnl FEATURE(`accept_unresolvable_domains')dnl LOCAL_DOMAIN(`centos.co.jp')dnl Cwcentos.co.jp MASQUERADE_AS(`centos.co.jp')dnl FEATURE(masquerade_envelope)dnl FEATURE(masquerade_entire_domain)dnl MASQUERADE_DOMAIN(`.centos.co.jp')dnl FEATURE(`virtusertable',`hash /etc/mail/virtusertable.db')dnl VIRTUSER_DOMAIN_FILE(`/etc/mail/virtuser-domains')dnl SBは受信できるように local-host-namesにsendmail.co.jpに記述し、 念のため、hostsにsendmail.co.jp 10.100.10.2 を記述してます。 pingは相互に飛ばせます。 telnet sendmail.co.jp 25 をするとプロンプトが返ってきません。 そのかわり、telnet 10.100.10.2 25 をするとできますが結果は同じになります。 上記のことから質問ですが、 1.SBについてはDNSがないため、hostsで解決させているがそれで問題ないのか。 2.上記のログからSAはcentos.co.jpに送信しようとしているのでしょうか? 正直、bind、sendmailの設定を初めてやっているので よくわかっていない部分があるため、足らない設定個所や気になるところがあれば 教えて頂けると幸いです。

  • DNSサーバーが通信できません。

    今日パソコンを立ち上げたら ものすごく回線が重たく ネットが非常に見づらかったため インターネットを診断したところ DNSサーバー(192.168.3.1)と通信できません。 ネットワーク診断でリモートホストに対してpingを実行しましたが応答がありませんでした。 と表示されました。 ネットが遅くてやってられないので 携帯から質問しています。 初心者なのでお手上げです。 モデムはYahoo!BBを使っていて OSはVistaです。

    • ベストアンサー
    • ADSL