市电断电黑群辉:自动化关机教程

大多数UPS都支持群晖DSM,只要将UPS与群晖连接,一旦断电,UPS就会自动为群晖供电。但是有些UPS型号不兼容群晖,或需要额外的设备才能与群晖通信,这就无法及时向群晖发送断电信号。

突然断电会对硬盘造成很大的伤害,极有可能导致重要数据的丢失。为了解决这个问题,老宁我特地用AI编写了一个脚本:只要群晖检测到断电,就会自动执行关机操作,从而保护数据和硬件。

当然,断电后的关机只解决了一半问题。电力恢复后,我们还需要群晖自动开机。所以在文章的后半部分也有如何唤醒群晖的操作,一起来看看。

关机脚本

让我们先来探讨一下自动关机的原理。

首先需要一个定时执行的脚本,其核心功能是定期ping一个特定的局域网IP地址。这个IP地址对应的设备是没有连接UPS的,因此当断电发生时,这个设备会立即失去响应。如果脚本检测到无法ping通这个IP,就可以合理推断发生了断电,随即触发群晖的关机操作。

为了进一步提高可靠性,脚本会每次执行ping操作都会发送10次ping命令,当两次ping操作(20次ping)都失败时,才会执行真正的关机命令。

了解了原理后,我们来看看如何在群晖上如何部署和执行这个脚本。

🔻 首先去论坛下载脚本https://www.synocircle.top/d/128,再把脚本上传到群晖中。(任意文件夹都行)

🔻 右键脚本进入属性选项卡,把脚本路径复制下来。

🔻 打开群辉控制面板,新增任务计划-用户定义的脚本,任务名称可以随意,用户账户必须选择root。

🔻 设置计划时间为每分钟执行一次脚本。

🔻 在脚本输入框中输入bash /volume1/homes/xxx/ups/ping_poweroff.sh 10.168.2.5命令,注意/volume1/homes/xxx/ups/ping_poweroff.sh为前面上传的脚本路径,10.168.2.5为需要ping的IP地址。(我的All in one连着小米智能插座,所以这里ping的IP为插座的IP)

🔻 如果嫌麻烦不想在脚本后面加IP参数,也可以直接修改shell脚本的代码,把IP写死在脚本中。

🔻 当脚本执行完毕后,会在同级目录生成日志文件network_monitor.log

🔻 如果两次ping都失败,那么就会执行关机操作。(前面设置的每分钟ping一次,也就是断电2分钟关闭群晖)

因为脚本中使用synopoweroff执行关机操作,它会等待所有服务停止后再关机,所以整个关机过程非常慢,如果你觉得整个关机过程时间超过了UPS所能承受的极限,那么可以把前面ping的间隔设置得更短一些。

点赞

发表回复

电子邮件地址不会被公开。必填项已用 * 标注