shell编程-每三分钟检测服务器是否异常并邮件通知
2018-07-20 来源:open-open
1、创建脚本文件monitorserver.sh, 脚本附在后面
2、使用crontab进行每三分钟定时检查
crontab -e
*/3 * * * * /.../monitorserver.sh
3、脚本使用说明
需要根据自己需要,填写服务器,计数文件路径,发送人邮箱和收件人邮箱,这里采用的是post请求,需要填写传参参数。
#!/bin/sh
#服务器
BASEURL=http://mysever.com
#计数文件路径
COUNT="/home/monitor/serviceExists/production/count"
#Appq计数文件路径
APPCOUNT="/home/monitor/serviceExists/production/appCount"
#控制邮件发送次数
NUMBER=3
#控制停止时间
NUM=7
monitoring_server(){
if [ ! -f $1 ] ;then
touch $1
#插入数据
echo "0" > $1
#在第一行下面插入0,
sed -i '1a\0' $1
fi
#获取count文件第二行数据,该数据是用来控制停止多少分钟后再访问,0表示发送接口请求,$NUM限制最大时间
total=$(sed -n '2p' "$1")
echo total:$total
echo Count_PATH:$1
#let "total=total+'0'"
if [ ${total} -eq 0 ];then
#获取https状态码
http_code=$2
echo http_code:$http_code
#https状态码为200,表示请求成功
if [ $http_code == "200" ]
then
#登录成功后,将第一行数设置为0
sed -i '1c\0' "$1"
echo "服务正常"
echo $6
else
#获取第一行数据
count=$(sed -n '1p' "$1")
echo $count
#count变量+1
let "count=count+"1""
#重新设置第一行数据
sed -i "1c\ $count" $1
echo count:$count
#判断连续发生次数是否超过总数
if [ ${count} -le $4 ]; then
#第一邮箱是发送者,其他的邮箱是接受者,发送者需要在Linux环境下设置。mail设置链接:http://my.oschina.net/u/2473136/blog/608149
echo -e '(本邮件是程序自动下发的,请勿回复!)\n\n' $5 '\n' $cnt | mail -s "警告:$5" -r fasongzheyouxiang@163.com shoujianrenyouxiang@163.com xxxx@163.com
echo "$5发送邮件"
else
# 重新设置第一行,第二行数据
sed -i '1c\0' $1
sed -i '2c\1' $1
echo "$5连续3次,30分钟后再发送邮件"
fi
echo $result
fi
#停止时间处理
elif [ ${total} -le $3 ];then
total=$(sed -n '2p' "$1")
let "total=total+"1""
sed -i "2c\ $total" $1
echo $total
else
sed -i '2c\0' $1
echo "重新监测服务"
fi
}
#邮件标题
title="商家后台服务异常"
#获取商家后台接口请求成功参数
result=$(curl -d "username=XXXXXX&password=XXXXX" "$BASEURL/m/auth/login.do")
#商家后台接口请求,获取https状态码
http=$(curl -o /dev/null -s -w %{http_code} -d "username=XXXXXX&password=XXXXXX" "$BASEURL/m/auth/login.do")
#商家后台服务监测
monitoring_server $COUNT $http $NUM $NUMBER $title $result
#邮件标题
Apptitle="商家App服务异常"
#获取商家APP接口请求成功参数
AppResult=$(curl -H "Content-type: application/json" -d '{"username":"XXXXXXX","password":"XXXXX","imei":"a707644c-3f25-4abe-bb48-8d64ea49d1ea","deviceCode":"867271029123113"}' "$BASEURL/merchantuser/login.do")
#商家APP接口请求,获取https状态码
App_http=$(curl -o /dev/null -s -w %{http_code} -H "Content-type: application/json" -d '{"username":"XXXXXX","password":"XXXXXX","imei":"a707644c-3f25-4abe-bb48-8d64ea49d1ea","deviceCode":"867271029123113"}' "$BASEURL/merchantuser/login.do")
#商家App服务监测
monitoring_server $APPCOUNT $App_http $NUM $NUMBER $Apptitle $AppResult
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。
上一篇:10个实用的PHP代码片段
下一篇:基于jquery的文字向上跑动