shell实现企业微信报警
在日常工作中,我们有些时候需要第一时间知道跑在线上的应用有没有挂掉。之前一直在使用的是邮件报警。可是相比较目前市面上其他的应用,比如QQ和微信,我们每天点开看邮件的次数太少了,导致有些时候发送的报警邮件,直接就石沉大海了,所以我开始找新的报警办法。
我第一个想到的就是微信,这也是我这次标题的又来,下面就是我利用企业微信实现报警的方法。
申请企业微信
# 企业微信申请的网址
# 具体申请流程,我就不多说了
https://work.weixin.qq.com/wework_admin/register_wx
Shell脚本内容
话不多说,先上硬菜。下面就是我实现报警的脚本,具体每一段是什么意思,我就懒得贴了,你们可以直接扣我,或者发我邮件,我会解答
#!/bin/bash
expireTime=7200
## TokenFile 企业微信token文件,存放位置可以自定义,我选的是当前位置
TokenFile="db.json"
## 以下5行,登陆自己的企业微信拿到
corpid=XXX
corpsecret=XXX
touser="XXX"
toparty="XXX"
agentid="XXX"
## 发送报文
content="自定义"
## 针对
if [ ! -f "$dbFile" ];then
touch "$dbFile"
fi
# 获取token
req_time=`jq '.req_time' $dbFile`
current_time=$(date +%s)
refresh=false
if [ ! -n "$req_time" ];then
refresh=true
else
if [ $((current_time-req_time)) -gt $expireTime ];then
refresh=true
fi
fi
if $refresh ;then
req_access_token_url=https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$corpid\&corpsecret=$corpsecret
access_res=$(curl -s -G $req_access_token_url | jq -r '.access_token')
## 保存文件
echo "" > $dbFile
echo -e "{" > $dbFile
echo -e "\t\"access_token\":\"$access_res\"," >> $dbFile
echo -e "\t\"req_time\":$current_time" >> $dbFile
echo -e "}" >> $dbFile
echo ">>>刷新Token成功<<<"
fi
## 发送消息
msg_body="{\"touser\":\"$touser\",\"toparty\":\"$toparty\",\"msgtype\":\"text\",\"agentid\":$agentid,\"text\":{\"content\":\"$content\"}}"
#msg_body="{\"touser2\":\"$touser\",\"toparty\":\"$toparty\",\"msgtype\":\"text\",\"agentid\":$agentid,\"text\":{\"content\":\"$content\"}}"
access_token=`jq -r '.access_token' $dbFile`
req_send_msg_url=https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$access_token
req_msg=$(curl -s -H "Content-Type: application/json" -X POST -d “$msg_body” $req_send_msg_url | jq -r '.errmsg')
echo "触发报警发送动作,返回信息为:" $req_msg
- 另外补充一句,不要太频繁的去获取token,大概两小时左右获取一次就可以了
脚本讲解
- 脚本有三个部分
- 变量设置
- token获取
- 信息发送
- 变量设置就是定义一些,在获取token,或者是发送短信时候需要的参数
- 脚本在发送信息的前,需要先访问https://qyapi.weixin.qq.com,去获取token,拿着这个token才能发送信息。token有一个有效期,大概是两个小时左右,具体多长时间,需要各位自己去测试了。
- 信息发送就很简单了,一条命令就可以
- 这个脚本其实是可以拆开了用。获取token和发送信息完全可以隔离开使用,一台机器获取token,企业各个节点调用同一个token,再发送消息,完美!!!
暂时就写这些吧,欢迎各位指出不足 QQ:925124317