文档章节

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

04zhujunjie
 04zhujunjie
发布于 2016/01/28 11:53
字数 729
阅读 171
收藏 14

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



© 著作权归作者所有

共有 人打赏支持
04zhujunjie
粉丝 6
博文 71
码字总数 9272
作品 0
广州
ubuntu下的tomcat监控脚本

前提 1、需要服务器中安装sendemail以及mailutils插件,具体操作请转度娘 2、需要使用cron添加定时任务,我设置的是每三分钟执行一次 3、执行脚本会出现发送太慢或发送失败的情况,这是因为邮...

菜鸟一直在成长
2016/09/06
18
0
Shell编程基础篇-下

1.1 条件表达式 1.1.1 文件判断 常用文件测试操作符 常用文件测试操作符 说明 -d文件,d的全拼为directory 文件存在且为目录则为真,即测试表达式成立 -f文件,f的全拼为file 文件存在且为普...

侯召顺
2017/12/08
0
0
30道shell编程题目

题目出自:http://oldboy.blog.51cto.com/2561410/1632876 提供自己做的答案,仅供学习测试用。 企业面试题1:(生产实战案例):监控MySQL主从同步是否异常,如果异常,则发送短信或者邮件给...

出VU时代
2016/09/25
0
0
开发自己的监控系统一、email篇

前言: 随着维护服务器量的增多,越来越觉得监控的重要性。监控,就是运维人员的眼睛,没有了监控,你不知道磁盘是否满了,网络流量是否超标,甚至服务器是否宕机。监控的重要性不言而喻。市...

cszer
2013/06/09
0
3
渗透测试案例之使用”组合拳”突破防火墙限制

     年底了,在整理文档时,突然想起之前做过的一个利用Linux计划任务服务和基于ICMP协议封装的Shell,以及其他知识点和技巧的突破防火墙限制的渗透测试案例,除了它的特殊性外(下文会...

嘶吼RoarTalk
01/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

TypeScript基础入门之JSX(二)

转发 TypeScript基础入门之JSX(二) 属性类型检查 键入检查属性的第一步是确定元素属性类型。 内在元素和基于价值的元素之间略有不同。 对于内部元素,它是JSX.IntrinsicElements上的属性类型...

durban
27分钟前
0
0
AVA中CAS-ABA的问题解决方案AtomicStampedReference

了解CAS(Compare-And-Swap) CAS即对比交换,它在保证数据原子性的前提下尽可能的减少了锁的使用,很多编程语言或者系统实现上都大量的使用了CAS。 JAVA中CAS的实现 JAVA中的cas主要使用的是...

码代码的小司机
29分钟前
1
0
Android JNI开发系列(十三) JNI异常处理

JNI 异常处理 JNI异常与JAVA处理异常的区别 JAVA 有异常处理机制,而JNI没有 如果JAVA中异常没有捕获,后面的代码不会执行,JNI会执行 JAVA编译时的异常,是在方法显示的声明了某一个异常,编...

蔡小鹏
42分钟前
2
0
简单介绍Java 的JAR包、EAR包、WAR包区别

WAR包 WAR(Web Archive file)网络应用程序文件,是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件。War专用于Web方面。大部分的JAVA WEB工程,都是打成WAR包进行发布的。 War是...

Linux就该这么学
今天
1
0
Qt那些事0.0.7

在帮助文档(Overview - QML and C++ Integration)中随缘遇到一张图,是关于C++对象与QML整合介绍的,值得标记下来,虽然大部分功能也有所涉猎,但是还是留个记号,万一哪天我失忆了还想写Q...

Ev4n
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部