首先看下微信的脚本
#!/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 '{ ' printf ' "touser": "'"$UserID""", " printf ' "toparty": "'"$PartyID""", " printf ' "msgtype": "text", ' printf ' "agentid": "'" $AppID """, " printf ' "text": { ' printf ' "content": "'"$Msg""" " printf ' }, ' printf ' "safe":"0" ' printf '} ' } /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 '{ ' printf ' "touser": "'"$UserID""", " printf ' "toparty": "'"$PartyID""", " printf ' "msgtype": "text", ' printf ' "agentid": "'"$AppID""", " printf ' "text": { ' printf ' "content": "'"$Msg""" " printf ' }, ' printf ' "safe":"0" ' printf '} ' } /usr/bin/curl --data-ascii "$(body $1 $2 $3)" $PURL