不知道是什么原因直接用Python脚本zabbix无法执行脚本,需要一个shell来启动

  1. #! /bin/bash
  2. userid=$
  3. content=$
  4. python /data/zabbix/alertscripts/weixin.py $userid $content
  1. #!/usr/bin/env python
  2. # _*_ coding:utf8 _*_
  3. import urllib2
  4. import simplejson as json
  5. import sys
  6. class weChat:
  7. def __init__(self,url,Corpid,Secret):
  8. url = '%s/cgi-bin/gettoken?corpid=%s&corpsecret=%s' % (url,Corpid,Secret)
  9. res = self.url_req(url)
  10. self.token = res['access_token']
  11.  
  12. def url_req(self,url,method='get',data={}):
  13. if method == 'get':
  14. req = urllib2.Request(url)
  15. res = json.loads(urllib2.urlopen(req).read())
  16. elif method == 'post':
  17. req = urllib2.Request(url,data)
  18. res = json.loads(urllib2.urlopen(req).read())
  19. else:
  20. print 'error request method...exit'
  21. sys.exit()
  22. return res
  23. def send_message(self,userlist,content,agentid=):
  24. self.userlist = userlist
  25. self.content = content
  26. url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=%s' % self.token
  27. data = {
  28. "touser": "",
  29. "toparty": "",
  30. "totag": "",
  31. "msgtype": "text",
  32. "agentid": "",
  33. "text": {
  34. "content": ""
  35. },
  36. "safe":""
  37. }
  38. data['touser'] = userlist
  39. data['agentid'] = agentid
  40. data['text']['content'] = content
  41. data = json.dumps(data,ensure_ascii=False)
  42. # print data
  43. res = self.url_req(url,method='post',data=data)
  44. if res['errmsg'] == 'ok':
  45. print 'send sucessed!!!'
  46. else:
  47. print 'send failed!!'
  48. print res
  49.  
  50. if __name__ == '__main__':
  51. userlist = sys.argv[]
  52. # userlist = 'ZhangSen'
  53. content = sys.argv[:]
  54. content = '\n'.join(content)
  55. # content = 'test1'
  56. Corpid = 'xxx' #此处对应修改
  57. Secret = 'xxx' #此处对应修改
  58. url = 'https://qyapi.weixin.qq.com'
  59.  
  60. wechat = weChat(url,Corpid,Secret)
  61. wechat.send_message(userlist,content)

上面这脚本有个问题不能发中文消息,下面这个可以发中文

  1. #!/usr/bin/python
  2. # _*_coding:utf- _*_
  3. import urllib2
  4. import json
  5. import sys
  6.  
  7. reload(sys)
  8. sys.setdefaultencoding('utf-8')
  9.  
  10. def gettoken(corpid, corpsecret):
  11. gettoken_url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + corpsecret
  12. try:
  13. token_file = urllib2.urlopen(gettoken_url)
  14. except urllib2.HTTPError as e:
  15. e.code
  16. e.read().decode("utf8")
  17. sys.exit()
  18. token_data = token_file.read().decode('utf-8')
  19. token_json = json.loads(token_data)
  20. token_json.keys()
  21. token = token_json['access_token']
  22. return token
  23.  
  24. def senddata(access_token, user, party, agent, subject, content):
  25. send_url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + access_token
  26. send_values = "{\"touser\":\"" + user + "\",\"toparty\":\"" + party + "\",\"totag\":\"\",\"msgtype\":\"text\",\"agentid\":\"" + agent + "\",\"text\":{\"content\":\"" + subject + content + "\"},\"safe\":\"0\"}"
  27. send_request = urllib2.Request(send_url, send_values)
  28. response = json.loads(urllib2.urlopen(send_request).read())
  29. print "send sucessed!!!"
  30. str(response)
  31.  
  32. if __name__ == '__main__':
  33. user = str(sys.argv[]) # 参数1:发送给用户的账号,必须关注企业号,并对企业号有发消息权限
  34. party = str('') # 参数2:发送给组的id号,必须对企业号有权限
  35. agent = str('') # 参数3:企业号中的应用id
  36. subject = str('') # 参数4:标题【消息内容的一部分】
  37. content = str(sys.argv[]) # 参数5:文本具体内容
  38. corpid = 'xxx' # CorpID是企业号的标识
  39. corpsecret = 'xxx' # corpsecretSecret是管理组凭证密钥
  40. try:
  41. accesstoken = gettoken(corpid, corpsecret)
  42. senddata(accesstoken, user, party, agent, subject, content)
  43. except Exception, e:
  44. print "error"
  45. str(e) + "Error Please Check \"corpid\" or \"corpsecret\" Config"

zabbix 微信报警脚本的更多相关文章

  1. Zabbix微信报警脚本及写触发记录

    一.Zabbix微信报警 默认路径:/usr/lib/zabbix/scripts/weixin.py #!/usr/bin/python # -*- coding: utf-8 -*- import ...

  2. 通过脚本发送zabbix微信报警

    实现zabbix通过微信报警的方式也是通过脚本来实现,与邮件报警不同的是,脚本调用的微信的相关接口的获取相对复杂一点 1.申请一个微信公众号(企业号) 申请方法不多说,如果已申请请忽略 2.在微信企业 ...

  3. Zabbix微信报警触发

    (1)         企业应用-创建应用 1.除了对个人添加微信报警之外,还可以添加不同管理组,接受同一个应用推送的消息, 成员账号,组织部门ID,应用Agent ID,CorpID和Secret, ...

  4. (五)zabbix微信报警

    1.注册微信企业号 1)注册微信企业号 https://work.weixin.qq.com 2)通讯录添加用户 3)记住部门id 4)创建应用 5)点击刚创建的应用,记住Agentld和secret ...

  5. Zabbix 微信报警Python版(带监控项波动图片)

    #!/usr/bin/python # -*- coding: UTF- -*- #Function: 微信报警python版(带波动图) #Environment: python import ur ...

  6. zabbix 微信报警

    http://blog.csdn.net/wh211212/article/details/52735236 Zabbix可以通过多种方式把告警信息发送到指定人,常用的有邮件,短信报警方式,但是越来越 ...

  7. filebeat+logstash通过zabbix微信报警

    一.安装软件: 1.在要收集日志的机器上安装filebeat: 1).下载安装: cd /usr/local/src wget https://artifacts.elastic.co/downloa ...

  8. zabbix微信报警

    [root@LinuxS04 jiaoben]# ./weixin 联系人 baojing baojingok[root@LinuxS04 jiaoben]# pwd/usr/local/zabbix ...

  9. zabbix邮件报警脚本(Python)

    #!/usr/bin/python #coding:utf-8 import smtplib from email.mime.text import MIMEText import sys mail_ ...

随机推荐

  1. 布式实时日志系统(三) 环境搭建之centos 6.4下hadoop 2.5.2完全分布式集群搭建最全资料

    最近公司业务数据量越来越大,以前的基于消息队列的日志系统越来越难以满足目前的业务量,表现为消息积压,日志延迟,日志存储日期过短,所以,我们开始着手要重新设计这块,业界已经有了比较成熟的流程,即基于流式 ...

  2. Java初学者都必须理解的六大问题 (整理自网络)

    问题一:我声明了什么! 1. String s = "Helloworld!"; 许多人都做过这样的事情,但是,我们到底声明了什么?回答通常是:一个String,内容是“Hello ...

  3. [原]Linux下清空文件内容的三种方法

    ========问题======== 有些文件需要清空内容而不改变属性 =======解决方案====== 1.直接删除,创建同名文件.(这种方法的弊端是有可能这个文件带着权限或者是属性,那么你新建这 ...

  4. 部署OpenStack问题汇总(二)--openstack dashboard 问题解决方案

    在打开dashboard的时候报错: LocationParseError at /admin/ (LocationParseError(...), 'Failed to parse: Failed ...

  5. PHPStorm 注册码&主题皮肤

    JetBrains PhpStorm 注册方法: 用浏览器打开 http://idea.lanyus.com/ 点击页面中的“获得注册码” 然后打开PhpStorm,在注册时切换至Activation ...

  6. Python2.7设置在shell脚本中自动补全功能的方法

    1.新建tab.py文件 #!/usr/bin/env python # python startup file import sys import readline import rlcomplet ...

  7. thinkphp结合layui上传视频

    JS示例: <script type="text/javascript"> layui.use(['form', 'layedit','element', 'layda ...

  8. 9.10Django模板

    2018-9-10 16:37:29 模板就一个 不能嵌套 模板:  http://www.cnblogs.com/liwenzhou/p/7931828.html 2018-9-10 21:23:3 ...

  9. mysql 数据库简介

    1. 什么是数据库 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库, 每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据. 我们也可以将数据存储在文 ...

  10. POJ - 3026 Borg Maze bfs+最小生成树。

    http://poj.org/problem?id=3026 题意:给你一个迷宫,里面有 ‘S’起点,‘A’标记,‘#’墙壁,‘ ’空地.求从S出发,经过所有A所需要的最短路.你有一个特殊能力,当走到 ...