FEATURED · 精选文章

ntfy 桌面通知:从一条 curl 告警到三端弹框与开机自启

发布时间 / 2026/9/2 23:03:30
来源 / 创域科博编辑部
栏目 / 资讯中心
ntfy 桌面通知:从一条 curl 告警到三端弹框与开机自启 ntfy 桌面通知从一条 curl 告警到三端弹框与开机自启【免费下载链接】ntfySend push notifications to your phone or desktop using PUT/POST项目地址: https://gitcode.com/GitHub_Trending/nt/ntfy当生产环境磁盘告警时希望笔记本和手机同时弹出一条消息。ntfy 是一个基于 HTTP PUT/POST 的推送通知服务一行 curl 发消息订阅端实时收到。原理主题即通道发布即推送ntfy 采用发布/订阅模型主题topic是一个无需注册的地址相当于密码任何客户端向https://ntfy.sh/主题名发 PUT/POST 即完成发布。订阅端对同一主题保持长连接服务端把新消息以 JSON 实时推下来CLI、浏览器、手机端共用同一套协议。最小 Demo两条命令收到第一条消息作用终端 1 保持订阅并打印 JSON终端 2 向同一主题发布一条消息验证收发链路# 终端 1订阅主题默认逐条打印 JSON含 id、time、message 等字段 ntfy subscribe mytopic # 终端 2发布消息返回 HTTP 200 即代表服务端已接收 curl -d Hello ntfy ntfy.sh/mytopic发布方没有身份所以主题名要取不易猜到的值例如带随机后缀的backup-8f3k2m。客户端与服务端是同一个ntfy二进制按 安装文档 装好后无需额外安装任何组件。把 ntfy 消息变成桌面原生通知三套系统的套路一致ntfy subscribe 主题 本地命令。客户端收到消息后把字段注入为环境变量再执行命令$NTFY_MESSAGE别名$m、$NTFY_TITLE$t、$NTFY_PRIORITY$p、$NTFY_TAGS$tags。用 notify-send 把 ntfy 消息弹成 Linux 桌面通知作用订阅 alerts 主题每条消息经 notify-send 弹出桌面通知-u critical 让高优先级消息置顶提醒# -u critical紧急告警走系统级提醒普通消息可去掉该参数 ntfy subscribe alerts notify-send -u critical ntfy 告警 $m仓库提供了一个不依赖 ntfy 客户端的纯 shell 版本 notify-desktop.sh它用curl -s ntfy.sh/mytopic/raw做长轮询逐行读消息后调用 notify-send适合已经跑着 curl 流水线的老脚本改造。订阅多个主题并做过滤时改用配置文件~/.config/ntfy/client.yml然后执行ntfy subscribe --from-config作用按主题绑定不同命令用 if 过滤器只放行 high/urgent 优先级避免普通消息刷屏# 自部署服务器时把 default-host 改成自己的地址 default-host: https://ntfy.sh subscribe: - topic: alerts command: notify-send -u critical ntfy 告警 $m if: # priority 过滤器是逻辑或high 或 urgent 才触发命令 priority: high,urgent - topic: deploy command: notify-send 部署完成 $message优先级取值为 low、default、high、urgent 四档。带 urgent 的消息在手机端的形态如下用 osascript 在 macOS 通知中心显示 ntfy 消息作用把 mac-alerts 主题的消息交给 osascript弹出带标题的原生通知# 双引号内再转义内层双引号保证 $message 传给 osascript 时才展开 ntfy subscribe mac-alerts osascript -e display notification \$message\ with title \$title\多主题配置写到~/Library/Application Support/ntfy/client.yml命令字段同样可用$message、$title等变量保存后ntfy subscribe --from-config生效。首次弹出前需在「系统设置 → 通知」中允许终端发送通知否则消息被静默丢弃。用 notifu 在 Windows 弹出 ntfy toast作用Windows 上调用 notifu 弹出 toastexit 0 明确告诉客户端命令正常结束# 配置文件位于 %AppData%\ntfy\client.yml subscribe: - topic: win-alerts command: | # %NTFY_MESSAGE% 是 Windows 侧的变量写法 notifu /m %NTFY_MESSAGE% /t 10 exit 0保存后运行ntfy subscribe --from-config。notifu 未安装时命令会失败但不影响其他主题可先用where notifu确认安装位置。把告警接进 CI/CD 与 webhook 自动化长任务收尾用 --wait-cmd 发部署结果作用部署完成即推送结果--wait-cmd 把长命令包起来退出后自动发一条带耗时的消息# 显式指定 priority让桌面通知与手机通知更醒目 ntfy publish --title 部署完成 --priority urgent deploy-topic v2.3.0 已上线 # rsync 退出无论成败后自动发布结果省去在脚本里手写 curl ntfy publish --wait-cmd backup-topic rsync -av ./data/ backup:/data已有长进程时可用ntfy publish --wait-pid $(pidof rsync) backup-topic直接跟踪 PID。用 webhook 模板把 GitHub 与 Alertmanager 接进 ntfy作用Alertmanager 的 webhook 指向自托管服务器主题?template 让服务端先把 JSON 渲染成可读文本receivers: - name: ntfy webhook_configs: - url: http://localhost:8080/alerts?templatealertmanager send_resolved: true自托管服务器的 templates 目录 内置github.yml、alertmanager.yml、grafana.yml三套模板。GitHub 仓库的 Webhook 只需把 Payload URL 填成https://服务器/mytopic?templategithubContent type 选application/jsonissue、PR、star 事件都会变成一条格式化消息用 systemd 用户服务让 ntfy 订阅后台常驻三个平台的常驻模式相同一份client.yml加一个服务管理器。区别只在配置文件路径与单元格式。作用克隆仓库取出服务单元装进用户级 systemd登录桌面即自动执行 --from-config 订阅# 服务单元随仓库分发内容即 ExecStartntfy subscribe --from-config git clone https://gitcode.com/GitHub_Trending/nt/ntfy cp ntfy/client/user/ntfy-client.service ~/.config/systemd/user/ systemctl --user daemon-reload systemctl --user enable --now ntfy-client两个要点用户服务user 单元运行在桌面会话内能调用 notify-send、访问 home 目录系统服务client/ntfy-client.service以ntfy用户运行弹不了桌面通知只适合纯转发场景。macOS 无 systemd用 LaunchAgent 在~/Library/LaunchAgents/里包一个ntfy subscribe --from-config即可Windows 在任务计划程序中创建「登录时」触发任务操作填ntfy.exe subscribe --from-config。排错速查现象可能原因一条命令定位订阅端收不到消息两端主题名或主机不一致 curl -d test ntfy.sh/mytopicLinux 不弹桌面通知误用了系统服务无法访问桌面会话systemctl --user status ntfy-client命令里$m为空双引号被外层 shell 提前展开变量未传到子进程改用单引号重跑ntfy sub t echo $mWindows 命令不执行notifu 未安装或不在 PATHwhere notifu私有主题返回 401订阅时缺少凭据ntfy sub -u user:pass mytopic延伸阅读CLI 订阅与发布命令发布消息、优先级与标签API 订阅与消息过滤客户端配置骨架文件systemd 用户服务单元【免费下载链接】ntfySend push notifications to your phone or desktop using PUT/POST项目地址: https://gitcode.com/GitHub_Trending/nt/ntfy创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED — 相关阅读

相关资讯

LATEST — 最新资讯

最新发布

TODAY — 本日精选

新闻

WEEKLY — 本周精选

新闻

MONTHLY — 本月精选

新闻