服务器端口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的后端机器写的...后来想想如果别的机器也要添加报警....所以就给改成了配置文件格式.

检测方式使用的是shell命令nc  -w是超时时间...-n是不使用dns解析   -z可以写单个端口也可以写端口范围 比如 21-24

原文地址:https://www.cnblogs.com/wayde-Z/p/6957976.html