毕业设计之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端添加报警媒介和动作就行,媒介选执行脚本的方式,并确定自己要发给企业微信里面的谁

或者直接发送给到哪个组

 

 

最终结果:

 

posted @ 2020-03-13 10:22  linux——quan  阅读(277)  评论(0编辑  收藏  举报