前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >shell脚本实现微信告警——WGCLOUD

shell脚本实现微信告警——WGCLOUD

原创
作者头像
那年十八
修改2021-11-15 09:39:27
1.2K0
修改2021-11-15 09:39:27
举报
文章被收录于专栏:开源运维解决方案

本文是在linux系统用shell方式实现WGCLOUD微信告警,windows系统实现微信告警点击此处

1.首先我们要去注册企业微信了,然后创建一个应用,记得以下图片中的标红信息,企业ID,应用ID,应用Secret

2.新建一个/home/weixin.sh文件,此处目录和文件名称是为测试方便,自己可以根据实际场景自定义,内容如下

代码语言:javascript
复制
#!/bin/bash
# -*- coding: utf-8 -*-
###SCRIPT_NAME:weixin.sh###
###send message from weixin for monitoring###
###leo###
content=${@:1}
content=${content//\<font color=\'red\'\>/}
content=${content//\<\/font\>\<\/br\>/}
content=${content//\ /}
time3=$(date "+%H:%M:%S")
content="$time3,$content"
echo "告警信息 : $content"
  
#echo "warn content is : $content" >> ./warn.log
  
 CropID='微信企业ID'
 Secret='微信企业应用Secret'
 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"
 function body() {
   local int AppID=XXXXX           # 企业号中的应用id
   local UserID='XXXXXXX'            # 部门成员id,微信接收者,多个接收者用竖杠|隔开
   #local PartyID=$2            # 部门id,定义了范围,组内成员都可接收到消息
    
   local Msg="WGCLOUD告警:$1"
   Msg=${Msg//\"/}
   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},\n'
   printf '\t"safe":"0"\n'
   printf '}\n'
 }
 #body $content
 curl --data-ascii "$(body $content)" $PURL
 printf '\n'
 echo "over!"

部门成员ID查看方式如下图,鼠标放在成员名字上即可看到账号,即是成员ID

3.cli 测试

记得先给weixin.sh添加可执行权限

代码语言:javascript
复制
chmod +x weixin.sh

然后测试下微信能否收到测试消息

代码语言:javascript
复制
/home/weixin.sh "测试"

4.测试完成,修改/server/config/application.yml

代码语言:javascript
复制
#告警脚本文件完整路径,注意是完整的路径,可以为空,参考:/server/template/sendMsg.sh
  warnScript: /home/weixin.sh

5.好了,重启server,这样就可以在微信收到告警消息了

6.注意windows编辑shell脚本后,上传到linux下执行可能出现\r错误

因为Windows系统中的换行符是**\n\r**,Linux系统中的换行符是**\n**,因此需要将**\r**替换为空白。

运行如下命令即可

代码语言:javascript
复制
sed -i 's/\r$//' /home/weixin.sh

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档