利用shell脚本监听服务是否正常运行,如果服务停止,发送邮件通知
#!/bin/sh
#被监控服务器、端口列表
server_all_list=(
192.168.78.128:8088/springbootdemo1/
localhost:8081/springbootdemo/
localhost:8087/springboot2/
)
#定义时间
date=$(date -d "today" +"%Y-%m-%d %H:%M:%S")
#定义邮箱发送
send_msg_to_interface()
{
if [[ $2 = "0" ]] || [[ $2 = "2" ]]; then
#保存日志文件
echo "`date +'%Y-%m-%d %H:%M:%S'` $1 ">> http_down.log
#发送邮箱
sendEmail -f xiaoxues@dlax.com.cn -t xiaoxues@dlax.com.cn -s smtp.exmail.qq.com -u "from cacti" -xu xiaoxues@dlax.com.cn -xp 密码 -o message-charset=utf-8 -m $1
fi;
}
server_all_len=${#server_all_list[*]}
i=0
#定义循环端口列表
while [ $i -lt $server_all_len ]
do
#awk是一个强大的文本分析工具,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。
#-F指定域分隔符为':'
#获取服务器ip地址
server_ip=$(echo ${server_all_list[$i]} | awk -F ':' '{print $1}')
#获取端口号码和项目名称
server_port=$(echo ${server_all_list[$i]} | awk -F ':' '{print $2}')
#获取项目访问地址
RETURN=`curl -o /dev/null -s -w "%{http_code}" "${server_all_list[$i]}"`
#定义消息变量
server_message=" "
#判断项目是否访问正常
if [ $RETURN == '200' ];then
#status: 0,http down 1,http ok 2,http down but ping ok
status=1
echo "服务器${server_ip},端口号项目名称${server_port}能够正常访问!";
server_message="服务器${server_ip},端口${server_port}能够正常访问!";
else
status=0
echo "服务器${server_ip}, 端口号项目名称${server_port}无法访问!";
server_message="服务器${server_ip},端口${server_port}无法访问!时间${date}";
fi
#邮箱的消息体
send_msg_to_interface "${server_message}" "${status}";
let i++
done
利用sendEmail发送报警邮件:
利用sendEmail发送报警邮件:
cd /opt
wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz
tar -zxvf sendEmail-v1.56.tar.gz
cd sendEmail-v1.56
cp sendEmail /usr/local/bin
chmod +x /usr/local/bin/sendEmail
#sendEmail使用方法
sendEmail -f 邮箱 -t 邮箱 -s smtp.163.com -u "from cacti" -xu 邮箱 -xp 密码 -o message-charset=utf-8 -m “测试邮件发送”
#解释:-f 表示发送者的邮箱
-t 表示接收者的邮箱
-s 表示SMTP服务器的域名或者ip
-u 表示邮件的主题
-xu 表示SMTP验证的用户名
-xp 表示SMTP验证的密码(注意,这个密码貌似有限制,例如我用d!5neyland就不能被正确识别)
-m 表示邮件的内容如果你不带-m参数的话,就会提示你自行输入
-o 文本信息字符集,如不加这一项,发送的中文信息就会变成乱码
把原脚本中的
curl -m 600 -d username=${telnum} -d password=${passwd} -d sendto=13500000000 -d message=$1 http://sms.api.bz/fetion.php
修改为:
sendEmail -f 12121312313131@163.com -t 12121312313131@163.com -s smtp.163.com -u "from cacti" -xu 12121312313131@163.com -xp 密码 -o message-charset=utf-8 -m $1