当服务器的服务因很多原因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 |
完工,服务器的各项服务有什么异常你都能第一时间知道了。