这个需要在企业微信里面创建群,在群里创建机器人,之后复制机器人的Webhook:
https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=aeb6c635-6ff9-4fbc-991d-617c5ba16d6d
Python脚本:
cpp
#!/usr/bin/env python
# _*_coding:utf-8 _*_
import requests, sys, json, time
import urllib3
urllib3.disable_warnings()
def SendMessageURL(User, Subject, Messages):
###机器人的Webhook
URL = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" #企微Webhook地址
HEADERS = {"Content-Type": "application/json"}
Data = {
"msgtype": "markdown",
"markdown": {
"content": "# \n <font color=\"warning\">%s</font> \n <font color=\"info\">%s</font> \n <@%s>" % (
Subject, Messages, User),
# "mentioned_list" : [User],
# "content": \<font color="warning">Subject</font> \n Messages,
# "mentioned_list" :[User],
###因为是故障告警群,所以需要@all,这个看自己选择
"mentioned_list": [User, "@all"]
# "mentioned_mobile_list" : ["xxxxxxxx","@all"]
}
}
r = requests.post(url=URL, headers=HEADERS, json=Data, verify=False)
print(r.json())
if __name__ == "__main__":
SENDTO = str(sys.argv[1])
SUBJECT = str(sys.argv[2])
MESSAGE = str(sys.argv[3])
Status = str(SendMessageURL(SENDTO, SUBJECT, MESSAGE))
print(Status)
##############################################################
这段代码的主要功能是向企业微信群发送一条Markdown格式的消息,并且可以@指定的用户或所有人。下面我将逐行解释代码的功能和实现方式。
首先,代码使用了#!/usr/bin/env python作为Shebang,这是 Unix-like 系统中用于指定脚本解释器的语法,表示这个脚本应该使用系统中找到的Python解释器来运行。
然后,设置了编码声明# _*_coding:utf-8 _*_,确保代码文件是以UTF-8编码的,这样可以正确处理中文等多字节字符。
接下来,导入了必要的模块:
requests:用于发送HTTP请求。
sys:用于命令行参数处理。
json:用于JSON数据的处理。
time:虽然在这个脚本中没有用到,但可能在将来会用到。
urllib3:用于禁用安全请求警告。
通过urllib3.disable_warnings()禁用了requests库的警告信息,这样在运行脚本时不会看到关于证书验证的警告。
定义了一个函数SendMessageURL(User, Subject, Messages),这个函数接收三个参数:
User:要@的用户。
Subject:消息的主题。
Messages:消息的内容。
在函数内部:
定义了企业微信机器人的Webhook URL,这个URL是通过企业微信的管理后台生成的,用于向指定的群发送消息。
设置了请求头HEADERS,指定内容类型为JSON。
构建了要发送的JSON数据Data,其中:
msgtype设置为markdown,表示消息类型是Markdown。
markdown字段中包含content,这是一个包含Markdown格式的字符串,其中使用了HTML标签来设置字体颜色,具体来说:
<font color="warning">用于标记主题,颜色为警告色。
<font color="info">用于标记消息内容,颜色为信息色。
<@%s>用于在消息中@指定的用户。
mentioned_list字段用于指定要@的用户列表,这里包括了传入的用户和@all,表示同时@指定用户和所有人。
使用requests.post方法发送POST请求,传递URL、headers和json数据,并关闭SSL验证(verify=False),这在生产环境中不推荐,因为会绕过证书验证,存在安全风险。
打印了请求的响应JSON。
在if __name__ == "__main__":块中:
从命令行参数中获取接收者、主题和消息内容。
调用SendMessageURL函数发送消息,并打印返回的状态。
总结一下,这个脚本的功能是通过企业微信机器人API发送一条带Markdown格式的消息,并且可以@指定的用户或所有人。脚本接受三个命令行参数:接收者、主题和消息内容。
zabbix告警脚本参数
需要把脚本放到zabbix告警的目录下

效果展示:
