博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
接入邮件和微信提供报警信息服务
阅读量:6397 次
发布时间:2019-06-23

本文共 5267 字,大约阅读时间需要 17 分钟。

Linux中使用Shell把报警信息发送至邮件和微信上

创建企业微信报警

注册一个企业微信号

点击,进行企业注册。

接入邮件和微信提供报警信息服务

注册成功后会看到企业信息页面,把企业ID先记录下来,后面发送报警脚本里需要配置。

接入邮件和微信提供报警信息服务

创建一个部门,专供发送报警用,并添加需要接收报警的成员

点击“通讯录”,再点击+号,选择添加部门

接入邮件和微信提供报警信息服务

把部门ID记录下来,后面配置web端用户报警媒介的收件人要用到。

接入邮件和微信提供报警信息服务

给刚创建的部门添加成员,可以直接添加成员也可以微信邀请,可以先将管理员微信添加进来。

新增一个第三方应用

点击应用与小程序-创建应用

接入邮件和微信提供报警信息服务

可见范围那里选择刚才添加的那个部门。

将AgentId和Secret记录下来,发送脚本里需要配置

接入邮件和微信提供报警信息服务

邮箱设置

配置mail.rc

cat >>/etc/mail.rc<

报警脚本

我在这里只是举个实例,具体的监控报警事件,请以实际为准。

如:在生产环境下批量检测Web服务是否正常,最多检查三次,并且发送相关邮件或微信报警信息。

以用户的形式发送信息,Shell代码如下:

# cat web_server_user.sh#!/bin/bash#定义脚本存放路径path=/tmp/scripts#定义邮件列表,以空格隔开MAIL_GROUP="175xxxxxx45@163.com"#定义日志路径LOG_FILE="/tmp/scripts/web_check.log"###send message from weixin for monitoring###CropID='wwxxxxxx061'  # 企业ID(AgentId)Secret='m-v-x6BxxxxxxxxxxxxXmQMfw'GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CropID&corpsecret=$Secret"Gtoken=$(/usr/bin/curl -s -G $GURL | awk -F \" '{print $10}')PURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$Gtoken"#创建目录[ ! -d "$path" ] && mkdir -p $path#定义URL列表函数function UrlList(){    cat >$path/domain.list<
/dev/null 2>&1 if [ $? -ne 0 ];then let FAILCOUNT+=1 else ##返回值是0,则表示访问URL成功,跳出for循环,不做3次检测了 break fi done ##将失败次数作为返回值,返回函数外的脚本中 return $FAILCOUNT}#定义邮件函数function Mail(){ local SUBJECT_CONTENT=$1 for MAIL_USER in $(echo $MAIL_GROUP) do #发送邮件 mail -s "${SUBJECT_CONTENT}" ${MAIL_USER} < ${LOG_FILE} done}#定义微信函数function WeiXin(){ local int AppID=1000002 # 企业号中的应用id #local UserID="${cat $path/weixin_user.txt}" # 部门成员id,企业微信中定义的微信接收者 local UserID="@all" # 企业微信APP中的全部报警用户 #local PartyID=$2 # 部门id,定义了范围,组内成员都可接收到消息 local Msg=$(cat ${LOG_FILE}) # 过滤出企业微信中传递的第三个参数 printf '{\n' # printf '\t"touser": "'$UserID'",\n' printf '\t"touser": "'"$UserID"\","\n" #printf '\t"toparty": "$PartyID",\n' printf '\t"msgtype": "text",\n' printf '\t"agentid": "'$AppID'",\n' printf '\t"text": {\n' ##printf '\t\t"content": "'$Msg'"\n' printf '\t\t"content": "'"$Msg"\""\n" printf '\t},\n' printf '\t"safe":"0"\n' printf '}\n'}#定义发送信息函数function SendMsg(){ if [ $1 -ge 3 ];then RETVAL=1 NOW_TIME=$(date +"%Y-%m-%d %H:%M:%S") SUBJECT_CONTENE="$2 is error,${NOW_TIME}." echo -e ${SUBJECT_CONTENE}|tee ${LOG_FILE} #发送邮件报警 Mail ${SUBJECT_CONTENE} #发送微信报警 #for $weixin in $(cat $path/weixin_user.txt) #do curl --data-ascii "$(WeiXin)" $PURL printf '\n' echo "over!" # done else echo "http://$2 is ok" RETVAL=0 fi return $RETVAL}#定义主函数function main(){ UrlList for url in $(cat $path/domain.list) do CheckUrl $url SendMsg $? $url done }main

以用户组的形式发送信息,Shell代码如下:

cat web_server_group.sh#!/bin/bash#定义脚本存放路径path=/tmp/scripts#定义邮件列表,以空格隔开MAIL_GROUP="175xxxxxx45@163.com"#定义日志路径LOG_FILE="/tmp/scripts/web_check.log"###send message from weixin for monitoring###CropID='wwxxxxxxxxx8061'Secret='m-v-xxxxxxxxxxxxxxxXmQMfw'GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CropID&corpsecret=$Secret"Gtoken=$(/usr/bin/curl -s -G $GURL | awk -F \" '{print $10}')PURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$Gtoken"#创建目录[ ! -d "$path" ] && mkdir -p $path#定义URL列表函数function UrlList(){    cat >$path/domain.list<
/dev/null 2>&1 if [ $? -ne 0 ];then let FAILCOUNT+=1 else ##返回值是0,则表示访问URL成功,跳出for循环,不做3次检测了 break fi done ##将失败次数作为返回值,返回函数外的脚本中 return $FAILCOUNT}#定义邮件函数function Mail(){ local SUBJECT_CONTENT=$1 for MAIL_USER in $(echo $MAIL_GROUP) do #发送邮件 mail -s "${SUBJECT_CONTENT}" ${MAIL_USER} < ${LOG_FILE} done}#定义微信函数function WeiXin(){ local int AppID=1000002 # 企业号中的应用id #local UserID="${cat $path/weixin_user.txt}" # 部门成员id,企业微信中定义的微信接收者 #local UserID="@all" # 企业微信APP中的全部报警用户 local PartyID=4 # 部门id,定义了范围,组内成员都可接收到消息 local Msg=$(cat ${LOG_FILE}) # 过滤出企业微信中传递的第三个参数 printf '{\n' printf '\t"touser": "'"$UserID"\","\n" printf '\t"toparty": "'"$PartyID"\","\n" printf '\t"msgtype": "text",\n' printf '\t"agentid": "'$AppID'",\n' printf '\t"text": {\n' ##printf '\t\t"content": "'$Msg'"\n' printf '\t\t"content": "'"$Msg"\""\n" printf '\t},\n' printf '\t"safe":"0"\n' printf '}\n'}#定义发送信息函数function SendMsg(){ if [ $1 -ge 3 ];then RETVAL=1 NOW_TIME=$(date +"%Y-%m-%d %H:%M:%S") SUBJECT_CONTENE="$2 is error,${NOW_TIME}." echo -e ${SUBJECT_CONTENE}|tee ${LOG_FILE} #发送邮件报警 Mail ${SUBJECT_CONTENE} #发送微信报警 #for $weixin in $(cat $path/weixin_user.txt) #do curl --data-ascii "$(WeiXin)" $PURL printf '\n' echo "over!" # done else echo "http://$2 is ok" RETVAL=0 fi return $RETVAL}#定义主函数function main(){ UrlList for url in $(cat $path/domain.list) do CheckUrl $url SendMsg $? $url done }main

报警测试

微信报警截图

接入邮件和微信提供报警信息服务

邮件报警截图

接入邮件和微信提供报警信息服务

设置定时任务

# crontab -l*/3 * * * * /bin/sh /tmp/web_server_group.sh &>/dev/null # 每隔三分钟检查一次

转载于:https://blog.51cto.com/wutengfei/2315884

你可能感兴趣的文章
Vim替换查找
查看>>
如何用sysbench做好IO性能测试
查看>>
利用线性回归模型进行卫星轨道预报
查看>>
懒加载和预加载
查看>>
前端面试题
查看>>
Python的赋值、浅拷贝、深拷贝
查看>>
用python操作mysql数据库(之代码归类)
查看>>
ArcGIS Server 10.1 SP1连续查询出现Unable to complete operation错误
查看>>
执行./configure报checking for g++... no错误
查看>>
Dojo学习笔记(十一):Dojo布局——嵌套样例
查看>>
Appium for Android元素定位方法
查看>>
pfSense LAGG(链路聚合)设置
查看>>
教学思路SQL之入门习题《学生成绩》 七.存储过程基础知识
查看>>
createrepo 无法使用解决
查看>>
.net安全类库
查看>>
tablespace backup模式一个没用的技术
查看>>
PostgreSQL安装
查看>>
七牛实时音视频云视频连线demo(web部分)
查看>>
Mysql 权限
查看>>
Spring事务管理(详解+实例)
查看>>