网站首页 > 博客文章 正文
一、前言
对于任何程序员来说,及时地收到程序运行的反馈是非常重要的,比如告警通知、运维报告、任务进度通知、事件触发通知等等。这可以提高工作效率。
一般情况下,我们坐在电脑前看着屏幕才能及时地获取程序的反馈信息。但是有些时候比如我们已经下班了或在进行其他工作时,我们就无法实时接收到程序的反馈信息。
一番折腾后,小编成功实现了在Linux下(WIndows肯定也可以)自动发送信息至钉钉和微信。这样我们可以随时随地用手机获取到程序的反馈信息。
二、发送至钉钉
顾名思义,这要求你要加入企业,并创建一个隶属于企业的群。如果你没有打工的话就只能发送到微信了,第三部分再介绍。
第一步,创建企业钉钉群。
如果你本来就是要在一个企业群里实现自动发消息,那就不用创建新的群了。
选择你的一个同事,点击右上角添加成员。
群场景和群归属使用默认则就能创建内部群,也就是企业群,选择归属于个人是不行的,个人群不能添加机器人。
第二步,添加机器人
进入群聊天界面,点击右上角的设置按钮,往下滑点击机器人进入机器人管理界面
点击添加机器人,选择自定义后,点击添加进入机器人设置界面。
名字自己定义,安全设置就是设置哪些条件下才允许调用这个机器人,这里设置为test
- 第一种是自定义关键词,只有发送的内容包含设置的关键词才允许发送。
- 第二种是加签,要在webhook上加上这个标签才有效。
- 第三种是IP地段,只有允许的IP才能使用,比较严格 按需设置,一般使用第一种即可。
点击完成后就会生成webhook地址,使用这个地址就能实现向群里发送消息,复制备用。
第三步:编写消息推送脚本。
编写脚本send_dingding.sh
#!/bin/bash
# 设置钉钉的Webhook
dingding_webhook="https://oapi.dingtalk.com/robot/send?access_token=YOUR_DINGDING_ACCESS_TOKEN"
# 获取命令行参数
message=$1
format=${2:-"text"}
# 构建消息数据
if [ "$format" == "text" ]; then
payload="{\"msgtype\":\"text\",\"text\":{\"content\":\"$message\"}}"
elif [ "$format" == "markdown" ]; then
payload="{\"msgtype\":\"markdown\",\"markdown\":{\"title\":\"Markdown Title\",\"text\":\"$message\"}}"
else
echo "Unsupported format: $format"
exit 1
fi
# 发送消息到钉钉
curl -s -H "Content-Type: application/json" -d "$payload" "$dingding_webhook"
echo
将dingding_webhook替换为刚才复制的链接即可。
该脚本接受两个参数:
- message:待发送的消息
- format:消息的格式,有普通文本text(默认)和markdown格式两种
使用试试:
# 给予执行权限
chmod 700 ./send_dingding.sh
# 普通文本
./send_dingding.sh "test:你好"
# markdown格式
./send_dingding.sh "test: **<font color='orange' size='40'>Hello, World</font>**" markdown
结果分别为:
自动发送至钉钉至此就已经实现了,但是毕竟是关联到自己打工的公司的,而且必须要有同事在内,会带来些许不便。
因为接下来介绍发送至微信的方法,但注意必须是企业微信,如果没有企业微信可能自己办个个体工商户(几十块钱)自己开通企业微信(小编就是这样干的。。。)
三、发送至微信
注册企业微信网址:https://work.weixin.qq.com/。
注册一个个体工商户并注册企业微信后,会自动创建一个企业群,群里只有自己一个人,但是就可以添加机器人了。
操作流程几乎一样,因为原理相同。
打开群聊界面,点击右上角三点按钮,添加群机器人,输入机器人名,点击确认,即可获得webhook网址。
而这里没有安全设置,也就是说有人获取webhood就能发消息,要注意。
而脚本编写跟上面钉钉的一样,不同一点的是,小编发现两者对于markdown格式的内容发送有所区别,钉钉要求必须带有Title,否则报错title 缺失,或者参数格式不正确。而微信没有这个要求。
脚本内容为:
#!/bin/bash
# 设置钉钉的Webhook
dingding_webhook="https://oapi.dingtalk.com/robot/send?access_token=YOUR_WECHAT_ACCESS_TOKEN"
# 获取命令行参数
message=$1
format=${2:-"text"}
# 构建消息数据
if [ "$format" == "text" ]; then
payload="{\"msgtype\":\"text\",\"text\":{\"content\":\"$message\"}}"
elif [ "$format" == "markdown" ]; then
payload="{\"msgtype\":\"markdown\",\"markdown\":{\"content\":\"$message\"}}"
else
echo "Unsupported format: $format"
exit 1
fi
# 发送消息到钉钉
curl -s -H "Content-Type: application/json" -d "$payload" "$dingding_webhook"
echo
四、整合钉钉和微信脚本
由于发送原理都是一样的,只有webhook不一样,因此可以整合这两个脚本。
#!/bin/bash
# 设置钉钉和企业微信的Webhook
dingding_webhook="https://oapi.dingtalk.com/robot/send?access_token=YOUR_DINGDING_ACCESS_TOKEN"
wechat_webhook="https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=YOUR_WECHAT_ACCESS_TOKEN"
# 获取命令行参数
target="$1"
message="$2"
format="${3:-text}" # 如果未提供format参数,默认为"text"
# 根据目标选择相应的Webhook
if [ "$target" == "wechat" ]; then
webhook="$wechat_webhook"
elif [ "$target" == "dingding" ]; then
webhook="$dingding_webhook"
else
echo "Invalid target. Please choose either 'wechat' or 'dingding'."
exit 1
fi
# 发送消息
if [ "$format" == "text" ]; then
# 发送文本格式的消息
curl -s -H "Content-Type: application/json" -d "{\"msgtype\":\"text\",\"text\":{\"content\":\"$message\"}}" "$webhook"
elif [ "$format" == "markdown" ]; then
# 发送Markdown格式的消息
if [ "$target" == "wechat" ];then
curl -s -H "Content-Type: application/json" -d "{\"msgtype\":\"markdown\",\"markdown\":{\"content\":\"$message\"}}" "$webhook"
else
curl -s -H "Content-Type: application/json" -d "{\"msgtype\":\"markdown\",\"markdown\":{\"title\":\"Markdown Title\",\"text\":\"$message\"}}" "$webhook"
fi
else
echo "Invalid format. Please choose either 'text' or 'markdown'."
exit 1
fi
echo
包含三个参数:
- target:发送至dingding还是wechat
- message: 消息内容
- format: 普通文本还是markdown,默认普通文本
- 上一篇: curl 命令全解析:从基础到实战的高效使用指南
- 下一篇: 发送钉钉消息 Shell 脚本
猜你喜欢
- 2025-05-21 上传图片到cloudflare r2
- 2025-05-21 wordpress通过代码实现百度主动推送和实时推送
- 2025-05-21 百度实时推送代码解决方案
- 2025-05-21 Elasticsearch的路由routing的应用技巧
- 2025-05-21 技巧:PHP版本怎样隐藏在Linux服务器
- 2025-05-21 Python 进阶-day24: API 开发
- 2025-05-21 kubectl常用删除命令
- 2025-05-21 HTTP 的常见头字段有哪些?说说它们的作用
- 2025-05-21 网络编程神器:让你的网络编程不再踩坑
- 2025-05-21 HTTP/HTTPS协议基础
你 发表评论:
欢迎- 377℃手把手教程「JavaWeb」优雅的SpringMvc+Mybatis整合之路
- 373℃用AI Agent治理微服务的复杂性问题|QCon
- 364℃初次使用IntelliJ IDEA新建Maven项目
- 357℃Maven技术方案最全手册(mavena)
- 353℃安利Touch Bar 专属应用,让闲置的Touch Bar活跃起来!
- 352℃IntelliJ IDEA 2018版本和2022版本创建 Maven 项目对比
- 351℃InfoQ 2024 年趋势报告:架构篇(infoq+2024+年趋势报告:架构篇分析)
- 350℃IT全明星|IntelliJ IDEA学习笔记(四、idea中怎么创建maven项目)
- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)