zabbix报警微信接口最新版[python]

想要说的话

铺垫python

本脚本初始版原本自网上,做者不详,有知道能够联系我,让我等认识下
微信中查看代码可能有些错乱,能够移步 https://github.com/zhuima/wechat_for_zabbix/blob/master/zabbix_alert.py

脚本以下,若有疑问能够联系我git

脚本内容github

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Author: zhuima
# Date: 2017-06-21 update V4

"""
一、引入warnings模块,去除urllib3访问https站点的warning信息
二、python正常传参数应该是sys.argv[1] sys.argv[2]
三、zabbix传参的时候应该是sys.argv[2]  sys.argv[3]

"""

import warnings
with warnings.catch_warnings():
    warnings.filterwarnings("ignore",category=DeprecationWarning)
    import requests
    import json
    import sys
    import time

reload(sys)
sys.setdefaultencoding( "utf-8" )

title = sys.argv[1]
content = sys.argv[2]

class Token(object):
    def __init__(self, corpid, corpsecret):
        self.baseurl = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={0}&corpsecret={1}'.format(corpid, corpsecret)
        self.expire_time = sys.maxint

    def get_token(self):
        """
        微信Token过时时间为2小时,天天的请求数不能超过2000次
        这里使用时间戳判断,避免每次请求都去从新获取一次
        requests.packages.urllib3.disable_warnings() 防止ssl类的warnings信息

        >>> qs_token = Token(corpid=corpid, corpsecret=corpsecret).get_token()

        token:

            AVOg9PjnEC9dEl1UIMeAgN5adedkLBo7J538GdLLvvinkmpL356Ic341g2WTasX3EDjc7mf06J7GdkyNI0mUB4dfZhuRsdfgSNT7Sf1v2ceiND1uibTQQLECduF_Omdg8RElKMA_UK5qM4AXwSGGQjLqJdX5ZLWeZ-Af1xCTtLDdoHu75VMVOwvEApbmFcxRYsj0So8FEGXSyH5dxxka-3mvMqYESX_lzEIDSFKHcMr3yd1ZJgRlb7_Ejzq_loVj4sT4B7qtCjOC2PRmuyQ6aRcU0Z55ePLJpoz-8KS4W7Qgzg

        full result:
            {u'access_token': u'AVOg9PjnEC9dEl1UIMeAgN5adedkLBo7J538GdLLvvinkmpL356Ic341g2WTasX3EDjc7mf06J7GdkyNI0mUB4ZsdfsdegSNT7Sf1v2ceiND1uibTQQLECduF_Omdg8RElKMA_UK5qM4AXwSGGQjLqJdX5ZLWeZ-Af1xCTtLDdoHu75VMVOwvEApbmFcxRYsj0So8FEGXSyH5dxxka-3mvMqYESX_lzEIDSFKHcMr3yd1ZJgRlb7_Ejzq_loVj4sT4B7qtCjOC2PRmuyQ6aRcU0Z55ePLJpoz-8KS4W7Qgzg', u'expires_in': 7200, u'errcode': 0, u'errmsg': u'ok'}
        """
        if self.expire_time > time.time():
            requests.packages.urllib3.disable_warnings()
            resp = requests.get(self.baseurl, verify=False)
            ret = resp.json()
            if ret.get('errcode') != 0:
                print  ret.get('errmsg')
                sys.exit(1)
            self.expire_time = time.time() + ret.get('expires_in')
            self.access_token = ret.get('access_token')
        return self.access_token

def send_msg(title, content):
    """
    一、corpid 和 corpsecret要从后台获取
    二、agentid 也是从后台获取

    >>> send_msg("测试", "这个是功能测试")

    result:

        {u'invaliduser': u'', u'errcode': 0, u'errmsg': u'ok'}
    """

    corpid = 'wx91d6csdfsdcd60da'
    corpsecret = '8mAFHPj-RynmOBX05isdfsdfasdfwerdvbaiGyubx4eSeEB7nEwIJSgUpuVlPYV'
    qs_token = Token(corpid=corpid, corpsecret=corpsecret).get_token()
    url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token={0}".format(
        qs_token)
    payload = {
        "touser": "@all",
        "msgtype": "text",
        "agentid": "10",
        "text": {
            "content": "标题:{0}\n内容:{1}".format(title, content)
        },
        "safe": "0"
    }
    requests.packages.urllib3.disable_warnings()
    ret = requests.post(url, data=json.dumps(payload, ensure_ascii=False), verify=False)
    return ret.json()

if __name__ == '__main__':
    #title = "这是测试"
    #content = "豆豆亲笔书写"
    print send_msg(title, content)

本文分享自微信公众号 - 追马Linux(zhuima_k8s)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。json

相关文章
相关标签/搜索