Shell IP位址監控

2021-10-07 11:22:52 字數 3579 閱讀 4145

#!/bin/bash

#ipjk.txt存放ip位址 qq450433231

#ip2.txt存放專案名稱 ip位址 等資訊 用於格式化輸出,事先文字定義好ip位置,有利於快速排障

#ipadd.txt存放故障ip位址

#本次更新增加恢復告警 故障時間

. /root/downiptime.sh #根據日誌計算故障時間

#定義時間

cur_time(

)#定義輸出的告警資訊 根據ip查詢ip2.txt檔案輸出告警資訊

systemname(

)# 判斷檔案是否存在

[! -f /root/ipjk.txt ]

&&echo

"ipjk.txt檔案不存在"

&&exit 1

[! -f /root/ipadd.txt ]

&&touch ipadd.txt

#去除檔案空格

sed -i '/^$/d' /root/ipjk.txt

while

read ip

do[ -z $ip]&&

echo

"ipjk.txt存在空格 檢查檔案格式"

&&exit 1

for((i=

1;i<

6;i++));

doping -w 2 -c 1 $ip

&>/dev/null #判斷規則if[

$?= 0 ]

;then

echo

"$(cur_time)

ping $ip successful"

>/dev/null #>> /root/connect.log

break

elif[$i

= 5 ]

;then

wx "`

echo -e "$(cur_time)

\n$ip 未回應ping報文,請檢查!\n$(systemname)"`

"#傳送郵件告警 修改/etc/mail.rc就可以呼叫第三方郵箱

echo -e "$(cur_time)

\n$ip未回應ping報文,請檢查!\n$(systemname)

"|mail -s "【緊急告警】ip未回應ping報文" [email protected]

#寫入日誌

echo

"$(cur_time)

第$i次檢查$ip未回應ping報文"

>> /root/connectfail.log

#不可達ip移除監控列表

echo

"$ip"

>> ipadd.txt

sed -i "s|\<$ip\>||" ipjk.txt

sed -i "/^$/d" ipjk.txt

else

echo

"$(cur_time)

第$i次檢查$ip未回應ping報文"

>> /root/connectfail.log

sleep 2

fidone

done

< /root/ipjk.txt

#當ip恢復時,傳送恢復告警

while

read ip

do[ -z $ip]&&

echo

"ipadd.txt存在空格 檢查檔案格式"

&&exit 1

ping -w 2 -c 1 $ip

&>/dev/null

if[$?

= 0 ]

;then

echo -e "$(cur_time)

$ip 已恢復"

>> /root/connectfail.log

u=$(grep -w "$ip" ipjk.txt|

wc -l)

if[$u -eq 1 ]

;then

echo

"$(cur_time)

$ip已存在"

>> /root/connectfail.log

else

echo

"$ip"

>> ipjk.txt

fised -i "s|\<$ip\>||" ipadd.txt

sed -i "/^$/d" ipadd.txt

wx "`

echo -e "$(cur_time)

\n$ip 已恢復\n$(systemname)

\n\n$(fail_time)"`

"echo -e "$(cur_time)

\n$ip 已恢復\n$(systemname)

\n\n$(fail_time)

"|mail -s "【ip已恢復】" [email protected]

else

echo

"$(cur_time)

第$i次檢查$ip未回應ping報文"

>> /dev/null

fidone

< /root/ipadd.txt

根據日誌計算故障時間指令碼

#!/bin/bash

#分析日誌計算時間

fail_time()'

`endtime=

`tail -n 500 connectfail.log |

grep

"$ip"

|grep

"已恢復"

|tail -n 1|

awk''

`startm=

$(date --date=

"$starttime" +%m)

;endm=

$(date --date=

"$endtime" +%m)

;starth=

$(date --date=

"$starttime" +%h)

;endh=

$(date --date=

"$endtime" +%h)

;startd=

$(date --date=

"$starttime" +%d)

;endd=

$(date --date=

"$endtime" +%d)

;echo

"本次故障開始時間 $starttime"

echo

"本次故障結束時間 $endtime"

day=$((

$((10#$endd)

) - $(

(10#$startd))))

hour=$((

$((10#$endh)

) - $(

(10#$starth))))

minute=$((

$((10#$endm)

) - $(

(10#$startm))))

total=

$(($(($day *24*

60))

+ $(($hour *

60))

+ $minute

))echo

60))

h $(($total %

60))

m"}

shell IP位址監控 山炮運維 葉俊海

bin bash 20190710 ip.txt存放ip位址?ip2.txt存放專案名稱?ip位址?等資訊 作為自動化web監控的衍生,針對 多鏈路的需求,寫了ip位址的監控,需要更高頻率監控,不用crontab,直接指令碼內while?true無限迴圈 cur time systemname f?...

ip位址子網劃分工具 大型監控網路系統IP位址規劃

對於監控專案來說,很多故障的大型原因都是跟ip位址設定不當有關,如ip衝突,或者有幾路監控影象沒有顯示等,都是跟ip有一定關聯,合理的分配ip位址十分重要。一 為什麼要合理分配ip?對於小型監控專案來說,ip位址的設定比較簡單,大部分的人都不會出錯,對於超過254個點位的監控專案來說,就有些容易出錯...

python監控 python 監控服務

最近寫了乙個web測試程式,因為部署在其他地方,所以想弄個監控的程序去看服務是不是還在,要是不在好發郵件,就用python簡單的寫了乙個。當然,有的時候也要考慮到監控程序本身就掛了,或者不想監控了。首先監控指令碼是這樣,很簡單 monitor.py coding 簡單的monitor函式,主要監控乙...