システム管理者通知によるポート監視

画像 最近、一部のサービス(ポートの読み取り)が落ちた場合にサーバーを定期的に監視し、エラーが発生したときに管理者(私自身)に通知する必要がありました。



解決策は未解決です



それで、私たちは少数のサーバー、たくさんのポートです。 ポートのオープン性を古典的にチェックします-nmap

出力例:



firewall:~/scripts# nmap 192.168.1.1 -p3389

Starting Nmap 4.11 ( www.insecure.org/nmap ) at 2009-05-06 14:54 GMT-4

Interesting ports on 192.168.1.1:

PORT STATE SERVICE

3389/tcp open ms-term-serv

MAC Address: 00:50:8D:EB:7E:08 (Abit Computer)



Nmap finished: 1 IP address (1 host up) scanned in 0.132 seconds







これは、ターミナルサーバーが起動していることを意味し、おそらく動作します:)

オープンの代わりに何か他のものが書かれている場合-それに応じて横棒、それは通知する必要があります。



長い間、メッセージシステムを発明しました。 最も困難なものから、最も単純なものへ。 蜂にはこのようなmailtosmsサービスがあり、890912345678 @ sms.beemail.ruの形式のメールボックスにレターを送信すると、テキストメッセージで問題ありません。



そのため、タスクは、サーバーとポートのリストからすべての行をスキャンし、開いていないものをスキャンすることです。それを別のファイルに書き出し、石鹸のために送信してください。



何が起こった:

#!/ bin / bash

in a $ <サーバー ; nmap ` echo $ a | sed -e 's /:/ -p /' ' | grep -q "/ tcp * open" || echo $ a ; done > / var / test / serverlist;

DATENOW = $ 日付 + d- m- Y_ T

if [ - z $ cat / var / test / serverlist ] ; それから

echo $ DATENOW >> / var / test / log

cat / var / test / serverlist >> / var / test / log

メール7909 ******* @ sms.beemail.ru < / / var / test / serverlist

fi

出る




どのように機能しますか?

サーバーファイルを作成し、スクリプト自体の横に配置します。

サーバーファイルの内容は次のようなものです。

192.168.1.1:80

192.168.1.2:25

192.168.1.3:110






まあ、一般的に、それは明らかです

コマンドsed -e 's /:/ -p /' 'は、「:」を「-p」に置き換えます

a in in $(<サーバー); nmap `echo $ a | sed -e 's /:/ -p /' ' -nmapに結果を送ります

grep -q "/ tcp * open" || echo $ a; done> / var / test / serverlist; -ポートが開いていない場合は行を取り出し、 serverlistファイルにプッシュします

その後、ファイル内の何かがチェックされ、そこに何かがある場合、ログに書き込まれ(デバッグ用)、管理者の石鹸/電話に送信されます。

出来上がり。 1時間に1回(気にしないように)crontabに追加して使用します



ZYZH nagiosや他のネットワークモニターのようなものがあることは知っていますが、複数のサーバーのポートを単純にスキャンするだけで十分な場合、それらは強力すぎて設定が困難です。



All Articles