shell脚本监测mysql数据库连接是否异常

#!/bin/bash

#计数文件路径

COUNT150="xxxx/xxxx/xxxxxx/xxx"

#控制邮件发送次数

NUMBER=3

#控制停止时间

NUM=7

monitoring_mysql(){


  if [ ! -f $1 ] ;then

touch $1

#插入数据

echo "0" > $1

#在第一行下面插入0,

sed -i '1a\0' $1

#sed -i '2a\0' $1

#sed -i '3a\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

 cmd="select count(1) from 数据库.表名"

#获取数据库表里面个数,

 cnt=$(mysql -h$2 -u用户名 -p密码 -s -e "${cmd}")

 echo "Current count is : ${cnt}"

 count=${cnt}

echo $count

if [ $count -gt "0" ];then

  #登录成功后,将第一行数设置为0

  sed -i '1c\0' "$1"

  echo "服务正常"

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 [email protected] [email protected] [email protected]

      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

exit

}


#邮件标题

title_150="mysql连接异常"

#ip

ip_150=xxx.xxx.xxx.xxx

monitoring_mysql $COUNT150 $ip_150 $NUM $NUMBER $title_150


#需要根据自己需要,填写服务器IP,计数文件路径,mysql的用户和密码,mysql里数据库和表格,发送人邮箱和收件人邮箱


你可能感兴趣的:(数据库,mysql,shell,异常,监测)