作者 老衲一头秀发


早几年nagios报警还是用飞信机器人发送,现在飞信已经成为历史了.
刚刚出微信订阅号,使用订阅号发送,有个48小时的限制,很是不方便,现在有企业号了,简单的写了个脚本非常方便

# coding=utf-8
from __future__ import unicode_literals
import requests
import sys
import json


# 微信获取token类
class Wechat(object):
    def __init__(self, id, secrect):
        self.url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={id}&corpsecret={secrect}".format(id=id,
                                                                                                          secrect=secrect)

    def get_token(self):
        req = requests.get(self.url)
        token = req.json()['access_token']
        # 默认token7200秒超时,可以自行存储到memcached里
        # expires_in = req.json()['expires_in']
        # mc.set('token',token,expires_in)
        return token


# 发送信息函数
def send_wechat(name, content):
    corpid = ''     #微信企业后台获得
    corpsecret = '' #微信企业后台获得
    wechat = Wechat(corpid,corpsecret)
    token = wechat.get_token()
    send_url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token={TOKEN}'.format(TOKEN=token)
    json_data = {
        'touser':name,   #"@all" = 全员 | zhangsan 张三 通讯录创建时的账号
        'msgtype':'text',
        'agentid': '3',  #应用ID页面中获取
        'text':{
            'content':content, #发送的内容
        },
        'safe':'0'  #是否是保密消息
    }
    req = requests.post(send_url,data = json.dumps(json_data))
    print req.json()

if __name__ == "__main__":
    if len(sys.argv) < 3:
        print "Usage: {self} name conent".format(self=sys.argv[0])
        sys.exit()
    else:
        name = sys.argv[1]
        content = sys.argv[2]
        send_wechat(name,content)