前言

记得刚做运维时候,主管就让我搞zabbix,那时候什么都不懂。当时发现网上大神通过python发送告警信息时候,由于那时还不懂python,便觉得异常厉害。最近有空花了不到半小时就能写出调用类,便感觉其实很多事情你只要用心做就不难。

如果有需要通过微信发告警信息可以申请微信企业号,然后结合脚本可以轻松调用发送告警信息。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# coding:utf-8
import requests
import json

class WechatApi(object):
"""
corpid:每个企业都拥有唯一的corpid,获取此信息可在管理后台“我的企业”-“企业信息”下查看(需要有管理员权限)
secret:secret是企业应用里面用于保障数据安全的“钥匙”,每一个应用都有一个独立的访问密钥,为了保证数据的安全,secret务必不能泄漏。通讯录接口的密钥在“管理工具”-“通讯录同步”里面查看,企业自定义的应用的密钥可以在企业应用的详情里面手动生成
access_token:access_token是企业后台去企业微信的后台获取信息时的重要票据,所有接口在通信时都需要携带此信息用于验证接口的访问权限
官方地址:https://work.weixin.qq.com/api/doc#10087
"""
def __init__(self):
self.__corpid="corpid--xxxxxxxx"
self.__secret="secret--xxxxx"

def Get_access_token(self):
res = requests.get(url="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={id}&corpsecret={secrect}".format(id=self.__corpid,secrect=self.__secret)).json()
return res["access_token"]
###获取部门列表
def Get_department_list(self):
print requests.get(url="https://qyapi.weixin.qq.com/cgi-bin/department/list?access_token={ACCESS_TOKEN}&id={ID}".format(ACCESS_TOKEN=self.Get_access_token(),ID=1)).text

###获取应用列表
def Get_agent_list(self):
print requests.get(
url="https://qyapi.weixin.qq.com/cgi-bin/agent/list?access_token={ACCESS_TOKEN}".format(ACCESS_TOKEN=self.Get_access_token()), ).text

def Get_agent(self):
print requests.get(url="https://qyapi.weixin.qq.com/cgi-bin/agent/get?access_token={ACCESS_TOKEN}&agentid={AGENTID}".format(ACCESS_TOKEN=self.Get_access_token(),AGENTID=2000002),).text

def Send_message(self,data=None):

headers = {'Content-Type': 'application/json'}
print requests.post(url="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token={ACCESS_TOKEN}".format(ACCESS_TOKEN=self.Get_access_token()),headers=headers,data=json.dumps(data)).text


if __name__ == '__main__':
data={
'touser': "@all",
'toparty': "2",
'msgtype': "text",
'agentid': "2",
'text': {
'content': "dddddddddddd"
},
'safe': "0"
}
WechatApi().Send_message(data)

  • 注意

    每个应用对应的secret是不一样的,所以我们在调用时候需要检查”agentid”和”secret”是否一致。

Comments

2017-08-19