新增Python脚本

# encoding: utf-8
import sys
import requests
import json
import os
import time
import re url = 'http://xx.xx.xx.xx/zabbix/api_jsonrpc.php'
headers = {'Content-Type': 'application/json-rpc'}
graph_path = '/data/zabbix/images/' # 定义图片存储路径
graph_url = 'http://xx.xx.xx.xx/zabbix/chart.php' # 定义图表的url
loginurl = "http://xx.xx.xx.xx/zabbix/index.php" # 定义登录的url def uploadImg(path,accessToken):
#img_url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/upload_media?key=" + key + "&type=file"
img_url = "https://qyapi.weixin.qq.com/cgi-bin/media/uploadimg?access_token="+accessToken
files = {'media': open(path, 'rb')}
r = requests.post(img_url, files=files)
re = json.loads(r.text)
print(re)
return re['url'] def get_itemid(message):
#print(message)
itemid = re.search(r'ITEMID:(\d+)', message).group(1)
#itemid = 1
return itemid def get_imgUrl(itemid):
session = requests.Session()
try:
loginheaders = {
"Host": "xx.xx.xx.xx",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9"
}
# 定义请求消息头 payload = {
"name": 'xxxxxxx',
"password": 'xxxxxxx',
"autologin": "1",
"enter": "Sign in",
}
# 定义传入的data
login = session.post(url=loginurl, headers=loginheaders, data=payload)
print(login)
graph_params = {
"from": "now-10m",
"to": "now",
"itemids": itemid,
"width": "400",
}
# 定义获取图片的参数
graph_req = session.get(url=graph_url, params=graph_params)
# 发送get请求获取图片数据
time_tag = time.strftime("%Y%m%d%H%M%S", time.localtime())
graph_name = 'baojing_' + time_tag + '.png'
# 用报警时间来作为图片名进行保存
graph_name = os.path.join(graph_path, graph_name)
# 使用绝对路径保存图片
with open(graph_name, 'wb', ) as f:
f.write(graph_req.content)
# 将获取到的图片数据写入到文件中去
return graph_name
except Exception as e:
print(e)
return False def getAccessToken():
api_url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=corpid&corpsecret=corpsecret"
content = requests.get(api_url)
#print(content.json())
return content.json().get("access_token") def getImgUrl(mediaId,accessToken):
api_url = "https://qyapi.weixin.qq.com/cgi-bin/media/get?access_token="+accessToken+"&media_id="+mediaId
content = requests.get(api_url)
print(mediaId)
print(content.json())
return content.json().get("url") def send_message(imgUrl,title,desc,openUrl,key):
# 发送消息
url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=" + key
# message = title # sys.argv[3]
params = {
"msgtype": "template_card",
"template_card": {
"card_type": "news_notice",
"source": {
"desc": "Zabbix网络警报",
"desc_color": 0
},
"main_title":{
"title":"Zabbix网络警报",
},
"quote_area":{
"type":0,
"quote_text":desc
},
"card_image": {
"url": imgUrl
},
"card_action": {
"type": 1,
"url": openUrl,
"appid": "APPID",
"pagepath": "PAGEPATH"
}
}
}
req = requests.post(url, data=json.dumps(params))
print(req.json()) if __name__ == '__main__':
message = sys.argv[1]
print(message)
itemid = get_itemid(message)
imgpath = get_imgUrl(itemid)
accessToken = getAccessToken();
imgUrl = uploadImg(imgpath,accessToken)
#print(itemid)
#print(imgpath)
print(imgUrl)
send_message(imgUrl,sys.argv[2],sys.argv[3],imgUrl,sys.argv[4])
#accessToken = getAccessToken()

新增SH脚本

#!/bin/bash
echo $1 >> /data/zabbix/log.log
python /usr/lib/zabbix/alertscripts/wxcom.py $1 $2 $3 $4

把两个文件都放到这个目录下:/usr/lib/zabbix/alertscripts/

zabbix 警报推送至企业微信(图文版)的更多相关文章

  1. zabbix告警推送至个人微信

    文章原文 自从接触zabbix后,就一直想着怎么才能把告警推送到个人微信上.有这样的想法主要是个人微信的使用频率远远要比钉钉,企业微信,邮箱,飞书等使用频率要高.比如我,就遇到过在周末的时候,因为没有 ...

  2. [wxpusher]分享一个服务器推送消息到微信上的小工具,可以用于微信推送提醒和告警。

    背景 作为一个程序员,业余搞点自己的东西很正常,一般程序员都会有一两台自己的服务器,谁叫今天xx云搞活动,明天yy云搞活动呢. 自家的服务器用来跑爬虫,跑博客,或者跑一些个人业务,但当服务有新状态,抢 ...

  3. APNS推送服务证书制作 图文详解教程(新)

    iOS消息推送的工作机制可以简单的用下图来概括: Provider是指某个iPhone软件的Push服务器,APNS是Apple Push Notification Service的缩写,是苹果的服务 ...

  4. Android推送服务(2)微信智能心跳方案

    http://mp.weixin.qq.com/s?__biz=MzAwNDY1ODY2OQ==&mid=207243549&idx=1&sn=4ebe4beb8123f1b5 ...

  5. 使用WeCloud消息推送接口发送消息NodeJs版

    WeCloud是一家初创公司的产品,眼下主要在做Android和IOS消息推送这块.他们提供了用于向设备发送消息的协议,详细协议内容见消息推送协议. 这篇文章将使用NodeJs基于这个推送协议完毕向A ...

  6. 苹果开始推送 macOS Catalina10.15 正式版系统更新

    北京时间今天凌晨 1 点,苹果正式推送了 macOS Catalina 10.15 正式版升级.macOS Catalina 10.15 正式版带来了许多重大改变,包括Sidecar.iTunes应用 ...

  7. Mozilla开始推送Firefox Preview 5.0版 支持画中画特性

    Mozilla 发布了 5.0 版本的 Firefox Preview 浏览器,根据 GitHub 上的发布说明,这次更新带来了一系列新的改进.其中包含对五个新的附加组件的支持,引入了对 Progre ...

  8. 【转载】利用tasker推送手机短信到企业微信(App或者微信公众号)

    本随笔转载自:https://www.52pojie.cn/thread-804477-1-1.html 转载声明:本文转自酷安tasker评论区 ID:随风荡 的评论,我只是按照我的需求进行了一次修 ...

  9. 【详细、开箱即用】.NET企业微信回调配置(数据回调URL和指令回调URL验证)

    前言: 前段时间因为公司业务需求,需要将微信小程序与企业微信对接通,也就是把小程序绑定到对应的企业微信账号下,在该企业微信的用户可以将该小程序绑定到工作台中,然后可以在工作台中打开该小程序并授权.不过 ...

  10. Prometheus-Alertmanager告警对接到企业微信

    之前写过将Prometheus的监控告警信息通过Alertmanager推送到钉钉群. 最近转移了阵地,需要将Prometheus监控告警信息推送到企业微信群,经过两天的摸索,以及查了网上的一些资料, ...

随机推荐

  1. 如何用ReadWriteLock实现一个通用的缓存中心?

    摘要:在并发场景中,Java SDK中提供了ReadWriteLock来满足读多写少的场景. 本文分享自华为云社区<[高并发]基于ReadWriteLock开了个一款高性能缓存>,作者:冰 ...

  2. Hugging News #0602: Transformers Agents 介绍、大语言模型排行榜发布!

    每一周,我们的同事都会向社区的成员们发布一些关于 Hugging Face 相关的更新,包括我们的产品和平台更新.社区活动.学习资源和内容更新.开源库和模型更新等,我们将其称之为「Hugging Ne ...

  3. 让你的代码动起来:Python进度条神器tqdm详解及应用实例

    各位Python高手,今天我要给大家介绍一个好用的库,它就是:tqdm tqdm在阿拉伯语中的意思是 "进展",所以这个库也被称为 "快速进展条".不得不说,这 ...

  4. 新版本,ggplot2 v3.3.0 新特性来袭

    ggplot2 迎来了新的版本,官方宣布了一些新的特性.下面一起看看吧. 1. 轴代码重写 这有利于解决轴标签重叠的情况. 2. 新的 scale bin,它可以像使用 color, fill 一样使 ...

  5. ChatGPT在线体验原理课-概览:ChatGPT 与自然语言处理

    # 概览:ChatGPT 与自然语言处理 本文将介绍 ChatGPT 与自然语言处理的相关知识. ## ChatGPT 与图灵测试 图灵测试是人工智能领域的一个经典问题,它旨在检验计算机是否能够表现出 ...

  6. PyTorch与机器学习中的随机化:减少噪声和随机性

    目录 2.1 基本概念解释 2.2 技术原理介绍 2.3 相关技术比较 3. 实现步骤与流程 3.1 准备工作:环境配置与依赖安装 3.2 核心模块实现 3.3 集成与测试 4. 应用示例与代码实现讲 ...

  7. 如何构建您的第一部AWS数据库服务

    目录 2.1. 基本概念解释 2.2. 技术原理介绍 2.3. 相关技术比较 实现步骤与流程 2.3.1 准备工作:环境配置与依赖安装 2.3.2 核心模块实现 2.3.3 集成与测试 4. 应用示例 ...

  8. React SSG - 也写个 Demo 吧

    上次写了一个 SSR 的 DEMO,今天写个小 Demo 来从头实现一下 react 的 SSG,来理解下 SSG 是如何实现的. 什么是 SSG SSG 即 Static Site Generati ...

  9. C++ 数独游戏

    C++ 数独游戏 直接上代码: 1 // 数独 sudoku 2 3 #include <iostream> 4 5 using namespace std; 6 7 int P[9][9 ...

  10. 2 opencv-python核心库模块core

    core模块定义了opencv中的基础数据结构和基础运算,是整个库的核心模块.而mat数据结构是opencv中最重要的数据结构,是opencv中图像最常用的存储格式. 1 基本数据结构 opencv的 ...