检测VPS是否在线,如果出现故障,微信推送消息提示

监控VPS是否在线, 若ping不通, 则使用Server酱微信推送,报警,当然你也可以用发送邮件报警。
脚本中 SCKEY,需要登录 Server酱,获取SCKEY
Server酱地址:sc.ftqq.com

复制下列内容到服务器,写一个脚本, 例如:monitor.sh
配置计划任务(每30分钟检测一次,时间根据需求自定义)

crontab
*/30 * * * * /bin/bash /usr/local/monitor.sh

脚本内容:

#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
#!/bin/sh
####################
#服务器ping测试程序
#James Qi 2013
#循环检测各台服务器,在指定的ping次数中丢失的必须小于某个设定值,如果大于则说明有问题,发邮件通知报警
#在/etc/crontab中设定本程序的执行周期
####################
#
sckey="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
#参数设置
COUNT=20 #每台服务器测试ping的次数
MAX=15 #其中最多无法ping通的次数
HOST=(#服务器列表,IP地址或者域名
192.168.100.1
192.168.100.2
192.168.100.3
)
#循环检测
for ipadd in "${HOST[@]}"
do
 timing=`date +%Y/%m/%d/%H:%M:%S`
 ping $ipadd -c $COUNT > 1ping.log
 losspag=`grep "packet loss" 1ping.log |awk '{print $6}' |sed 's/%//g'`
 if [ $losspag -ge $MAX ] ;
 then
# echo $timing > tmp.log
# echo -n $ipadd >> tmp.log
# echo -n "packet loss is more than $MAX of $COUNT">> tmp.log
 curl https://sc.ftqq.com/$sckey.send?text=$ipadd,_在_$timing,_无法连接.
 
# else
# rm -f tmp.log
 fi
done
echo "----------------------------------------------------------------------------"
endDate=`date +"%Y-%m-%d %H:%M:%S"`
echo "★[$endDate] Successful"
echo "------------------------------------​

Leave a Comment