核心用法
Universal Notify 是一个命令行通知聚合工具,通过单一脚本 notify.sh 将消息分发至 6 种主流通知渠道:
| 渠道 | 特点 | 适用场景 |
|:---|:---|:---|
| **ntfy.sh** | 免费、无需注册、开箱即用 | 快速测试、临时监控 |
| **Gotify** | 自托管、数据私有 | 企业内网、隐私敏感环境 |
| **Telegram Bot** | 覆盖广、支持富文本 | 团队群组、移动优先 |
| **Pushover** | 专业推送、多设备同步 | 个人关键告警 |
| **SMTP 邮件** | 通用兼容、可追溯 | 正式通知、审计需求 |
| **Generic Webhook** | 灵活扩展、集成自定义服务 | 与现有系统对接 |
统一接口设计显著降低学习成本:所有渠道共享 --message、--title、--priority(low/normal/high/urgent)参数,仅需切换 --channel 即可迁移通知逻辑。
显著优点
1. 零门槛启动:ntfy.sh 模式无需 API 密钥和账户,curl 即可发送,5 秒完成首条通知
2. 运维友好:纯 Bash 实现,依赖仅 curl,兼容几乎所有 Linux/macOS 环境
3. 优先级语义:内置四级优先级,可对接不同渠道的差异化提醒策略(如 Pushover 的紧急通知 bypass 静音)
4. 自托管选项:Gotify 支持完全离线的私有化部署,满足合规要求
潜在局限
- 配置分散:除 ntfy.sh 外,各渠道需独立管理凭证(token、SMTP 密码等),无统一密钥管理
- 无原生重试机制:网络失败需依赖外部重试逻辑
- 功能深度有限:不支持消息模板、富媒体附件、交互按钮等高级特性
- ntfy.sh 依赖公网:虽免费但受服务可用性制约,不适合 100% SLA 场景
适合人群
- 个人开发者 / 运维工程师需要快速搭建监控告警
- 小型团队寻求轻量级通知方案,避免引入复杂的消息队列系统
- 已有自建基础设施(Gotify/邮件服务器),希望统一调用接口
常规风险
- 凭证泄露风险:命令行直接传递 token 可能被 shell history、进程列表(ps)或日志记录捕获
- SMTP 明文传输:若未强制 TLS,邮件凭证和正文存在中间人窃听可能
- ntfy.sh 主题爆破:公开主题名可能被他人订阅或恶意推送,敏感信息应避免使用默认公共实例
- 优先级误用:urgent 级别在部分渠道可能触发强提醒(如电话通知),需控制使用频率避免告警疲劳