電子メール通知(bash)でネットワーク上のポートの可用性を監視するためのスクリプト

あらゆる種類のテクノロジーを備えた国に住んでいるにもかかわらず、私たちが住んでいたことがありますが、首都から遠く離れた都市のインターネット接続の安定性はめったにありません。 長い間、ネットワーク上の機器の可用性を専門的に監視するためにあらゆる種類のサービスを選択していました。 Webサーバーの80ポートのみをチェックするものもあれば、ページ上のキーワードをチェックしてGETまたはPOSTリクエストを送信できるものもあります。 このサービスは他のサービスよりも優れていることがわかりました。sshの可用性を確認する機会がありますが、支払いは一定期間のリクエスト数と、もちろん監視する必要のある機器の量によって異なります。



しかし、当然のことながら、システム管理者の通知を使用してポートを監視する優れたスクリプトにつまずいた しかし、上で書いたように、インターネットの安定性により、グローバルネットワーク上の特定のサーバーの可用性を判断する際に多少の不正確さが生じたため、提案されたスクリプトを少し変更して完成させました。



-スクリプトは、ポートへのアクセス不能についての手紙だけでなく、ネットワーク上での外観についても送信し始めました。

-スクリプトはメールに手紙を送信し、時間、スキャン中のエラー数、スキャンの以前のステータスをログに書き込みます。

-スクリプトは、5回接続に失敗した場合、または使用不可になってから5回成功した場合にのみ、メールにメールを送信します。

-インターネットがスクリプトの場所に行った場合、スクリプトは手紙を送信しません

-スクリプトは毎分実行できます





#!/bin/bash CATALOG="/share/Web/" NMAPCAT="/share/MD0_DATA/.qpkg/Optware/bin/" WC="/mnt/ext/usr/bin/" echo "Subject: Monitoring hosts sms" > "$CATALOG"mail echo "From: send_from@mail.ru" >> "$CATALOG"mail echo "To: send_to@mail.ru" >> "$CATALOG"mail echo "CC: copy_to@gmail.com" >> "$CATALOG"mail echo "" >> "$CATALOG"mail for i in 1 2 3 4 5 do for a in $(<"$CATALOG"servers); do "$NMAPCAT"nmap `echo $a | sed -e 's/:/ -p /'` | grep -q "/tcp *open " || echo $a; done >> "$CATALOG"serverlist_n; sleep 5; done "$WC"sort -u "$CATALOG"serverlist_n > "$CATALOG"serverlist if [[ $(cat "$CATALOG"serverlist_n | "$WC"wc -w) -ge 5 ]] then cat "$CATALOG"serverlist >> "$CATALOG"mail echo "" >> "$CATALOG"mail else echo "All OK" >> "$CATALOG"mail echo "" >> "$CATALOG"mail fi if [[ $(cat "$CATALOG"servers | "$WC"wc -w) -eq $(cat "$CATALOG"serverlist | "$WC"wc -w) ]] then cat /dev/null > "$CATALOG"serverlist_n exit 1 fi a=`expr $(cat "$CATALOG"serverlist_n | "$WC"wc -w) % 5` b=`expr $(cat "$CATALOG"serverlist_old | "$WC"wc -w) % 5` if [[ $(cat "$CATALOG"serverlist_old | "$WC"wc -w) -ne $(cat "$CATALOG"serverlist_n | "$WC"wc -w) && $a -eq 0 && $b -eq 0 ]] then cat "$CATALOG"serverlist_n | "$WC"wc -w >> "$CATALOG"mail cat "$CATALOG"serverlist_old | "$WC"wc -w >> "$CATALOG"mail cat "$CATALOG"mail | sendmail -t echo "------------" >> "$CATALOG"log DATENOW=$(date +%d-%m-%Y_%T) echo $DATENOW >> "$CATALOG"log cat "$CATALOG"serverlist >> "$CATALOG"log cat "$CATALOG"serverlist_n | "$WC"wc -w >> "$CATALOG"log cat "$CATALOG"serverlist_old | "$WC"wc -w >> "$CATALOG"log echo "------------" >> "$CATALOG"log fi if [[ $a -eq 0 ]] then cat "$CATALOG"serverlist_n > "$CATALOG"serverlist_old fi cat /dev/null > "$CATALOG"serverlist_n exit fi
      
      







CATALOG = "/ share / Web /" -このスクリプトがあるディレクトリを指定します

NMAPCAT = "/ share / MD0_DATA / .qpkg / Optware / bin /" -必要に応じてnmapの場所を指定する

WC = "/ mnt / ext / usr / bin /" -wcアプリケーションへのパス



サーバーファイルの内容は次のとおりです。

 
 192.168.1.1:80
 192.168.1.2:25
 192.168.1.3:110




ログでエントリを取得します。

 
 ------------
 12/29 / 2013_12:42:41
 192.168.1.1:80
       5
       0
 ------------
 ------------
 12/29 / 2013_12:58:19
 192.168.1.1:80
 192.168.1.2:25
      10
       5
 ------------




SMSの監視の可能性について追加したいと思います。

主にmail.ruメールを使用して、件名にsmsという単語が含まれている場合、そのようなメッセージにInboxフォルダー内の文字のリストで赤いフラグが付けられ、コピーが38068594xxx2@sms.kyivstarのSMSとして電話に送信されるように、文字を受信するフィルターを構成しました.net。

キエフスター関税(Beeline UA)では、1日に7コペックで150のsmsと50のmmsを毎月受け取ることができます。



監視スクリプトは、ルーター、Linuxを実行する衛星放送受信機、またはNASドライブ上のcronを介して実行できます。 この場合、スクリプトはQNAP TS-419PII NASで実行されています

その結果、無料ですべてのサーバーを毎分監視できます。



余談ですが、「メールからSMS / MMSを受信する」サービスがすでにキエフスターネットワークでアクティブになっている場合、メッセージの件名にmmsという単語でフィルターを作成し、送信者の手数料なしで合計1 MBまでのメッセージを受信することもできます。



これは、1週間にわたって何度もやり直した最初のbashスクリプトです。 建設的な批判とあなたのコメントをお待ちしています。



All Articles