zoukankan      html  css  js  c++  java
  • 微信企业号升级企业微信后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 '{
    '
            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
  • 相关阅读:
    最全负载均衡:算法、实现、亿级负载解决方案详解
    淘宝分布式架构演变案例详解
    分布式一致性协议实现原理
    ReentrantReadWriteLock的使用
    线程之单例
    线程的优先级
    java线程的6种状态
    mybatis <foreach> 标签
    java多线程 上下文切换
    docker的复制和挂载
  • 原文地址:https://www.cnblogs.com/shansongxian/p/6961167.html
Copyright © 2011-2022 走看看