将来的你会感谢现在努力的自己,骚年,趁年轻多努力学习 ------ Jasper_boy

微信企业号升级企业微信后zabbix告警发不出去

首先看下微信的脚本

#!/bin/bash
###SCRIPT_NAME:weixin.sh###
###send message from weixin for zabbix monitor###
###wuhf###
###V1-2015-08-25###
 
CropID='wx3173159e4b4e6586'  #修改
Secret='zWdc3sc-BfYUHRm_DR8OEZvSum_3kPb-fD7zEGh72FUdMYXEexQ1-8vGZa2Tb_85' #修改
GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CropID&corpsecret=$Secret" 
Gtoken=$(/usr/bin/curl -s -G $GURL | awk -F\" '{print $4}')
 
PURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$Gtoken"
 
function body() {
        local int AppID=3                       #修改 企业号中的应用id
        local UserID=$1                         # 部门成员id,zabbix中定义的微信接收者
        local PartyID=1                         #修改 部门id,定义了范围,组内成员都可接收到消息
        local Msg=$(echo "$@" | cut -d" " -f3-) # 过滤出zabbix传递的第三个参数
        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'
}
/usr/bin/curl --data-ascii "$(body $1 $2 $3)" $PURL

单独运行脚本报错:

{"errcode":40014,"errmsg":"invalid access_token"}

进入接口调试页面

 

http://qydev.weixin.qq.com/debug

 

由于现在格式变了(由第四列变成了第10列),于是将$4改为$10,再次运行脚本还有错误:

修改为$10

执行脚本报错

{"errcode":-1,"errmsg":"Invalid input"}

发现唯一有异常的地方是agentid列有空格,试着将空格删除,再次运行脚本成功了。

升级前是允许有空格的升级后发送格式中不允许有空格。

 正常脚本如下

#!/bin/bash
###SCRIPT_NAME:weixin.sh###
###send message from weixin for zabbix monitor###
###wuhf###
###V1-2015-08-25###
 
CropID='wx3173159e4b4e6586'  #修改
Secret='zWdc3sc-BfYUHRm_DR8OEZvSum_3kPb-fD7zEGh72FUdMYXEexQ1-8vGZa2Tb_85' #修改
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=3                       #修改 企业号中的应用id
        local UserID=$1                         # 部门成员id,zabbix中定义的微信接收者
        local PartyID=1                         #修改 部门id,定义了范围,组内成员都可接收到消息
        local Msg=$(echo "$@" | cut -d" " -f3-) # 过滤出zabbix传递的第三个参数
        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'
}
/usr/bin/curl --data-ascii "$(body $1 $2 $3)" $PURL

 

posted @ 2017-06-08 09:29  Jasper_boy  阅读(326)  评论(0编辑  收藏  举报