本文共 1415 字,大约阅读时间需要 4 分钟。
#!/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}-eq0];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
echocount:$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
exit
}
#邮件标题
title_150="mysql连接异常"
#ip
ip_150=xxx.xxx.xxx.xxx
monitoring_mysql$COUNT150$ip_150$NUM$NUMBER$title_150
#需要根据自己需要,填写服务器IP,计数文件路径,mysql的用户和密码,mysql里数据库和表格,发送人邮箱和收件人邮箱
转载地址:http://jgrzs.baihongyu.com/