• zabbix 微信报警脚本


     不知道是什么原因直接用Python脚本zabbix无法执行脚本,需要一个shell来启动

    #! /bin/bash
    userid=$1
    content=$2
    python /data/zabbix/alertscripts/weixin.py  $userid $content
    #!/usr/bin/env python
    # _*_ coding:utf8 _*_
    import urllib2
    import simplejson as json
    import sys
    class weChat:
        def __init__(self,url,Corpid,Secret):
            url = '%s/cgi-bin/gettoken?corpid=%s&corpsecret=%s' % (url,Corpid,Secret)
            res = self.url_req(url)
            self.token = res['access_token']
    
        def url_req(self,url,method='get',data={}):
            if method == 'get':
                req = urllib2.Request(url)
                res = json.loads(urllib2.urlopen(req).read())
            elif method == 'post':
                            req = urllib2.Request(url,data)
                            res = json.loads(urllib2.urlopen(req).read())
            else:
                print 'error request method...exit'
                sys.exit()
            return res
        def send_message(self,userlist,content,agentid=1000002):
            self.userlist = userlist
            self.content = content
            url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=%s' % self.token
            data = {
                          "touser": "",
                          "toparty": "",
                          "totag": "",
                          "msgtype": "text",
                          "agentid": "0",
                          "text": {
                              "content": ""
                          },
                          "safe":"0"
                       }
            data['touser'] = userlist
            data['agentid'] = agentid
            data['text']['content'] = content
            data = json.dumps(data,ensure_ascii=False)
        #   print data
            res = self.url_req(url,method='post',data=data)
            if res['errmsg'] == 'ok':
                print 'send sucessed!!!'
            else:
                print 'send failed!!'
                print res
    
    
    
    
    if __name__ == '__main__':
          userlist = sys.argv[1]
    #      userlist = 'ZhangSen'
          content = sys.argv[2:]
          content = '
    '.join(content)
    #      content = 'test1'
          Corpid = 'xxx'  #此处对应修改
          Secret = 'xxx'  #此处对应修改
          url = 'https://qyapi.weixin.qq.com'
    
    wechat = weChat(url,Corpid,Secret)
    wechat.send_message(userlist,content)

     上面这脚本有个问题不能发中文消息,下面这个可以发中文

    #!/usr/bin/python
    # _*_coding:utf-8 _*_
    import urllib2
    import json
    import sys
    
    reload(sys)
    sys.setdefaultencoding('utf-8')
    
    
    def gettoken(corpid, corpsecret):
        gettoken_url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + corpsecret
        try:
            token_file = urllib2.urlopen(gettoken_url)
        except urllib2.HTTPError as e:
            e.code
            e.read().decode("utf8")
            sys.exit()
        token_data = token_file.read().decode('utf-8')
        token_json = json.loads(token_data)
        token_json.keys()
        token = token_json['access_token']
        return token
    
    
    def senddata(access_token, user, party, agent, subject, content):
        send_url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + access_token
        send_values = "{"touser":"" + user + "","toparty":"" + party + "","totag":"","msgtype":"text","agentid":"" + agent + "","text":{"content":"" + subject + content + ""},"safe":"0"}"
        send_request = urllib2.Request(send_url, send_values)
        response = json.loads(urllib2.urlopen(send_request).read())
        print "send sucessed!!!"
        str(response)
    
    
    if __name__ == '__main__':
        user = str(sys.argv[1])  # 参数1:发送给用户的账号,必须关注企业号,并对企业号有发消息权限
        party = str('2')  # 参数2:发送给组的id号,必须对企业号有权限
        agent = str('1000002')  # 参数3:企业号中的应用id
        subject = str('')  # 参数4:标题【消息内容的一部分】
        content = str(sys.argv[2])  # 参数5:文本具体内容
        corpid = 'xxx'  # CorpID是企业号的标识
        corpsecret = 'xxx'   # corpsecretSecret是管理组凭证密钥
        try:
            accesstoken = gettoken(corpid, corpsecret)
            senddata(accesstoken, user, party, agent, subject, content)
        except Exception, e:
            print "error"
            str(e) + "Error Please Check "corpid" or "corpsecret" Config"
  • 相关阅读:
    python使用win32api截图并回收资源
    tesseract-ocr的安装及使用
    python识别图片文字
    Python中CreateCompatibleDC和CreateBitmap造成的内存泄漏
    Python调用windows API实现屏幕截图
    turtle库常用函数
    Python3.6安装turtle模块
    Python中的截屏模块 pyscreenshot
    Python实现屏幕截图的两种方式
    观察者模式(Observer Pattern)
  • 原文地址:https://www.cnblogs.com/37yan/p/6879475.html
Copyright © 2020-2023  润新知