zabbix使用微信报警(四)
https://qy.weixin.qq.com/ 企业号注册
http://qydev.weixin.qq.com/wiki/index.php?title=%E9%A6%96%E9%A1%B5 微信调用接口说明
http://qydev.weixin.qq.com/debug 微信企业号接口调试地址
http://qydev.weixin.qq.com/debug 微信企业号接口调试地址
一、首先申请企业公众号
二、获取AccessToken
使用微信,应该最重要的就是这个了,下面是如何获取他,在他的接口文档中,有说明:
![](https://images2015.cnblogs.com/blog/746846/201707/746846-20170719114950240-241749723.png)
首先测试一下,看通过接口调试工具,如何获取Access_Token: 根据自己的corpid和corpsecret获取AccessToken
![](https://images2015.cnblogs.com/blog/746846/201707/746846-20170719114529927-666415926.png)
会返回一个结果:
![](https://images2015.cnblogs.com/blog/746846/201707/746846-20170719120646115-1451616808.png)
那么如何通过命令行获取呢,那就是根据上面文档的get请求的地址: 执行这条命令就可以获得
/usr/bin/curl -s -G https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=xxxx&corpsecret=xxxx |awk -F\":'{print $4}'|awk -F\" '{print $2}'
获得这个值,然后就可以通过他发送消息了,发送接口说明:把刚刚上面获得的AccessToken传给下面这个红色框框的ACCESS_TOKEN地方
![](https://images2015.cnblogs.com/blog/746846/201707/746846-20170719120100349-1118203142.png)
三、编写脚本,实现微信的发送
部门ID,应用ID,CorpID,Secret,然后根据CorpID和Secret获得access_token,然后根据微信提供的接口文档进行获取就可以了
#!/bin/bash #set -x CorpID="xxxxx" Secret="xxxxx" GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CorpID&corpsecret=$Secret" Token=$(/usr/bin/curl -s -G $GURL |awk -F\":'{print $4}'|awk -F\" '{print $2}') echo $Token PURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$Token" UserID=$1 PartyID=2 agentid=1 Msg=$(echo "$@"|cut -d" "-f1-)
message(){ printf '{\n' printf '\t"touser": "'"$UserID"\"",\n" printf '\t"toparty": "'"$PartyID"\"",\n" printf '\t"msgtype": "text",\n' printf '\t"agentid": "'"$agentid"\"",\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 "$(message $1 $2 $3)" $PURL
这个脚本可以先sh webcat.sh 001 aa bb 先测试一下,看是否成功
这里的message是有格式说明的:
他的发送消息格式一定要按照他的文档要求来
touser:成员ID列表,多个用|分开
toparty:部门ID列表
msgtype:消息的类型text(支持消息型应用跟主页型应用)
agentid:企业应用ID号
content:消息内容
safe:是否保密消息,0表示否,1表示是,默认为0
通俗的话理解:
1)通过get请求地址,根据自己的corid和secret获取Access Token
2)把获取的Access Token传递给post地址的ACCESS_TOKEN参数
3)然后使用规定的文本格式通过curl 发送出去
四:zabbix设置,和添加邮件一样,有几点注意事项
1:添加报警媒介类型,这里的参数是要传递到脚本里去的
![](https://images2015.cnblogs.com/blog/746846/201707/746846-20170719114530865-1304089804.png)
2:用户添加微信报警 收件人写
![](https://images2015.cnblogs.com/blog/746846/201707/746846-20170719114531427-1773522621.png)
3:添加动作,在操作细节的时候选择微信报警
![](https://images2015.cnblogs.com/blog/746846/201707/746846-20170719114531818-929101075.png)
获得的结果:
![](https://images2015.cnblogs.com/blog/746846/201707/746846-20170719121626161-286092182.png)
若发送不成功,首先可以通过zabbix的动作日志看他是否成功
若这里显示的是发送成功,然后又没有收到微信消息,那么很有可能是微信的Access Token的问题,我的办法是重新获取secret
作者:李先生
-------------------------------------------
个性签名:在平凡中坚持前行,总有一天会遇见不一样的自己!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!
万水千山总是情,打赏一分行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主,哈哈哈(っ•̀ω•́)っ✎⁾⁾!
![微信公众号](https://images.cnblogs.com/cnblogs_com/lemon-le/871591/o_w2.png)
![微信打赏](https://www.cnblogs.com/images/cnblogs_com/lemon-le/871591/o_wechat.png)
![微信打赏](https://www.cnblogs.com/images/cnblogs_com/lemon-le/871591/o_zhifubao.png)
微信公众号 微信打赏 支付宝打赏
posted on 2017-07-19 11:46 Captain_Li 阅读(7118) 评论(0) 编辑 收藏 举报