找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

862

积分

0

好友

108

主题
发表于 前天 11:28 | 查看: 5| 回复: 0

一句话总结:Crier 是一款使用 Rust 编写的极简推送通知工具,它支持 TCP(局域网直连)与 MQTT(互联网中继)两种模式,通过简单的命令行即可实现服务器、CI/CD 流程或脚本完成时的即时通知。

开篇:告别低效等待,让自动化流程主动“说话”

在开发与运维工作中,我们常常陷入被动的等待:

  • 长时间编译或数据处理任务运行时,不得不守在终端前反复查看状态。
  • 部署在远程服务器上的脚本执行完毕后,由于未设置有效提醒而错过关键结果。
  • 配置复杂的 Webhook 或消息机器人,只为获得一个简单的完成信号,导致通知系统比主业务逻辑更为繁琐。

我们需要的往往不是一个重型通知平台,而是一个能随时随地、简单可靠地“喊”我们一声的工具。Crier 正是为此而生。它轻量、跨平台,通过一行命令监听,另一行命令发送,并能在通知触发时执行任意 Shell 命令,实现弹窗、播放声音或调用自定义脚本等丰富反馈。

一、Crier 是什么?一个轻量级的“数字信使”

Crier 的核心设计哲学极其简洁:发送端发布一条文本消息,接收端则执行一条预定义的命令。它通过两种通信模式适应不同场景:

  1. TCP 模式:适用于同一局域网内的设备间通信,延迟极低,无需中间服务器。
  2. MQTT 模式:借助 MQTT Broker 进行消息中继,完美解决跨网络、无公网 IP、防火墙穿透等问题,实现互联网范围的通知。

它无需数据库与 Web 服务,仅凭一个可执行文件与一份 YAML 配置文件即可运行,将复杂度降至最低。

二、快速开始:五分钟部署与体验

安装:从源码编译

由于项目使用 Rust 编写,安装过程标准且快速:

git clone https://github.com/skorotkiewicz/crier.git
cd crier
cargo build --release

编译完成后,可将生成的二进制文件 ./target/release/crier 复制到系统路径(如 /usr/local/bin/)以便全局调用。

场景一:局域网 TCP 快速通知

假设在 IP 为 192.168.1.10 的机器上设置监听,要求收到通知时弹出系统提示(Linux 环境):

# 在接收端(192.168.1.10)启动监听
crier listen 0.0.0.0:5555 -m 'notify-send "Alert" "{}"'

在局域网内的另一台机器(发送端)执行:

crier send 192.168.1.10:5555 -m "Database backup completed!"

此时,接收端的桌面将立刻弹出内容为 “Database backup completed!” 的通知窗口。命令中的 {} 是占位符,会被实际消息内容替换。

场景二:通过 MQTT 实现跨网络通知

当发送端与接收端不在同一网络时,可使用 MQTT 模式。这里以公共测试 Broker 为例:

# 在家中的电脑(接收端)订阅主题
crier listen --relay test.mosquitto.org -t my_home_topic -m 'notify-send "Remote" "{}"'

# 在公司服务器(发送端)发布消息
crier send --relay test.mosquitto.org -t my_home_topic -m "CI pipeline passed!"

双方通过连接同一个 MQTT Broker 并订阅相同主题即可通信。对于生产环境,建议使用自建的 MQTT Broker(例如通过 Docker 快速部署 Mosquitto)以保障安全性与可控性。

三、使用配置文件管理预设(Presets)

为避免重复输入复杂参数,Crier 支持 YAML 配置文件来定义预设。创建 ~/.config/crier.yml

ci_notify:
  relay: “your-broker.com”
  topic: “project/ci”
  auth: “your_secret_token”
  message: ‘notify-send “CI Result” “{}”’

local_alert:
  addr: “0.0.0.0:5555”
  auth: “local_token”
  message: ‘paplay /usr/share/sounds/alert.wav && echo “$(date): {}” >> ~/notify.log’

之后,即可通过 -p 参数快速调用预设,发送时还可使用 -m 参数临时覆盖预设中的消息模板:

crier listen -p ci_notify
crier send -p ci_notify -m “Deployment to production succeeded.”

四、基础安全认证

为防止未授权的客户端随意发送通知,Crier 提供了简单的 Token 认证机制。
在启动监听时设置认证令牌:

crier listen 0.0.0.0:5555 --auth my_secure_token -m ‘...’

发送端必须提供相同的令牌才能成功发送:

crier send 192.168.1.10:5555 -m “Authorized message” --auth my_secure_token  # 成功
crier send 192.168.1.10:5555 -m “Malicious message”                         # 被拒绝

MQTT 模式同样支持此认证参数,为通知通道增加了一层基础保护。

五、超越弹窗:将通知作为自动化触发器

Crier 的核心能力在于执行任意 Shell 命令,这使得它能轻松融入各类自动化运维流程。

  • 播放音效提示
    crier listen 0.0.0.0:5555 -m ‘paplay /usr/share/sounds/complete.oga’
  • 记录通知日志
    crier listen 0.0.0.0:5555 -m ‘echo “[$(date +%Y-%m-%d %H:%M:%S)] {}” >> /var/log/crier.log’
  • 触发复杂响应脚本
    crier listen 0.0.0.0:5555 -m ‘/opt/scripts/alert_handler.sh “{}”’

    alert_handler.sh 脚本中,你可以解析消息内容,并根据不同关键字执行重启服务、发送邮件或上报监控系统等操作。

六、实战应用场景

  1. CI/CD 构建结果通知:在 Jenkins 或 GitLab CI 的 Pipeline 脚本末尾添加发送命令,构建状态即时可知。
  2. 家庭 NAS 任务提醒:让下载工具、备份脚本在完成任务后发送通知,配合音效与弹窗,无需手动检查。
  3. 服务器资源告警:结合 Cron 定时任务,检测磁盘、内存或服务状态,异常时立即通过 Crier 发送告警信息到指定终端。

七、总结

在技术栈日益复杂的今天,Crier 回归 simplicity(简洁)的设计值得称道。它用不到千行的 Rust 代码,精准地解决了“轻量级、跨网络、可编程通知”这一具体需求。无论是个人开发者还是小型团队,都可以将其作为自动化流程中可靠的“最后一环”,让机器学会在恰当的时机主动汇报,从而真正提升工作效率。




上一篇:基于Arduino Uno与pH传感器制作实时酸碱度检测仪:硬件连接与校准教程
下一篇:OpenVPN证书管理实战:基于Web的可视化运维系统,告别命令行
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2025-12-17 18:48 , Processed in 0.109023 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表