Linux脚本发送通知到钉钉/企业微信
一、Linux发送通知到企业微信
1.使用企业微信创建一个群通知机器人
完成创建后就可以看到推送链接Webhook了
2.Linux中添加消息推送脚本
创建脚本,并赋权限
mkdir testpush.sh
chmod +x testpush.sh
vim testpush.sh
这是我的脚本,使用的时候需要注意两件事:
①上面获取的webhook地址写到curl后面
②text内容需要你自己自定义编辑
curl 'webhook地址' \
-H 'Content-Type: application/json' \
-d '
{
"msgtype": "text",
"text": {
"content": "这是一条通知消息,哈哈哈哈哈哈哈。\n
> 影响范围:http://10.241.110.19:8189/
> 状态:预计耗时3分钟,影响查询"
}
}'
3.执行推送脚本
执行脚本
sh testpush.sh
执行结果
[root@Temp APM]# sh testpush.sh
{"errcode":0,"errmsg":"ok. Warning: wrong json format. "}
企业微信通知效果
二、Linux发送通知到钉钉
钉钉相较于企业微信会麻烦一点,多了一个【加签】,我们需要使用加签来完善Webhook
(一开始给的webhook是不能直接使用的,会报错"errcode":310000,“errmsg”:“sign not match”)
1.使用钉钉创建一个群通知机器人
创建机器人路径:先打开一个群,然后按照以下路径完成添加:
群设置—>智能群助手—>添加机器人—>自定义机器人—>添加
至此完成了通知机器人的创建
2.拼装可用的推送链接
首先,明确可用链接是什么样子的,官网给出答案如下:
点击查看官网文档
可见,可用链接分为:webhook、timestamp、sign
webhook在创建时已经有了,接下来我们需要获取timestamp、sign
官网同样给了timestamp、sign的获取办法,我使用的是官网的python脚本来获取这两个参数
将以下脚本内容放入python文件中,然后开始执行
#python 3.8
import time
import hmac
import hashlib
import base64
import urllib.parse
timestamp = str(round(time.time() * 1000))
secret = '在这里填写【加签】信息'
secret_enc = secret.encode('utf-8')
string_to_sign = '{}\n{}'.format(timestamp, secret)
string_to_sign_enc = string_to_sign.encode('utf-8')
hmac_code = hmac.new(secret_enc, string_to_sign_enc, digestmod=hashlib.sha256).digest()
sign = urllib.parse.quote_plus(base64.b64encode(hmac_code))
print(timestamp)
print(sign)
【加签】获取方法(创建通知机器人的时候就已经生成了,可以随时打开机器人详情查看)
脚本生成结果
H:\APM_UI\venv\Scripts\python.exe H:/APM_日常脚本/Scripts/草稿纸.py
1649753175860
%2BU%2FTtbooGdKn1rHLW84c7ey7wGRJHpCx0Y1%2FuI5IDqc%3D
Process finished with exit code 0
【组合地址】(这是我的举例,大家按照自己获取的timestamp、sign参数设置)
webhook地址×tamp=1649753175860&sign=%2BU%2FTtbooGdKn1rHLW84c7ey7wGRJHpCx0Y1%2FuI5IDqc%3D
3.Linux中添加推送脚本
创建脚本,并赋权限
mkdir testpush.sh
chmod +x testpush.sh
vim testpush.sh
这是我的脚本,使用的时候需要注意两件事:
①上面获取的【webhook+timestamp+sign】组合地址写到curl后面
②text内容需要你自己自定义编辑
curl '【webhook+timestamp+sign】组合地址'\
#组合地址填写格式 https://oapi.dingtalk.com/robot/send?access_token=XXXXXX×tamp=XXX&sign=XXX
-H 'Content-Type: application/json' \
-d '
{
"msgtype": "text",
"text": {
"content": "测测测测测测测测测ttttttttttttttttttttttt。\n
> 影响范围:http://http://10.241.199.99:9999/
> 状态:已恢复"
}
}'
4.执行推送脚本
执行脚本
sh testpush.sh
执行结果
[root@Temp APM]# sh testpush.sh
{"errcode":0,"errmsg":"ok"}
钉钉通知效果