通过Python脚本给微信企业号推送消息

说明:最新在做告警这一块儿工作,将告警信息通过脚本发送到微信企业号,让相关的人员第一时间接收告警信息。

代码块

<code># _*_coding:utf-8 _*_
import urllib2
import json
import os,sys
import getopt
import platform

#定义日志文件
import logging
from logging.handlers import RotatingFileHandler

#创建日志目录
path=os.path.dirname(os.path.abspath(__file__))
logdirs=os.path.join(path,'logs')
if os.path.isdir(logdirs) is False:
os.makedirs(logdirs)
logfile=os.path.join(logdirs,'wxlog')

#设置系统编码
reload(sys)
system_platform=str(platform.system()).lower()
if system_platform == 'windows':
sys.setdefaultencoding('gb18030')
else:
sys.setdefaultencoding('utf8')


logger = logging.getLogger(__name__)
logger.setLevel(level = logging.INFO)
#定义一个RotatingFileHandler,最多备份3个日志文件,每个日志文件最大100M
rHandler = RotatingFileHandler(logfile,maxBytes = 1*1024*1024*100,backupCount = 7)
rHandler.setLevel(logging.INFO)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
rHandler.setFormatter(formatter)
console = logging.StreamHandler()
console.setLevel(logging.INFO)
console.setFormatter(formatter)
logger.addHandler(rHandler)
logger.addHandler(console)

class wxmsg:
def __init__(self,username,party,agentid,content):
self.username=username #用户账户

self.party=party #组id
self.agentid=agentid #应用id
self.content=content #内容正文
self.corpid = '' #企业ID,必须
self.corpsecret = '' #应用密钥,必须
self.logger=logger

def gettoken(self):
gettoken_url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=%s&corpsecret=%s' % (self.corpid,self.corpsecret)
try:
token_file = urllib2.urlopen(gettoken_url)
token_data = token_file.read().decode('utf-8')
token_json = json.loads(token_data)
self.logger.info(token_json)
token = token_json.get('access_token')
return token
except Exception,e:
self.logger.error(str(repr(e)))
return None

def senddata(self):
access_token=self.gettoken()
if access_token is None:
self.logger.error('Get Token is Failed')
sys.exit(1)
send_url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=%s' % access_token
send_values = '''{
"touser":"%s",
"toparty":"",
"totag":"",
"msgtype":"text",
"agentid":"%s",
"text":{"content":"%s"},
"safe":"0"
}''' % (self.username,self.agentid,self.content)
self.logger.info(send_values)
send_request = urllib2.Request(send_url,send_values)
response = json.loads(urllib2.urlopen(send_request).read())
self.logger.info(response)

if __name__ == '__main__':
user = '' # 用户账户,必须
party = '' #发送给组的id号,必须对企业号有权限,非必须
agent = '' # 应用id,必须
content = '' # 消息内容,必须

opts,args = getopt.getopt(sys.argv[1:],'-h-u:-p:-a:-c:',['help','user=','party=','agentid=','content='])
for k,v in opts:
if k in ('h','--help'):
print "帮助"
sys.exit(0)
if k in ('-u','--user'):
user=v
if k in ('-p','--party'):
party=v
if k in ('-a','--agentid'):
agent=v
if k in ('-c','--content'):
content=v
if user is None or user == '':
print 'User is Null.'
sys.exit(1)
if agent is None or agent == '':
print 'AgentId is Null.'
sys.exit(1)
if len(content) == 0:
print 'Content is Null.'
sys.exit(1)
if system_platform == 'windows':
content=str(content).encode('utf8').decode('gb18030')
wxmsg=wxmsg(username=user,party=party,agentid=agent,content=content)
try:
wxmsg.senddata()
except Exception, e:
print repr(str(e))/<code>

相关信息获取

  1. 企业ID获取


通过Python脚本给微信企业号推送消息


通过Python脚本给微信企业号推送消息


2.应用ID和密钥获取


通过Python脚本给微信企业号推送消息


通过Python脚本给微信企业号推送消息

3.用户名称获取


通过Python脚本给微信企业号推送消息


通过Python脚本给微信企业号推送消息

4.标签获取


通过Python脚本给微信企业号推送消息

测试发送消息

执行脚本:python main.py -u 用户名 -c 消息内容

通过Python脚本给微信企业号推送消息

查看消息:


通过Python脚本给微信企业号推送消息


分享到:


相關文章: