シェルIPアドレスモニタ

#!/ binに/ bashのの
#はip.txt IPアドレスQQ450433231の保存された  
事前定義されたテキストの良いIPの場所は、迅速なトラブルシューティングを助長している、プロジェクト名ip2.txt#保存されたIPアドレスは、出力をフォーマットするために使用されている
#このアップデートは、回復の警告を追加ダウンタイム  

。/root/weixin.sh#ロボットマイクロチャネルhttps://blog.51cto.com/junhai/2424374にアラームコールを送信する
。/root/downiptime.sh故障時間をログ#に基づいて算出される  
#は時間定義
CUR_TIME(){ 
	DATE」をYの%+ /%M /%のDの%のH:%のM:%のS " 
} 
アラーム情報出力#1 ip2.txtルックアップファイルの出力アラーム情報を定義するIPに従って
のSystemName(){ 
NAME = 'CAT ip2jk.txt |はgrep $ IP | WC -l` 
[$名-eq 1]のiF、次に
        | CAT ip2jk.txtはgrep $ IP 
他に
        "$のIP"エコー
Fiの
} 
#をファイルが存在するかどうかを判断する
[を!-f /root/ipjk.txt] &&エコー」 ipjk.txtファイルは「&& 1番出口が存在しません
[を!-f /root/ipadd.txt] &&タッチipadd.txtTXTの
#は、ファイル・スペースを削除します
-iセッド/root/ipjk.txt '/ ^ $ / D' 

しばらく読むIP 
やる
	[-Z $ IP] && && 1番出口"ipjk.txtスペースはファイル形式をチェック存在する"エコー。
        ((1のために= I;私は< 。6;私は++))
        を行う
                ピングの1 -W 2 -C IP&$>は/ dev / nullを決意ルール#。
                [$ = 0?]のIF;その後、
                        "成功のping $ IPの$(CUR_TIME)"エコー>を/ dev / null# /root/connect.log >> 
                        BREAKの
                elifの[$ i = 5];その後、
						情報= `エコー-eは` "N- $のIP \ $(CUR_TIME)は、\ nは$(SYSTEMNAME)チェックし、メッセージをpingに応答しませんでした!"  
						wx_ip#零細企業が警告の手紙を送って
						エコー-e "$(cur_time)の\ n個の$ IPは、メッセージをpingに応答チェックしませんでした\ nは$(SYSTEMNAME)!" |メール-s " [IP]緊急警報メッセージのPINGに応答しませんでした" [email protected]#の/ etc / mailを変更するには、電子メール警告を送信します。RCは、サードパーティのメールボックスを呼び出すことができます
						エコー>>ログに書き込ま/root/connectfail.log# "$のI $のIP検査の$(cur_time)はPINGメッセージに応答しませんでした" 
						エコー"$のIP" >> ipadd。 監視リストを削除TXT#到達不能IPは
						ipjk.txt | -i "$ IP || S"のsed 
						SED -i "/ ^ $ / dの" ipjk.txtを
                他の
                        エコー>> /root/connectfail.log "$ Iの$(CUR_TIME)検査では、IPパケットのPINGに応答しない$" 
                        2 SLEEP 
                Fiは
        DONE 
DONE </root/ipjk.txt 

セッド-i "/ ^ $ / D" ipadd.txt 
アラームを回復するために送信されたときに########################### IPの回復がある
読み出したIPはしばらく
やるの
        	[-z $ IP] &&エコー」 ipadd.txtスペースは、ファイルフォーマット"&& 1番出口チェック存在する
            のping -c 2 -W 1 $ IP&>を/ dev / null 
                ;その後、IF [?$ = 0] 
					$(CUR_TIME)$のIP復元「>エコーを-e" > /root/connectfail.log 
                    U = $( "$ IP" ipjk.txt -wはgrep | WCの-l)
						IF、次に[$ Uの-eq 1]
							"$(cur_time)$ IPはすでに存在している" >> /root/connectfail.logエコー$(cur_time)$ IPはすでに存在している「>> /root/connectfail.log 
						他
							エコー"$ IPは" >> ipjk.txt 
						Fiの
					ipadd.txt | SED -i "$のIP || S" 
                    SED -i「/ ^ $ / D "ipadd.txt 
					$(CUR_TIME)\ $ N-復元IP \ N- $(のSystemName)\ N- \ N- $(fail_time) "`=`エコー-e情報" 
                        wx_ip 
                        エコー-e" $(CUR_TIME)\ n個の$ IPは、\ nは$(SYSTEMNAME)を復元し、\ nはされています \ nは$(fail_time) "|メール-s" [IP]が復元されました"[email protected] 
			エコー" $(CUR_TIMEを)$ I $ IPの検査PINGメッセージ「>>は/ dev / nullに応答しなかった
                Fiの
<DONE /root/ipadd.txt
#!/ binに/ bashの
#ログ解析計算時間

fail_time(){ 

のstartTime = `尾500 connectfail.log -n | grepを"$ IP "| grepを"第一" |尾-n 1 | awkの {、$ 1を印刷2} $ ' ` 
ENDTIME =`尾500 connectfail.log -n | grepを"$ IP" | grepを"復元" |尾の-n 1 |。awkの。{$印刷1、$ 2}' ` 


STARTM = $(DATEの--date = "$のstartTime" %M +); 
ENDM = $(DATE --date = "終了時刻$" %M +); 

starth = $(DATEの--date = "$のstartTime" %+ H); 
endh = $( --date = DATE "終了時刻の$" %のHが+); 

STARTD = $(DATE --date = "$のstartTime" D +%); 
ENDD = $(DATE --date = "$終了時刻" D +%)。


「障害が時間$開始STARTTIME」エコー
エコー「の故障終了時間$の終了時刻を」

日= $(($((10の#$ ENDD)) - $((10#$のSTARTD))))
時間= $(($((10の#$ endh)) - $((10#$ Homeh)) ))
分= $(($((10#$ ENDM)) - $((10#$ STARTM))))

合計= $(($(* 24 * 60($日))+ $(($の時間* 60))+ $分))は

、「障害時間をエコー:$((総/ 60) )時間$( (%合計$ 60)は)M " 

}

エンタープライズマイクロチャネル警告効果 

image.png

Eメールアラートの効果

image.png

image.png

おすすめ

転載: blog.51cto.com/junhai/2443928