• 使用微信公众号实现监控告警


    一、

    由于微信个人订阅号目前很多功能还没开通,所以采用微信公众平台测试帐号,

    https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login

    用微信扫码登录就可以获得一个自己的微信测试号:

     扫码关注测试账号:


    各种功能接口文档都有提供,可根据需求自行查看

    如果要在线调试接口,需要自己申请一个订阅号,登陆之后,点击开发者工具->在线调试工具

    https://mp.weixin.qq.com/

     

    二、

    上面的准备工作做完了,就可以开始调用接口实现功能了。

    #coding:utf-8
    
    import time
    import datetime
    import os
    import ConfigParser
    import requests
    import json
     
    class MsgToWeiXin(object):
        def __init__(self):
            self._config = ConfigParser.SafeConfigParser()
    #         self._config.read('config.ini')
            batRunningPath = os.path.dirname(os.sys.executable)
            batPath = os.path.dirname(os.sys.path[0])
            if os.path.exists(batPath + "MsgToWeiXinconfig.ini"):
                self._config.read(batPath + "MsgToWeiXinconfig.ini")
            else:
                self._config.read(batRunningPath + "config.ini")
             
            self._access_token = ""
            self._expires_in = 7200
            self._token_getTime = 0
            self._appid = self._config.get("weixin", "appid")
            self._secret = self._config.get("weixin", "secret")
            self._touser = self._config.get("weixin", "touser")
            self._togroup = self._config.get("weixin", "groupid")
            
            datenow = datetime.datetime.now()
            datenow = datenow.strftime("%Y%m%d")
            self._nToDay = datenow
                
            self._msg = ""
                
        def getMsgFromTxt(self):
            datenow = datetime.datetime.now()
            datenow = datenow.strftime("%Y%m%d")
            strFileName = str(datenow) + "_IndexServerInterface.txt"
            print strFileName
            try:
                for line in open(strFileName):
                    if line != "
    ":
                        self._msg += line
                
                return True
            except Exception, e:
                print str(e)
                return False
             
        def get_token(self):
            url = 'https://api.weixin.qq.com/cgi-bin/token'
            values = {
                      'grant_type':'client_credential',
                      'appid' : self._appid ,
                      'secret':self._secret,
               }
            req = requests.get(url, params=values)
            data = req.json()
            self._token_getTime = time.time()
            self._access_token = data["access_token"]
            self._expires_in = data["expires_in"]
         
        def send_msg(self):
            url = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=" + self._access_token
            content = "Date:{0},
    {1} 
    ".format(self._nToDay,self._msg)
            values = {
            "touser" : self._touser ,
            "msgtype":"text",
            "text":{
                "content": content
            }
            }
            #header={"content-Type":"application/json"}
            #req = requests.post(url, data=json.dumps(values),headers=header)
            req = requests.post(url, data=json.dumps(values, ensure_ascii=False))
            result = req.json()
            return result['errcode']
         
        def send_msg_group(self):
            url = "https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_token=" + self._access_token
            content = "Date:{0},
    {1} 
    ".format(self._nToDay,self._msg) 
            values = {
            "filter" : {
                        "is_to_all":False,
                        "group_id":self._togroup,
                        },
            "msgtype":"text",
            "text":{
                "content": content
            }
            }
            #header={"content-Type":"application/json"}
            #req = requests.post(url, data=json.dumps(values),headers=header)
            req = requests.post(url, data=json.dumps(values, ensure_ascii=False))
            result = req.json()
            return result['errcode']
        
    if __name__ == '__main__':
        msgToWX = MsgToWeiXin()
        if True == msgToWX.getMsgFromTxt():   
            if msgToWX._msg != "":
                print msgToWX._msg
            else:
                msgToWX._msg += "指标数据正常"
            msgToWX.get_token()
            if 0 == msgToWX.send_msg():
                print "send success"
            else:
                print "send failed"
        else:
            print "getMsgFromTxt error"
    

      

    Linux下报错:ImportError: No module named 'requests.packages.urllib3'

    解决方法:https://www.cnblogs.com/SZxiaochun/p/9831389.html

  • 相关阅读:
    Mysql之正则匹配
    定时任务之elastic-job概述
    清晰讲解LSB、MSB和大小端模式及网络字节序
    极光消息推送多环境配置
    基于TSUNG对MQTT进行压力测试-测试结果
    基于TSUNG对MQTT进行压力测试-基础概念温习
    阻塞式/非阻塞式与同步/异步的区别
    干货!Jenkins下配置findbugs、pmd及checkstyle实现代码自动检测
    jar包
    java环境变量及Eclipse自动编译问题
  • 原文地址:https://www.cnblogs.com/SZxiaochun/p/6370950.html
Copyright © 2020-2023  润新知