unifi-protect-backup + pushplus:录像备份结果推到微信
效果:UniFi Protect 录像备份成功或失败后,微信收到一条结果。该工具以日志为主,一般用包装脚本或 systemd 在进程结束后 curl。
前置条件
- 一个 pushplus token(官网扫码获取)
- 已部署 unifi-protect-backup
- 能改启动命令、compose 或 systemd 单元
配置步骤
若软件本身没有 Webhook / Apprise,用包装脚本(Docker 则把脚本当 entrypoint 或 command 外包一层):
#!/bin/sh
if unifi-protect-backup "$@"; then
curl -s -X POST "https://www.pushplus.plus/send" \
-H "Content-Type: application/json" \
-d "{\"token\":\"$PUSHPLUS_TOKEN\",\"title\":\"Protect 备份成功\",\"content\":\"录像已备份\",\"template\":\"txt\"}"
else
curl -s -X POST "https://www.pushplus.plus/send" \
-H "Content-Type: application/json" \
-d "{\"token\":\"$PUSHPLUS_TOKEN\",\"title\":\"Protect 备份失败\",\"content\":\"请查看容器或服务日志\",\"template\":\"txt\"}"
exit 1
fi
chmod +x 后把原来的启动方式改成跑这个脚本。PUSHPLUS_TOKEN 用环境变量注入,不要写进仓库。
systemd 可只在失败时推:
[Service]
ExecStopPost=/bin/sh -c 'if [ "$$EXIT_STATUS" != 0 ]; then curl -s -X POST https://www.pushplus.plus/send -H "Content-Type: application/json" -d "{\"token\":\"$PUSHPLUS_TOKEN\",\"title\":\"Protect 备份失败\",\"content\":\"exit $$EXIT_STATUS\",\"template\":\"txt\"}"; fi'
若后续版本增加了只能填一个 URL 的 Webhook,用固定文案:
https://www.pushplus.plus/send?token=你的token&title=Protect备份&content=请查看备份日志
对方 POST 的日志 JSON 不会自动变成 content。
验证
curl -X POST "https://www.pushplus.plus/send" \
-H "Content-Type: application/json" \
-d '{"token":"你的token","title":"unifi-protect-backup 配置测试","content":"token 可用","template":"markdown"}'
返回 JSON 的 code 为 200 后,再手动跑一次备份或把包装脚本的成功/失败分支各走一遍。
常见问题
每次增量都推,太吵? 只在失败时 curl,或按天汇总。成功不必每段录像播报。
脚本里命令找不到? Docker 镜像入口不一定叫 unifi-protect-backup,以容器 docker inspect 的 Cmd / Entrypoint 为准。
收不到? 先确认跑脚本的环境有 PUSHPLUS_TOKEN,且能访问 www.pushplus.plus。见 收不到消息。