ntfy 如何用 CLI 订阅主题并为每条消息执行自定义命令

发布时间:2026/11/8 23:44:44

ntfy 如何用 CLI 订阅主题并为每条消息执行自定义命令 ntfy 如何用 CLI 订阅主题并为每条消息执行自定义命令【免费下载链接】ntfySend push notifications to your phone or desktop using PUT/POST项目地址: https://gitcode.com/GitHub_Trending/nt/ntfy当你希望某条 ntfy 消息到达时机器上能自动跑一段处理逻辑弹桌面通知、执行脚本、记录日志可以借助 ntfy CLI 完成。ntfy 的服务器端和客户端是同一个ntfy二进制CLI 内置了ntfy subscribe命令它有两种工作模式ntfy subscribe TOPIC把每条到达的消息以 JSON 打印出来ntfy subscribe TOPIC COMMAND则对每条消息执行一次 COMMAND并把消息字段以环境变量形式传给该命令。本文覆盖安装 CLI、为每条消息挂载命令、用一条测试消息验证以及如何同时订阅多个主题、以 systemd 服务常驻运行。一、安装 ntfy CLI适用环境Linuxamd64、armv6、armv7、arm64、macOS、Windows。注意 macOS 上只支持 CLIntfy publish和ntfy subscribe不支持运行 ntfy 服务器。主路径是 Linux 二进制包以 amd64 为例版本 v2.27.0来自 安装文档wget https://github.com/binwiederhier/ntfy/releases/download/v2.27.0/ntfy_2.27.0_linux_amd64.tar.gz tar zxvf ntfy_2.27.0_linux_amd64.tar.gz sudo cp -a ntfy_2.27.0_linux_amd64/ntfy /usr/local/bin/ntfysudo cp会把二进制安装到/usr/local/bin/ntfy只需前两条命令即可用于 CLI 订阅安装文档中同一小节末尾的sudo ntfy serve是用于启动服务器只使用 CLI 时不需要执行。其他可选安装方式详见 安装文档Debian/Ubuntu 或 Fedora/RHEL 官方源/仓库安装会同时部署服务器服务brew install ntfyHomebrew 提供的仅是 CLI支持 Linux 和 macOSWindows 下载 ZIP 或scoop install ntfy。二、客户端配置文件可选安装后可选地创建客户端配置位置因平台和用户而异Linux 非 root 用户~/.config/ntfy/client.ymlLinux root 用户/etc/ntfy/client.ymlmacOS 非 root 用户~/Library/Application Support/ntfy/client.ymlWindows%AppData%\ntfy\client.yml仓库内的 配置骨架 带完整注释可直接拷下来改。如果订阅的是 ntfy.sh 公共服务器配置文件可以不改如果自建了服务器需要修改default-host它用于展开ntfy publish和ntfy subscribe中的短主题名# Base URL used to expand short topic names in the ntfy publish and ntfy subscribe commands. default-host: https://ntfy.myhost.com其中https://ntfy.myhost.com是文档示例地址替换为你自己服务器的实际地址。三、订阅主题并执行命令ntfy subscribe别名sub的调用方式决定行为1. 先以 JSON 流查看消息ntfy subscribe TOPICTOPIC是主题名。这样运行时每条到达的消息都会打印出它的 JSON 表示适合后面接一个想流式读取 JSON 的命令。除非传了--poll该命令会一直挂起不退出加--poll则只查询最新消息后退出可在脚本中使用。文档示例输出如下文档示例$ ntfy sub mytopic {id:nZ8PjH5oox,time:1639971913,event:message,topic:mytopic,message:hi there} {id:sekSLWTujn,time:1639972063,event:message,topic:mytopic,priority:5,message:Oh no!} ...2. 为每条消息执行一条自定义命令ntfy subscribe TOPIC COMMAND这样运行时每来一条消息就执行一次 COMMAND。文档给出的几个例子ntfy sub mytopic notify-send $m ntfy sub topic1 /my/script.sh ntfy sub topic1 echo Message $m was received. Its title was $t and it had priority $p消息字段以环境变量传给命令可在脚本里直接使用变量别名说明$NTFY_ID$id唯一消息 ID$NTFY_TIME$time消息送达的 Unix 时间戳$NTFY_TOPIC$topic主题名$NTFY_MESSAGE$message、$m消息正文$NTFY_TITLE$title、$t消息标题$NTFY_PRIORITY$priority、$prio、$p消息优先级1最低5最高$NTFY_TAGS$tags、$tag、$ta消息标签逗号分隔列表$NTFY_RAW$raw原始 JSON 消息这些是环境变量通常不需要过多担心引号问题——只要用双引号包住变量引用即可。3. 验证发一条测试消息在另一个终端用ntfy publish别名pub、send、trigger向同一主题发一条消息文档示例ntfy publish mytopic This is a message判断标准JSON 模式下订阅终端会多打印一行包含该消息内容的 JSON命令模式下COMMAND 会被执行一次例如上面的echo例子会输出类似Message This is a message was received.的结果notify-send $m则会弹出一条桌面通知。如果始终没有任何输出先确认两端连的是同一个服务器default-host是否一致以及主题名是否相同。四、同时订阅多个主题--from-config当需要一次订阅多个主题、且每个主题执行不同命令时用配置模式ntfy subscribe --from-config该命令读取配置文件中的subscribe配置块。下面的例子改编自 配置骨架 中的注释示例default-host: https://ntfy.sh default-user: phill default-password: mypass subscribe: - topic: mytopic command: /usr/local/bin/mytopic-triggered.sh - topic: myserver.com/anothertopic command: echo $message if: priority: high,urgent - topic: secret command: notify-send $m user: phill password: mypass - topic: token_topic token: tk_AgQdq7mVBoFD37zQVN29RhuMzNIz2各订阅项的含义command是该主题收到的消息要执行的命令可以是脚本路径也可以是内联 shell 脚本订阅文档 给出了一个多行内联脚本读取 CPU 温度并输出告警的完整例子if是过滤器可按message、title、priority逗号分隔列表逻辑或和tags逗号分隔列表逻辑与过滤消息例如上面的priority: high,urgent表示只有 high 或 urgent 优先级的消息才触发命令。如果大部分或全部订阅使用相同凭据可在client.yml中设置default-user和default-password或default-token二者不能同时设置还可以设置default-command当某个订阅没有提供命令时使用它作为默认命令。订阅自身的 user/password/token 或 command 会覆盖默认值。文档在这里有一条明确警告default-user、default-password和default-token会发送给每个没有自带凭据的主题即使该主题不需要认证所以要确保所订阅的服务器/主题使用 HTTPS防止用户名密码泄露。五、让订阅常驻ntfy-client systemd 服务可选如果希望订阅在开机或登录后自动运行可以使用仓库内的ntfy-clientsystemd 服务单位文件见 系统服务 和 用户服务。二者默认都不启用需要手动启用。系统服务以ntfy用户运行开机启动。编辑/etc/ntfy/client.yml后以 root 执行sudo systemctl enable ntfy-client sudo systemctl restart ntfy-client系统服务受常规 Linux 权限限制不能在你的 X 会话里以主用户身份执行命令即无法调用notify-send弹桌面通知。用户服务在用户登录桌面环境时运行能访问桌面环境可执行notify-send和用户主目录下的命令。编辑~/.config/ntfy/client.yml后执行不加 sudosystemctl --user enable ntfy-client systemctl --user restart ntfy-client所以需要桌面通知或依赖用户目录的脚本选用户服务只需静默执行命令写日志、调脚本系统服务即可。六、订阅需要认证的主题按需如果服务器启用了访问控制部分主题的读/写受保护只有持正确凭据的用户能订阅。此时用 Basic Authntfy subscribe \ -u phil:mypass \ ntfy.example.com/mysecrets-u后是username:password主题名前面可带服务器主机以指向别的服务器。自建服务器场景下文档特别提醒务必使用 HTTPS避免被窃听暴露密码。也可以把凭据写进配置的单个订阅项里- topic: secret command: notify-send $m user: phill password: mypass另外client.yml的subscribe配置块也支持在每个订阅项上单独指定token用于以访问令牌认证的主题。七、边界与限制不传--poll时ntfy subscribe会一直挂起需要取一次最新就退出的脚本场景使用--poll。macOS 只有 CLI 可用不能在上面运行 ntfy 服务器服务器需要部署在 Linux 或 Windows 上。系统服务systemd system service无法在用户的 X 会话中执行命令需要桌面交互时改用用户服务。设置默认凭据后凭据会对所有未自带凭据的订阅生效文档要求所订阅的服务器/主题使用 HTTPS。CLI 并不是收发消息的唯一方式消息也可以用curl直接发送见 发布文档订阅也可走 HTTP API是否选 CLI 取决于使用场景。【免费下载链接】ntfySend push notifications to your phone or desktop using PUT/POST项目地址: https://gitcode.com/GitHub_Trending/nt/ntfy创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/11/8 0:55:32

用Romm CHD压缩游戏镜像,省60%空间

用Romm CHD压缩游戏镜像,省60%空间 【免费下载链接】romm A beautiful, powerful, self-hosted ROM manager and player. 项目地址: https://gitcode.com/GitHub_Trending/rom/romm 昨晚朋友在群里问我:“那个 4.7G 的 PS2 镜像,能不能…

2026/11/8 23:43:08

电工证有多少分及格 值不值得考?这些细节你必须知道

电工证有多少分及格 值不值得考?这些细节你必须知道 证书过期了不知道怎么复审延期?你不是一个人,这是很多电工从业者在职业道路上都会遇到的“坎”。尤其是在驻马店这样的建筑工地,电工证不仅是上岗的“入场券”,更是保障作业安全、避免法律风险的“护…

2026/11/8 23:43:08

安徽省电工证中级怎么考?含金量高的秘诀都在这了

安徽省电工证中级怎么考?含金量高的秘诀都在这了 工地太忙根本没时间复习考试,尤其是像你这样在驻马店房建工程一线干的电工师傅,天天忙得脚不沾地,哪还有空去复习?别急,安徽省电工证中级虽然含金量高,但考过的人知道,其实只要方法对了,考过并不难,…

2026/11/8 23:43:08

三门峡电工上岗急!室内电工作业要求怎么报名?看完少走十年弯路

三门峡电工上岗急!室内电工作业要求怎么报名?看完少走十年弯路 急需特种作业证才能上岗找工作,这话不是危言耸听。在三门峡,不少从事公路工程的电工师傅,因为没拿到室内电工作业证,被项目拦在门外,连个临时工的活都干不了。今天我就从真实案例出发,说…

2026/11/8 23:43:08

人社局电工证有效吗?怎么报名别踩坑,新手必看全攻略

人社局电工证有效吗?怎么报名别踩坑,新手必看全攻略 你是不是也这样,听说要考个电工证才能上岗,但又不知道去哪报名,怕被中介坑?别急,今天就把【人社局电工证有效吗】这个问题讲清楚,顺便告诉你 怎么报名 才靠谱,不花冤枉钱。…

2026/11/8 23:43:08

安徽省电工证中级有效期多久 电子证书怎么查

安徽省电工证中级有效期多久 电子证书怎么查 你是不是也担心学历不高报不上名?别急,今天咱们就聊聊【安徽省电工证中级】这个事,尤其是 电子证书 怎么查、怎么用,还有很多人关心的 有效期 问题,别看是中级证,用处可不小。…

2026/11/8 23:38:07

高低压电工证很难吗怎么报名才不踩坑

高低压电工证很难吗怎么报名才不踩坑 你现在最头疼的事是什么?不是找不到工作,而是 没有特种作业证,根本找不到工作 。特别是像你这样在开封干建筑的工人,很多工地都要求必须有高低压电工证才能上岗。 高低压电工证很难吗?怎么报名?…

2026/11/8 0:00:27

电工证丢失还能补吗?千万别踩坑,丢了证等于失业

电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。…

2026/11/8 0:00:27

电工证丢失还能补吗?千万别踩坑,丢了证等于失业

电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。…

2026/11/7 14:54:47

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/7 14:50:12

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑