资讯专栏INFORMATION COLUMN

zabbix报警脚本(wechat,email)

lewif / 1029人阅读

摘要:微信报警参考文档获取获取发送消息获取用户失败会将消息发送给部门的人,可以查看部门修改,多个部门用分割发送报警消息传过来的第一个参数传过来的第二个参数传过来的第三个参数调用类绑定企业微信的和应用的调用实例化的类的发送信息功能,其

微信报警
#!/usr/bin/python
# -- coding:utf-8 --
"""
参考文档:
        1、https://work.weixin.qq.com/api/doc#10013/%E7%AC%AC%E4%B8%89%E6%AD%A5%EF%BC%9A%E8%8E%B7%E5%8F%96access_token
        2、https://work.weixin.qq.com/api/doc#10167/%E6%96%87%E6%9C%AC%E6%B6%88%E6%81%AF
"""
import requests
import json
import sys

class Wechat():
    def __init__(self,corpid,corpsecret):
        self.url = "https://qyapi.weixin.qq.com/cgi-bin/"
        self.corpid = corpid
        self.corpsecret = corpsecret
    #获取access_token
    def get_token(self):
        token = "{url}gettoken?corpid={corpid}&corpsecret={corpsecret}".format(url=self.url,corpid=self.corpid,corpsecret=self.corpsecret)
        json_data =  json.loads(requests.get(token).content.decode())
        access_token = json_data["access_token"]
        return access_token
    #获取发送消息
    def send_message(self,user,agentid,subject,content):
        send_url = "{url}message/send?access_token={access_token}".format(url=self.url,access_token=self.get_token())
        data = {
            "touser": user,
            "toparty": "2",    #获取用户失败会将消息发送给部门的人,可以查看部门id修改,多个部门用|分割
            "msgtype": "text",
            "agentid":agentid ,
            "text": {
                "content": subject + "
" + content
            },
             "safe":0

        }
        #发送报警消息
        requests.post(send_url,json.dumps(data))

if __name__ == "__main__":
    #abbix传过来的第一个参数
    user = sys.argv[1]
    #zabbix传过来的第二个参数
    subject = str(sys.argv[2])
    #zabbix传过来的第三个参数
    content = str(sys.argv[3])
    #调用Wechat类,绑定企业微信的id和应用的Secret
    wechat = Wechat("ww3f7e13339beb9a1d","fWN9iyF9X8vEETLi7xgjRZ40g3vOT-NA18lvCe93EdI")
    #调用实例化的类的发送信息功能,其中agentid等于自建应用的AgentId
    wechat.send_message(user,1000002,subject,content)
邮件报警
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import smtplib
from email.mime.text import MIMEText
class Memcache_Monitor():
    def __init__(self):
        pass
    def send_mail(self,to_list, subject, content):
        # 邮件地址的smtp地址
        mail_host = "smtp.exmail.qq.com"
        # 用来发邮件的邮箱
        mail_user = "xxxxxx"
        # 邮箱的密码
        mail_pass = "xxxxx"
        # smtp地址的主网站地址
        mail_postfix = "exmail.qq.com"
        sender = "{name}<{name}@{postfix}".format(name=mail_user, postfix=mail_postfix)
        msg = MIMEText(content, "plain", "utf-8")
        # 必须使用"utf-8"参数,解决在部分邮件客户端中文会显示为乱码
        msg["Subject"] = subject
        msg["From"] = sender
        msg["to"] = to_list
        try:
            smtpobj = smtplib.SMTP()
            smtpobj.connect(mail_host)
            smtpobj.login(mail_user, mail_pass)
            smtpobj.sendmail(sender, to_list, msg.as_string())
            smtpobj.close()
            print("发送成功")
            return True
        except Exception as e:
            return False

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/42661.html

相关文章

  • zabbix报警发送填坑

    摘要:报警阻塞,发送效率低下这种情况下,报警是根据用户一个个用户发送。效果极大的简化了报警配置,仅配置了两个。发送效率提高,对于一个报警,无论发送人数多少,都只需要触发执行一次脚本。 通常zabbix告警主要可以通过三种方式 1. 自带的直接调用消息接口服务 2. 执行自定义脚本发送消息 3. 通过send remote commend 的方式通过执行脚本发送 2和3的本质都只通过zabb...

    yankeys 评论0 收藏0
  • 桑心病狂,试试把报警日志发到微信上

    摘要:利用微信个人号接口只要是个微信号就能担当发送日志警报的重任,不仅可以发送到个人同时还能发送到群组。是基于和实现的一个可以将你的网站爬虫脚本等其他应用中各种消息日志报警运行结果等发送到微信的工具。 前言 笔者所在公司项目的报警信息会通过钉钉发送到群组或个人,这样如果服务出现了问题我们都会第一时间收到提醒并进行处理。 某日从钉钉收到报警信息的我突发奇想,如果自己的项目也能在出现问题的第一时...

    loonggg 评论0 收藏0
  • UPYUN Open Talk :同盾,从零打造千万级实时风控云服务

    摘要:同盾技术总监张新波在第二期移动时代互联网金融的架构趋势中阐述了同盾是如何从零开始打造千万级实时风控云服务,具体介绍了同盾系统平台构建过程中主要需要解决的三大难题,以及解决这些问题的具体时实践过程。 同盾科技,是由阿里、Paypal 反欺诈专家创建的,国内第一家风险控制与反欺诈云服务提供商,其涉及领域包括电商、B2B、互联网金融、游戏等。同盾技术总监张新波在 UPYUN Open ...

    malakashi 评论0 收藏0

发表评论

0条评论

lewif

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<