本文主要介绍的是标题的后半部分,如何通知到手机实时查看,使用的是群晖的chat软件,有手机客户端,可以接收通知。
一、chat安装
这个软件有的版本的套件商城是没有的,需要根据自己的版本下载适合的,我的是这个版本
下载后,在套件中心中选择手动安装套件
选择文件安装即可
二、设置机器人
安装好先进入web界面,在右上角的头像中选择"整合"
由于只是接收通知,不需要交互,选择传入的webhook就够用
添加名称等,记住其中的url,主要是token
可以新增一个频道,专门使用
三、接口调用
可以直接设置定时任务调用,也可以自己写脚本调用,主要是token和通知的内容,格式如下
curl "http://127.0.0.1:5000/webapi/entry.cgi?api=SYNO.Chat.External&method=incoming&version=2" -d "payload={\"text\": \"通知内容\"}&token=zdaFaUgok1WcSbYrAHF82qWSu2JDzSEu3zVHGyrDS2YVRSzv8MprIeh*******"
因为我要监控硬盘,所有需要先获取硬盘状态,为了方便,我写了一个脚本,然后使用任务计划执行
脚本:
#!/bin/bash
# 定义结果字符串变量
result=""
# 获取磁盘状态并拼接结果字符串
for disk in sdc sdd sde; do
# 获取磁盘状态
status=$(hdparm -C "/dev/$disk" | grep state | awk '{print $4}')
# 根据状态拼接结果字符串,并进行替换
if [ "$status" = "standby" ]; then
case $disk in
sdc)
result="$result\n影音盘-sdc 休眠"
;;
sdd)
result="$result\n备份盘-sdd 休眠"
;;
sde)
result="$result\n台式机-sde 休眠"
;;
esac
else
case $disk in
sdc)
result="$result\n影音盘-sdc 活跃"
;;
sdd)
result="$result\n备份盘-sdd 活跃"
;;
sde)
result="$result\n台式机-sde 活跃"
;;
esac
fi
done
# 去除第一个换行符
result="${result:2}"
# 构造 curl 命令
curl_command="curl 'http://127.0.0.1:5000/webapi/entry.cgi?api=SYNO.Chat.External&method=incoming&version=2' \
-d 'payload={\"text\": \"$result\"}' \
-d 'token=zdaFaUgok1WcSbYrAHF82qWSu2JDzSEu3zVHGyrDS2YVRSzv8MprIehY0l*****'"
# 执行 curl 命令
eval "$curl_command"
上面的脚本是监控了三个硬盘的状态,很多代码都是为了生成通知的内容,这个可以根据情况修改,监控别的也可以。
注意的点是token要写对,格式要对,内容中有双引号等特殊字符需要转义。
定时任务调用,在控制面板->计划任务中新增一个root调用的任务,我设置了5分钟执行一次
四、下载手机连接查看
可以在群晖的官网下载手机app版本的chat
登录后找到在web界面创建的频道,就能收到通知了,效果如下
之所以要做这个功能,是为了监控硬盘休眠对功耗的影响,最近一直在为降低功耗做努力,还是有点效果,只有一个机械硬盘活跃的时候,功耗只有20瓦,加上路由器才28瓦。
评论区