zabbix 微信报警脚本
不知道是什么原因直接用Python脚本zabbix无法执行脚本,需要一个shell来启动
- #! /bin/bash
- userid=$
- content=$
- python /data/zabbix/alertscripts/weixin.py $userid $content
- #!/usr/bin/env python
- # _*_ coding:utf8 _*_
- import urllib2
- import simplejson as json
- import sys
- class weChat:
- def __init__(self,url,Corpid,Secret):
- url = '%s/cgi-bin/gettoken?corpid=%s&corpsecret=%s' % (url,Corpid,Secret)
- res = self.url_req(url)
- self.token = res['access_token']
- def url_req(self,url,method='get',data={}):
- if method == 'get':
- req = urllib2.Request(url)
- res = json.loads(urllib2.urlopen(req).read())
- elif method == 'post':
- req = urllib2.Request(url,data)
- res = json.loads(urllib2.urlopen(req).read())
- else:
- print 'error request method...exit'
- sys.exit()
- return res
- def send_message(self,userlist,content,agentid=):
- self.userlist = userlist
- self.content = content
- url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=%s' % self.token
- data = {
- "touser": "",
- "toparty": "",
- "totag": "",
- "msgtype": "text",
- "agentid": "",
- "text": {
- "content": ""
- },
- "safe":""
- }
- data['touser'] = userlist
- data['agentid'] = agentid
- data['text']['content'] = content
- data = json.dumps(data,ensure_ascii=False)
- # print data
- res = self.url_req(url,method='post',data=data)
- if res['errmsg'] == 'ok':
- print 'send sucessed!!!'
- else:
- print 'send failed!!'
- print res
- if __name__ == '__main__':
- userlist = sys.argv[]
- # userlist = 'ZhangSen'
- content = sys.argv[:]
- content = '\n'.join(content)
- # content = 'test1'
- Corpid = 'xxx' #此处对应修改
- Secret = 'xxx' #此处对应修改
- url = 'https://qyapi.weixin.qq.com'
- wechat = weChat(url,Corpid,Secret)
- wechat.send_message(userlist,content)
上面这脚本有个问题不能发中文消息,下面这个可以发中文
- #!/usr/bin/python
- # _*_coding:utf- _*_
- import urllib2
- import json
- import sys
- reload(sys)
- sys.setdefaultencoding('utf-8')
- def gettoken(corpid, corpsecret):
- gettoken_url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + corpsecret
- try:
- token_file = urllib2.urlopen(gettoken_url)
- except urllib2.HTTPError as e:
- e.code
- e.read().decode("utf8")
- 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, party, agent, subject, content):
- send_url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + access_token
- send_values = "{\"touser\":\"" + user + "\",\"toparty\":\"" + party + "\",\"totag\":\"\",\"msgtype\":\"text\",\"agentid\":\"" + agent + "\",\"text\":{\"content\":\"" + subject + content + "\"},\"safe\":\"0\"}"
- send_request = urllib2.Request(send_url, send_values)
- response = json.loads(urllib2.urlopen(send_request).read())
- print "send sucessed!!!"
- str(response)
- if __name__ == '__main__':
- user = str(sys.argv[]) # 参数1:发送给用户的账号,必须关注企业号,并对企业号有发消息权限
- party = str('') # 参数2:发送给组的id号,必须对企业号有权限
- agent = str('') # 参数3:企业号中的应用id
- subject = str('') # 参数4:标题【消息内容的一部分】
- content = str(sys.argv[]) # 参数5:文本具体内容
- corpid = 'xxx' # CorpID是企业号的标识
- corpsecret = 'xxx' # corpsecretSecret是管理组凭证密钥
- try:
- accesstoken = gettoken(corpid, corpsecret)
- senddata(accesstoken, user, party, agent, subject, content)
- except Exception, e:
- print "error"
- str(e) + "Error Please Check \"corpid\" or \"corpsecret\" Config"
zabbix 微信报警脚本的更多相关文章
- Zabbix微信报警脚本及写触发记录
一.Zabbix微信报警 默认路径:/usr/lib/zabbix/scripts/weixin.py #!/usr/bin/python # -*- coding: utf-8 -*- import ...
- 通过脚本发送zabbix微信报警
实现zabbix通过微信报警的方式也是通过脚本来实现,与邮件报警不同的是,脚本调用的微信的相关接口的获取相对复杂一点 1.申请一个微信公众号(企业号) 申请方法不多说,如果已申请请忽略 2.在微信企业 ...
- Zabbix微信报警触发
(1) 企业应用-创建应用 1.除了对个人添加微信报警之外,还可以添加不同管理组,接受同一个应用推送的消息, 成员账号,组织部门ID,应用Agent ID,CorpID和Secret, ...
- (五)zabbix微信报警
1.注册微信企业号 1)注册微信企业号 https://work.weixin.qq.com 2)通讯录添加用户 3)记住部门id 4)创建应用 5)点击刚创建的应用,记住Agentld和secret ...
- Zabbix 微信报警Python版(带监控项波动图片)
#!/usr/bin/python # -*- coding: UTF- -*- #Function: 微信报警python版(带波动图) #Environment: python import ur ...
- zabbix 微信报警
http://blog.csdn.net/wh211212/article/details/52735236 Zabbix可以通过多种方式把告警信息发送到指定人,常用的有邮件,短信报警方式,但是越来越 ...
- filebeat+logstash通过zabbix微信报警
一.安装软件: 1.在要收集日志的机器上安装filebeat: 1).下载安装: cd /usr/local/src wget https://artifacts.elastic.co/downloa ...
- zabbix微信报警
[root@LinuxS04 jiaoben]# ./weixin 联系人 baojing baojingok[root@LinuxS04 jiaoben]# pwd/usr/local/zabbix ...
- zabbix邮件报警脚本(Python)
#!/usr/bin/python #coding:utf-8 import smtplib from email.mime.text import MIMEText import sys mail_ ...
随机推荐
- 布式实时日志系统(三) 环境搭建之centos 6.4下hadoop 2.5.2完全分布式集群搭建最全资料
最近公司业务数据量越来越大,以前的基于消息队列的日志系统越来越难以满足目前的业务量,表现为消息积压,日志延迟,日志存储日期过短,所以,我们开始着手要重新设计这块,业界已经有了比较成熟的流程,即基于流式 ...
- Java初学者都必须理解的六大问题 (整理自网络)
问题一:我声明了什么! 1. String s = "Helloworld!"; 许多人都做过这样的事情,但是,我们到底声明了什么?回答通常是:一个String,内容是“Hello ...
- [原]Linux下清空文件内容的三种方法
========问题======== 有些文件需要清空内容而不改变属性 =======解决方案====== 1.直接删除,创建同名文件.(这种方法的弊端是有可能这个文件带着权限或者是属性,那么你新建这 ...
- 部署OpenStack问题汇总(二)--openstack dashboard 问题解决方案
在打开dashboard的时候报错: LocationParseError at /admin/ (LocationParseError(...), 'Failed to parse: Failed ...
- PHPStorm 注册码&主题皮肤
JetBrains PhpStorm 注册方法: 用浏览器打开 http://idea.lanyus.com/ 点击页面中的“获得注册码” 然后打开PhpStorm,在注册时切换至Activation ...
- Python2.7设置在shell脚本中自动补全功能的方法
1.新建tab.py文件 #!/usr/bin/env python # python startup file import sys import readline import rlcomplet ...
- thinkphp结合layui上传视频
JS示例: <script type="text/javascript"> layui.use(['form', 'layedit','element', 'layda ...
- 9.10Django模板
2018-9-10 16:37:29 模板就一个 不能嵌套 模板: http://www.cnblogs.com/liwenzhou/p/7931828.html 2018-9-10 21:23:3 ...
- mysql 数据库简介
1. 什么是数据库 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库, 每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据. 我们也可以将数据存储在文 ...
- POJ - 3026 Borg Maze bfs+最小生成树。
http://poj.org/problem?id=3026 题意:给你一个迷宫,里面有 ‘S’起点,‘A’标记,‘#’墙壁,‘ ’空地.求从S出发,经过所有A所需要的最短路.你有一个特殊能力,当走到 ...