python微信告警脚本

已经测并且已经可以正常使用。

 

#!/usr/bin/python
#_*_coding:utf-8 _*_
import urllib,urllib2
import json
import sys
import simplejson
import argparse
import os
import datetime
import logging

 

reload(sys)
sys.setdefaultencoding(‘utf-8’)

corpid = ‘xxxxxxxx’ #CorpID是企业号的标识
corpsecret = ‘xxxxxxxxxxxxxxxxxxxxxxxxxxxx’ #corpsecretSecret是管理组凭证密钥
logpath = ‘/var/log/zabbix/wechat’
def gettoken(corpid,corpsecret):
gettoken_url = ‘https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=’ + corpid + ‘&corpsecret=’ + corpsecret
print gettoken_url
global gettoken_error
try:
token_file = urllib2.urlopen(gettoken_url)
except urllib2.HTTPError as e:
gettoken_error = e.read().decode(“utf8”)
print e.code
print gettoken_error
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,subject,content):

send_url = ‘https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=’ + access_token
send_values = {
“touser” : user, #企业号中的用户帐号,在zabbix用户Media中配置,如果配置不正常,将按部门发送。
# “toparty”:”2″, #企业号中的部门id。
“msgtype”:”text”, #消息类型。
“agentid”:”1000002″, #企业号中的应用id。
“text”:{
“content”:subject + ‘\n’ + content
},
“safe”:”0″
}
# send_data = json.dumps(send_values, ensure_ascii=False)

global sender_error
global sendstatus
try:
send_data = simplejson.dumps(send_values, ensure_ascii=False).encode(‘utf-8’)
send_request = urllib2.Request(send_url, send_data)
response = json.loads(urllib2.urlopen(send_request).read())
print str(response)
sendstatus = True
except Exception,e:
sender_error = str(e)
print sender_error
sendstatus = False

def logwrite(sendstatus,user,content,logpath):
if not sendstatus:
content = sender_error

if not os.path.isdir(logpath):
os.makedirs(logpath)

t=datetime.datetime.now()
daytime = t.strftime(‘%Y-%m-%d’)
daylogfile= logpath+’/’+str(daytime) + ‘.log’
logging.basicConfig(filename=daylogfile,level=logging.DEBUG)
logging.info(‘*’*130)
logging.debug(str(t)+’ wechat send to {0},content is: \n {1}’.format(user,content))
if __name__ == ‘__main__’:
parser = argparse.ArgumentParser(description=’Send mail to user for zabbix alerting’)
parser.add_argument(‘send_to’,action=’store’,help=’The user of the info that send to user ‘)
parser.add_argument(‘subject’,action=’store’,help=’The subject of the info ‘)
parser.add_argument(‘content’,action=’store’,help=’The content of the info’)

args = parser.parse_args()
user = str(sys.argv[1]) #zabbix传过来的第一个参数
subject = str(sys.argv[2]) #zabbix传过来的第二个参数
content = str(sys.argv[3]) #zabbix传过来的第三个参数
accesstoken = gettoken(corpid,corpsecret)
senddata(accesstoken,user,subject,content)
logwrite(sendstatus,user,content,logpath)

你可能感兴趣的:(python微信告警脚本)