讲师中心 微信公众号
AI工具推荐 视频效率加速

Linux怎么利用Shell脚本每天向企业微信或飞书群机器人推消息

轻枫同学_8880

轻枫同学_8880

发布时间:2026-10-10 10:17:29

|

964人浏览过

|

来源于php中文网

原创

cron + curl 是最稳的定时推消息组合:cron 负责准时唤醒,curl 负责发请求;需用绝对路径调用、设置 LANG 防乱码、Webhook 通过环境变量加载,企业微信/飞书推送须严格处理 JSON 格式、引号嵌套与空白字符,并通过工作日清单规避调休误发。

linux怎么利用shell脚本每天向企业微信或飞书群机器人推消息

crontab + curl 是最稳的组合

Linux 上定时推消息,别想复杂——cron 负责准时唤醒,curl 负责发请求,两者合体就能跑通 95% 的日常场景。不需要常驻进程、不依赖 Python 环境、不担心脚本崩溃后没人拉起来。

关键不是“能不能做”,而是“怎么避免一上线就失败”。常见卡点有三个:cron 环境变量缺失、中文乱码、Webhook 地址硬编码泄露。

  • 必须用绝对路径调用 /bin/bash 或 /usr/bin/curl,不能只写 bash 或 curl
  • 脚本开头加 export LANG=en_US.UTF-8(或 zh_CN.UTF-8),否则中文显示为问号或空格被截断
  • webhook URL 别直接写死在脚本里;改用环境变量或外部配置文件,再用 source 加载

企业微信推送脚本要绕开两个坑

企业微信对 Content-Type 和 JSON 格式敏感,curl 少一个引号或换行符错位,返回 {"errcode":40071,"errmsg":"invalid json"} 是常态。

正确写法核心就三点:单引号包住整个 -d 参数、JSON 内部用双引号、日期等动态内容用 $(date ...) 插入且不破坏引号结构。

#!/bin/bash
export LANG=zh_CN.UTF-8
WEBHOOK="https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx"
curl -s -X POST "$WEBHOOK" 
  -H 'Content-Type: application/json' 
  -d '{
    "msgtype": "text",
    "text": {
      "content": "? '"$(date '+%Y-%m-%d %H:%M')"' —— 系统巡检完成
✅ CPU 使用率: 23%
✅ 磁盘剩余: 64%",
      "mentioned_list": ["@all"]
    }
  }'
  • 注意 '? '"$(date ...)"' —— ' 这种拼接方式:外层单引号 + 中间双引号包裹的命令替换 + 外层继续单引号,才能让 date 正确展开又不破坏 JSON 结构
  • mentioned_list 用 ["@all"] 可全员提醒,但企业微信外部群不支持该字段,会静默忽略
  • 如果提示 errcode: 40097,说明 key 错了或机器人被禁用;errcode: 40001 表示 URL 里 key 缺失或带了空格

飞书推送得处理换行和空格

飞书对消息体中换行符和连续空格更敏感。用 curl 直推时,若内容含 或多个空格,可能被截断或折叠成单空格——这不是 bug,是飞书服务端默认行为。

Wechat MP Article Stats Comments Suite - 微信公众号管理套件
Wechat MP Article Stats Comments Suite - 微信公众号管理套件

公众号运营:文章发布至草稿、样式封面、评论与用户管理、数据统计等。用户要求将 Markdown 发送到公众号草稿、查看阅读量统计或类似后台操作时,使用本技能。

下载

解决办法不是改飞书,而是提前清理字符串。Shell 里用参数扩展最轻量:

msg="⚠️  告警:磁盘使用率超 90%  
  时间:$(date '+%Y-%m-%d %H:%M')
  节点:web-server-01"
# 压缩多余空白并转义换行
clean_msg=$(echo "$msg" | sed ':a;N;$!ba;s/
/\n/g' | sed 's/[[:space:]]+/ /g' | sed 's/^ //;s/ $//')
curl -s -X POST "$FEISHU_WEBHOOK" 
  -H 'Content-Type: application/json' 
  -d "{"msg_type":"text","content":{"text":"$clean_msg"}}"
  • 飞书 Webhook 地址形如 https://open.feishu.cn/open-apis/bot/v2/hook/xxx,注意不是 /bot/v2/hook/ 后面还有一串 token
  • 飞书不支持 @all,要用 user_id 或 open_id 显式 @ 成员,否则只能发给群全体(无高亮)
  • 如果脚本在 Windows 下编辑再传到 Linux,记得运行 sed -i 's/ $//' script.sh 清除 ,否则 cron 会报 /bin/bash^M: bad interpreter

工作日推送不能只靠 crontab * * * *

cron 的 5 9 * * 1-5 只能保证周一到周五,但遇上国庆调休、春节补班,它照发不误。真要按实际工作日推送,得自己判断今天是不是“该上班的日子”。

最简方案:维护一个纯文本工作日清单(如 /opt/workdays.txt),每行一个 YYYY-MM-DD,脚本启动时用 grep -q "$(date +%Y-%m-%d)" /opt/workdays.txt 判断。

  • 清单可手动更新,也可对接公开节假日 API(如国务院每年发布的放假安排),但后者需额外加 HTTP 请求逻辑
  • 别用 date -d "today +1 day" 类推算,调休日无法规则化生成
  • 如果 crontab 执行时发现非工作日,直接 exit 0 即可,不用报错,避免塞满日志

真正麻烦的从来不是“怎么发”,而是“什么时候不该发”——那个被漏掉的调休日,往往就是凌晨三点收到消息后被骂醒的开始。

相关文章

企业微信
企业微信

企业微信是腾讯微信团队为企业打造的专业办公管理工具。与微信一致的沟通体验,丰富免费的OA应用,并与微信消息、小程序、微信支付等互通,助力企业高效办公和管理。有需要的小伙伴快来保存下载体验吧!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

相关专题

更多
磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

3950

2023.06.21

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

3373

2023.06.29

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2533

2023.06.30

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

6150

2023.07.05

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

5782

2023.07.06

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

3393

2023.07.20

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2885

2023.07.20

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

3119

2023.07.25

PixTV官网入口地址合集
PixTV官网入口地址合集

本专题汇总了 PixTV AI 一站式视频创作平台的官方入口与使用教程。无需下载软件,浏览器直接访问即可使用。平台将剧本、图像、视频、声音与剪辑整合在“无限画布”中,接入 GPT Image 2.5、Seedance 2.5 等头部模型。本专题整理了从新建画布、角色锚定、分镜拆分到视频生成与导出的完整操作指南,助你快速上手 AI 短剧与漫剧创作。

20

2026.10.10

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Miniconda官方安装文档
Miniconda官方安装文档

共0课时 | 0人学习

phpMyAdmin 安装文档
phpMyAdmin 安装文档

共0课时 | 0人学习

安装 Xdebug 并配置 phpstorm
安装 Xdebug 并配置 phpstorm

共1课时 | 185人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn