Zabbix5.0.6(LTS)版本,实现shell脚本发送企业微信报警功能

时间:2025-03-28 08:02:41
#!/bin/bash #duanwt #zabbix 报警信息发送企业微信脚本 #send_weixin.sh #脚本逻辑:1. get方法获取access_token # 2. 判断access_token是否在有效期内(频繁获取会被限制使用) # 3. 构建JSON数据块 # 4. 根据JSON数据块,用POST方法发送信息到企业微信中的特定联系人 #企业ID(替换为自己的) CORPID=XXXXXXXX #应用管理-Secret (替换为自己的) CORPSECRET=YYYYYYYYYYY #应用管理-AgentId (替换为自己的) AgentID=1111 #保存access_token值,用于后续计算有效期 Token_file=/tmp/access_token #获取系统当前时间 Curren_Time=`date +%s` #报警信息接收人,zabbix传入 Touser="$1" #报警信息主题,zabbix传入 Subject="$2" #报警信息正文内容,zabbix传入 Body="$3" #获取token 值,并计算是否在有效期内 if [ -f $Token_file ] then Extime=`sed -n '4p' $Token_file | awk -F: '{print $2}'` Time=`sed -n '5p' $Token_file` Curren_Time=`date +%s` extimes=`expr $Time + $Extime` if [ $Curren_Time -gt $extimes ] then rm -fr $Token_file Token_uri="/cgi-bin/gettoken?corpid=$CORPID&corpsecret=$CORPSECRET" curl -s --get "$Token_uri" | awk -F, '{print $1"\n",$2"\n",$3"\n",$4}' | sed 's/{//g' | sed 's/}//g' | sed 's/^[ \t]*//g' > $Token_file echo $Curren_Time >> $Token_file fi else Token_uri="/cgi-bin/gettoken?corpid=$CORPID&corpsecret=$CORPSECRET" curl -s --get "$Token_uri" | awk -F, '{print $1"\n",$2"\n",$3"\n",$4}' | sed 's/{//g' | sed 's/}//g' | sed 's/^[ \t]*//g' > $Token_file echo $Curren_Time >> $Token_file fi #构建json发送正文主体格式 JSON_BODY(){ printf '{\n' printf '\t"touser": "'"$Touser"\"",\n" printf '\t"msgtype": "text",\n' printf '\t"agentid": "'"$AgentID"\"",\n" printf '\t"text": {\n' printf '\t\t"content": "'"$Subject\n\n$Body"\""\n" printf '\t},\n' printf '\t"safe":"0"\n' printf '}\n' } Access_Token=`cat $Token_file | sed -n '3p' | awk -F: '{print $2}' | sed 's/"//g'` POSTURI="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$Access_Token" curl -s -H "Content-Type: application/json" -X POST -d "$(JSON_BODY $1 $2 $3)" $POSTURI