一个监测服务器端口不通则发送微信通知的shell脚本

当服务器的服务因很多原因down掉后往往都是由用户或者老板通知你的,这样会非常的被动,显的太没责任心了,通过这个发送微信通知的shell脚本,当服务器端口出现故障时你几乎能立刻收到微信通知,当然若你一天都不怎么看微信的话那就当我没说。好,下面开始介绍这个shell脚本。

一、监测服务器端准备工作:

因为脚本会用到nmap和curl命令,若你的系统没有这两条命令请手动安装,命令如下:

Ubuntu/debian:

1
2
apt-get install curl
apt-get install nmap

Redhat/Centos:

1
2
yum install curl
yum install nmap

二、第三方通知工具准备工作:

(1)去Server酱官网http://sc.ftqq.com按提示注册个GitHub账号并授权登陆;
(2)按Server酱官网的提示开启微信推送及绑定功能;
(3)将SCKEY值复制粘贴到脚本的key值中,如有多个IP则按格式填写多个IP即可;
(4)端口填写你要监测的端口,当这个端口不通时,你的微信就能及时收到报警提示了。

三、shell脚本代码(本示例通过vi命令编辑文件名为check_ip_port.sh的脚本):
vi check_ip_port.sh

1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/bash
ip=("192.13.59.13" "207.175.211.36")
key=SCU37890Tbc3b76b6db4a6a6f286031e205008a7f5c12b4e3a955b
content=服务器端口异常!
port=80
for i in ${ip[@]};
do
check_ip=`nmap $i -p $port|grep open|wc -l`
if [ $check_ip -eq 0 ];then
curl "https://sc.ftqq.com/$key.send?text=$i&desp=$content" >/dev/null 2>&1 &
fi
done

如上代码所示:
ip——->填写你需要监测的ip,多个IP格式如:以”ip1″ “ip2” “ip3”
key——>填写Server酱官网的SCKEY值
content–>随便写点报警提示
port—–>填写你需要扫描的端口

四、手动执行测试:
你可以在被监测的服务器上把端口关了,然后手动执行一下监测脚本,马上微信就会收到通知了。

1
bash check_ip_port.sh

五、编辑crontab文件添加定时执行监测脚本:
因为Server酱限制相同内容5分钟内不能重复发送,所以监测频率设置5分钟一次,你也可以自己的需求调整。

加入以下代码到crontab即可。

1
*/5 * * * * /bin/bash check_ip_port.sh

完工,服务器的各项服务有什么异常你都能第一时间知道了。