zabbix3.0.4 部署之七 (zabbix3.0.4 邮件报警) & 微信报警

摘要:
message_subject_gb2312=`iconv-tGB2312-fUTF<message_ subject=“$message_subject_gb2312”||message_ subject=“$message_subject _utf8”#将消息内容转换为GB2312message_ body_gb2312=`iconv-tGB2312-fUTF<

[root@sv-zabbix ~]# cat /usr/local/zabbix/share/zabbix/alertscripts/sendEmail.sh
#!/bin/bash
#SMTP_server='smtp.mxhichina.com'    # SMTP服务器
#username='11'     # 用户名
#password='11'             # 密码
#from_email_address='zabbix@11.cn' # 发件人Email地址
SMTP_server='mail.xxx.com'    # SMTP服务器#username='zabbix'     # 用户名
username='zabbix'     # 用户名
password='1@1'             # 密码
from_email_address='zabbix@xxx.com' # 发件人Email地址
to_email_address="$1"               # 收件人Email地址,zabbix传入的第一个参数
message_subject_utf8="$2"           # 邮件标题,zabbix传入的第二个参数
message_body_utf8="$3"              # 邮件内容,zabbix传入的第三个参数

# 转换邮件标题为GB2312,解决邮件标题含有中文,收到邮件显示乱码的问题。
message_subject_gb2312=`iconv -t GB2312 -f UTF-8 << EOF
$message_subject_utf8
EOF`
[ $? -eq 0 ] && message_subject="$message_subject_gb2312" || message_subject="$message_subject_utf8"

# 转换邮件内容为GB2312
message_body_gb2312=`iconv -t GB2312 -f UTF-8 << EOF
$message_body_utf8
EOF`
[ $? -eq 0 ] && message_body="$message_body_gb2312" || message_body="$message_body_utf8"

# 发送邮件
sendEmail='/usr/local/bin/sendEmail'
$sendEmail -s "$SMTP_server" -xu "$username" -xp "$password" -f "$from_email_address" -t "$to_email_address" -u "$message_subject" -m "$message_body" -o message-content-type=text -o message-charset=gb2312
[root@sv-zabbix ~]#

[root@sv-zabbix ~]# cd /usr/local/zabbix/share/zabbix/alertscripts/
[root@sv-zabbix alertscripts]# cat weixin.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import urllib,urllib2,json
import sys
reload(sys)
sys.setdefaultencoding( "utf-8" )

class WeChat(object):
        __token_id = ''
        # init attribute
        def __init__(self,url):
                self.__url = url.rstrip('/')
                self.__corpid = 'wxbb1'
                self.__secret = 'lCrN-NagRL7kkejhKewBQH2XNbJ3uw9RTkSLo9m8h'

        # Get TokenID
        def authID(self):
                params = {'corpid':self.__corpid, 'corpsecret':self.__secret}
                data = urllib.urlencode(params)

                content = self.getToken(data)

                try:
                        self.__token_id = content['access_token']
                        # print content['access_token']
                except KeyError:
                        raise KeyError

        # Establish a connection
        def getToken(self,data,url_prefix='/'):
                url = self.__url + url_prefix + 'gettoken?'
                try:
                        response = urllib2.Request(url + data)
                except KeyError:
                        raise KeyError
                result = urllib2.urlopen(response)
                content = json.loads(result.read())
                return content

        # Get sendmessage url
        def postData(self,data,url_prefix='/'):
                url = self.__url + url_prefix + 'message/send?access_token=%s' % self.__token_id
                request = urllib2.Request(url,data)
                try:
                        result = urllib2.urlopen(request)
                except urllib2.HTTPError as e:
                        if hasattr(e,'reason'):
                                print 'reason',e.reason
                        elif hasattr(e,'code'):
                                print 'code',e.code
                        return 0
                else:
                        content = json.loads(result.read())
                        result.close()
                return content

        # send message
        def sendMessage(self,touser,message):

                self.authID()

                data = json.dumps({
#                        'touser':touser,
                        'toparty':"6",
                        'msgtype':"text",
                        'agentid':"4",
                        'text':{
                                'content':message
                        },
                        'safe':"0"
                },ensure_ascii=False)

                response = self.postData(data)
                print response


if __name__ == '__main__':
        a = WeChat('https://qyapi.weixin.qq.com/cgi-bin')
        a.sendMessage(sys.argv[1],sys.argv[3])

测试方法: ./weixin.py  Test test test

1.首先在腾讯申请一个微信公众号

2.进入微信公众号,新建一个应用

zabbix3.0.4 部署之七 (zabbix3.0.4 邮件报警) &amp; 微信报警第1张

配置完如下:

zabbix3.0.4 部署之七 (zabbix3.0.4 邮件报警) &amp; 微信报警第2张

3.新建一个通讯组

zabbix3.0.4 部署之七 (zabbix3.0.4 邮件报警) &amp; 微信报警第3张

 

4.修改应用的课件可见范围

zabbix3.0.4 部署之七 (zabbix3.0.4 邮件报警) &amp; 微信报警第4张

5.查看通讯录ID

zabbix3.0.4 部署之七 (zabbix3.0.4 邮件报警) &amp; 微信报警第5张

6.查看应用ID

zabbix3.0.4 部署之七 (zabbix3.0.4 邮件报警) &amp; 微信报警第6张

7.查看当前权限组

CorpID   这两个值

Secret 

zabbix3.0.4 部署之七 (zabbix3.0.4 邮件报警) &amp; 微信报警第7张

到此

CorpID 

Secret

 应用ID

通讯录ID

已获取,更改之前的脚本到此微信报警已配置完毕

免责声明:文章转载自《zabbix3.0.4 部署之七 (zabbix3.0.4 邮件报警) &amp;amp; 微信报警》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇ExtJS组件的xtype属性列表git游离状态解决方案 HEAD is now at 029bab7f xx下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

简单的图像相似度计算方法

目录 塑料瓶图像检测 说明 1.方法 2.测试结果(单张图片比对) 直方图 互信息 余弦相似度 感知哈希算法 3.评价 塑料瓶图像检测 目的:用于判断一张图片是否为塑料瓶; 条件:总计300多张图片分为70多类,同一类塑料瓶分别放置在同一个文件夹; 思路:选取每个文件夹的一张图片与目标图片对比计算返回相似度最高的值,通过多次试验确定阈值,...

pcre和正则表达式的误点

本文只是关于正则一些容易出错的地方,关于正则的学习,可参考如下两篇文章: 基础正则:https://www.cnblogs.com/f-ck-need-u/p/9621130.html Perl正则:https://www.cnblogs.com/f-ck-need-u/p/9648439.html 1.正则中所有的匹配模式,都应该理解为"匹配了某字符或字符...

TinyMCE实现word图片自动转存

由于工作需要必须将word文档内容粘贴到编辑器中使用 但发现word中的图片粘贴后变成了file:///xxxx.jpg这种内容,如果上传到服务器后其他人也访问不了,网上找了很多编辑器发现没有一个能直接解决这个问题 考虑到自己除了工作其他时间基本上不使用windows,因此打算使用nodejs来解决这一问题 发现不管什么编辑器只要将图片转换成base64后...

MySQL行列转换

实际应用中,会遇到需要把表的某些行转换成列,或者把列转换成行的情况。比如一张表在数据库中是这样的:  图1 但是,需要的结果可能是这样:  图2 这个时候就得行列转换了。 1.行转列的几种方法 1.1 case ...  when  ... then ... else ... end select uname,uid, -- 正常查询的字段 sum( ca...

Vue数据更新但页面没有更新的多种情况

Vue数据更新但页面没有更新的多种情况 1、Vue 无法检测实例被创建时不存在于 data 中的 变量 原因:由于 Vue 会在初始化实例时对 data中的数据执行 getter/setter 转化,所以 变量必须在 data 对象上存在才能让 Vue 将它转换为响应式的。 例如: new Vue({ data:{}, template: '&l...

vue中的锚链接跳转问题

一、在vue中的锚链接和普通的html不同 关于vue中的锚链接可以参考vue 中的  scrollBehavior 滚动行为。 在router.js中  const router = new VueRouter({     routes,       mode: 'history',       scrollBehavior(to, fro...