本文共 5267 字,大约阅读时间需要 17 分钟。
点击,进行企业注册。
注册成功后会看到企业信息页面,把企业ID先记录下来,后面发送报警脚本里需要配置。
点击“通讯录”,再点击+号,选择添加部门
把部门ID记录下来,后面配置web端用户报警媒介的收件人要用到。
给刚创建的部门添加成员,可以直接添加成员也可以微信邀请,可以先将管理员微信添加进来。
点击应用与小程序-创建应用
可见范围那里选择刚才添加的那个部门。
cat >>/etc/mail.rc<
我在这里只是举个实例,具体的监控报警事件,请以实际为准。
如:在生产环境下批量检测Web服务是否正常,最多检查三次,并且发送相关邮件或微信报警信息。
# 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
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