Shell实现钉钉机器人定时消息通知

简介: Shell实现钉钉机器人定时消息通知

我们知道,之前的运维告警多通过SMS、Mail 等方式通知到相应的人员,难以实现随时随地的查看。随着手机APP的发展,很多告警开始发送到IM软件上去。目前比较常用的是发送到微信和钉钉上,不过微信发送时,需要开通企业公众号,比较麻烦。今天我们将重点放在钉钉上。群机器人是钉钉群的高级扩展功能,群机器人可以将第三方服务的信息聚合到群聊中,实现自动化的信息同步。借助钉钉机器人,通过官方提供的API,可以很方便的post数据到相应的接收人 。群机器人支持Webhook协议的自定义接入,支持更多可能性,例如:你可将运维报警通过自定义机器人聚合到钉钉群实现提醒功能。


Shell 脚本语言是实现Linux系统管理及自动化所必须的重要工具。熟练地编写Shell语言可以提升运维人员的工作效率,适应复杂的工作环境。


一、 想了解更多钉钉机器人相关信息,可以去参考官网文档


https://ding-doc.dingtalk.com/doc#/serverapi2/qf2nxq


二、创建自定义机器人webhook

7.png8.png9.png10.png

自定义机器人名称、头像、安全设置(至少选择一种)成功之后,会生成一个webhook地址,复制该地址,其中包含一个唯一的access_token。


附:


安全设置目前有3种方式:


(1)方式一,自定义关键词


最多可以设置10个关键词,消息中至少包含其中1个关键词才可以发送成功。


例如:添加了一个自定义关键词:监控报警


则这个机器人所发送的消息,必须包含 监控报警 这个词,才能发送成功。


(2)方式二,加签


第一步,把timestamp+"\n"+密钥当做签名字符串,使用HmacSHA256算法计算签名,然后进行Base64 encode,最后再把签名参数再进行urlEncode,得到最终的签名(需要使用UTF-8字符集)。


timestamp:当前时间戳,单位是毫秒,与请求调用时间误差不能超过1小时


secret:密钥,机器人安全设置页面,加签一栏下面显示的SEC开头的字符串


(3)方式三,IP地址(段)


设定后,只有来自IP地址范围内的请求才会被正常处理。支持两种设置方式:IP、IP段,暂不支持IPv6地址白名单,格式如下:

11.png

注意:安全设置的上述三种方式,需要至少设置其中一种,以进行安全保护。校验不通过的消息将会发送失败,错误如下:


// 消息内容中不包含任何关键词


{


"errcode":310000,


 "errmsg":"keywords not in content"


}


// timestamp 无效


{


 "errcode":310000,


"errmsg":"invalid timestamp"


}


// 签名不匹配


{


"errcode":310000,


"errmsg":"sign not match"


}


// IP地址不在白名单


{


"errcode":310000,


"errmsg":"ip X.X.X.X not in whitelist"


}


三、测试自定义机器人代码如下:

#!/bin/bash
curl 'https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxx' \
-H 'Content-Type: application/json' \
-d '{"msgtype": "text",
"text": {
        "content": "上班了记得打卡!"
},
"at": {
"atMobiles": [
"电话号码"
],
"isAtAll": true
}
}'

“xx”处填创建钉钉机器人时生成的webhook地址中的access_token。


如果发送消息想@某个人,则在“电话号码”处填写要@的人的号码。


如果@具体某人,下面“isAtAll”处则需要设置为“false”;


如果是@所有人,则只需要在“isAtAll”处设置为“true”。

12.png

三、创建Crontab周期性计划任务调用上面的脚本:

[root@ecs-xg ~]# crontab -e
50 08 * * * . /root/webhook/autonotice.sh

四、测试crontab调用脚本实现定时消息通知

13.png




相关文章
|
6月前
|
安全 机器人 API
简单几步,钉钉机器人秒变通义千问对话机器人
通过阿里云计算巢AppFlow平台,无需编码,只需简单几步,即可将钉钉机器人转化为通义千问对话机器人。首先在灵积模型服务平台获取API Key,然后在AppFlow中配置连接器,授权并保存Webhook Url。在钉钉中创建自定义机器人,选择Outgoing功能,填写签名和Webhook地址。最后,@机器人即可开始对话。此外,还提供了通过钉钉开放平台创建机器人的步骤。AppFlow简化了集成过程,加速了企业自动化服务流程。
|
5月前
|
数据管理 机器人 BI
数据管理DMS产品使用合集之如何让报表自动更新推送到钉钉机器人
阿里云数据管理DMS提供了全面的数据管理、数据库运维、数据安全、数据迁移与同步等功能,助力企业高效、安全地进行数据库管理和运维工作。以下是DMS产品使用合集的详细介绍。
79 3
|
5月前
|
运维 机器人 开发者
使用阿里云百炼通过appflow模板,组合钉钉机器人搭建个人知识库评测与感想
尝试构建个人助手机制,用阿里云百炼+AppFlow+钉钉机器人,花费两午休时间解决配置问题。百炼appid复制时多出空格致错,文档未提及,耗时排查。应用创建时模型选项限于max, plus, turbo,性价比高的qwen-long未上线。期望尽快修复bug和上线新模型以降低成本。附故障排查截图。
179 1
|
6月前
|
Serverless Go API
Serverless 应用引擎产品使用之在阿里云Serverless中,我想在钉钉机器人中使用函数计算的签名认证如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
6月前
|
数据采集 DataWorks 监控
DataWorks常见问题之监控规则是数据质量配置好钉钉机器人不报警如何解决
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
|
6月前
|
监控 安全 机器人
SpringBoot 实现自定义钉钉机器人
SpringBoot 实现自定义钉钉机器人
|
6月前
|
移动开发
钉钉PC端点击消息通知的链接显示该应用已停用或未授权你的访问
开发的H5微应用能发送含详情页链接的卡片消息至用户移动端,用户可顺利跳转。然而,在PC端点击相同链接会显示“应用已停用或未授权”,提示联系管理员,附带图片说明问题。
|
24天前
|
Shell
一个用于添加/删除定时任务的shell脚本
一个用于添加/删除定时任务的shell脚本
68 1
|
10天前
|
Shell Linux 测试技术
6种方法打造出色的Shell脚本
6种方法打造出色的Shell脚本
32 2
6种方法打造出色的Shell脚本