毕业设计之zabbix+微信企业号报警
需要自己申请一个微信企业号
创建应用
AgentId 1000003 Secret SOI8b20G96yUVM29K02-bP5N5o6dovwSF2RrDaXHJNg 企业ID(自己再企业信息里面看) ww2cfb5ed7f795b600
这里使用python3所以,先升级:
安装依赖包yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel 现在源码包: wget http://mirrors.sohu.com/python/3.6.6/Python-3.6.6.tgz 解压安装即可 需要进行下面的步骤: 备份原来的额版本 mv /usr/bin/python /usr/bin/python2.6 软连接 ln /usr/local/python3/bin/* /usr/bin/
可能之后使用yum的时候回出现错误
所以:
修改yum命令文件
vim /usr/bin/yum
[root@ansz.quan.bbs ~]$vim /usr/bin/yum #!/usr/bin/python2.6 改成python2.6所在的路径
编写报警脚本:
[root@ansz.quan.bbs alertscripts]$cat weixin.call.py #!/usr/bin/python3 # -*- coding: utf-8 -*- import requests import json import sys import os import time # 企业号及应用相关信息 CORP_ID = 'ww2cfb5ed7f795b600' CORP_SECRET = 'SOI8b20G96yUVM29K02-bP5N5o6dovwSF2RrDaXHJNg' AGENT_ID = 1000003 # access_token 请求地址 ACCESS_TOKEN_REQUEST_URL = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken' # 发送应用消息请求地址 SEND_MESSAGES_REQUEST_URL = 'https://qyapi.weixin.qq.com/cgi-bin/message/send' # 获取 access_token def get_access_token(): get_token_url = '{}?corpid={}&corpsecret={}'.format(ACCESS_TOKEN_REQUEST_URL, CORP_ID, CORP_SECRET) r = requests.get(get_token_url).json() access_token = r['access_token'] return access_token # 发送应用消息 def main(): access_token = get_access_token() i = 0 while i < 3: try: user = sys.argv[1] #subject = sys.argv[2],微信报警中没作用,因为微信没有所谓的主题 message = sys.argv[3] send_message_url = '{}?access_token={}'.format(SEND_MESSAGES_REQUEST_URL, access_token) message_params = {#"touser": "QQQ",这个是发给特定的人, "toparty": "2", #发给特定的组,这里是组id,发给全部人。一般与上一个不同时使用 "msgtype": "text", "agentid": AGENT_ID, "text": {"content": message}, "safe": 0 } r = requests.post(send_message_url, json=message_params, timeout=5) r = r.json() if r['errmsg'] == 'ok': break else: access_token = get_access_token() except Exception as e: print(e) i += 1 time.sleep(2) if __name__ == '__main__': main()
解析:
ACCESS_TOKEN_REQUEST_URL = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken'
在下图可以知道
get_token_url = '{}?corpid={}&corpsecret={}'.format(ACCESS_TOKEN_REQUEST_URL, CORP_ID, CORP_SECRET) 格式很明显就知道是怎么样子了 https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=ww2cfb5ed7f795b600&corpsecret=SOI8b20G96yUVM29K02-bP5N5o6dovwSF2RrDaXHJNg
脚本中使用get去得到的是
{'errcode': 0, 'errmsg': 'ok', 'access_token': 'PJO2LhBqZu_FLCZSmmj-Us-XlHWADTaj3h5wmw5zjNlLaT3tU74OPRAVQy9YNCSfrvZhvC_fILbnQdBQ_AZ3faykLRdixkO7P35ihW4ct1OQix7R1Tp6DRoZdSo69d3u50X3WI1y_CnatAmPMspruEEsi6lsVlwpZa3KeXBohclEWRcvtRutAc9US2cCMeaJCkRTBveuKIvtczFoIBZLMg', 'expires_in': 7200}
# 发送应用消息请求地址
SEND_MESSAGES_REQUEST_URL =
web端添加报警媒介和动作就行,媒介选执行脚本的方式,并确定自己要发给企业微信里面的谁
或者直接发送给到哪个组
最终结果: