首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >shell编程-每三分钟检测服务器是否异常并邮件通知

shell编程-每三分钟检测服务器是否异常并邮件通知

原创
作者头像
用户1503405
修改2021-10-29 14:07:44
5300
修改2021-10-29 14:07:44
举报
文章被收录于专栏:棒棒小飞人棒棒小飞人

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
命令行工具
腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档