服務器端口3次不通報警

 1 #!/bin/bash
 2 
 3 #NginxConfigDir=/opt/nginx/conf
 4 error_log=/home/www/check_port/error_log
 5 
 6 #Host_Port=`find $NginxConfigDir -name "*.conf" | xargs -i  grep server {} | grep -v '#' | egrep -o '([0-9]{1,3}\.){3}[0-9]{1,3}\:[0-9]{1,5}'  | sort -u | awk -F: '{print $1" "$2 }'`
 7 
 8 #從配置文件讀出主機 端口 錯誤次數 超時時間
 9 while read Host Port Error WaitTime
10 do
11     error_num=0
12     while :
13     do
14         DT=`date +%F-%R`
15         nc -w $WaitTime -n $Host  -z $Port
16         if [ $? -eq 0 ]
17         then
18             #重置錯誤次數並跳出循環
19             error_num=0
20             break
21         else
22             #增長錯誤次數並記錄日誌
23             error_num=$(($error_num+1))
24             echo "$DT Host: $Host Port: $Port error " >> $error_log
25         fi
26 
27         if [ $error_num -eq $Error ]
28         then
29             #若是達到報警次數就發報警並跳出循環檢查下一個端口
30             error_message="$DT $Host $Port error,please check"
31             [發報警]
32             break
33         fi
34     done
35 done < /home/www/check_port/host.conf

 以前原本是想經過檢查nginx的後端機器寫的...後來想一想若是別的機器也要添加報警....因此就給改爲了配置文件格式.nginx

檢測方式使用的是shell命令nc  -w是超時時間...-n是不使用dns解析   -z能夠寫單個端口也能夠寫端口範圍 好比 21-24shell

相關文章
相關標籤/搜索