适用任何UPS电源:群晖ping自动关机任务

我们知道突然停电会对我们的磁盘造成一定的损伤,但是有时候家里停电不可避免,NAS里面的磁盘存有我们的重要数据,如果长期突然停电,可能造成NAS磁盘损毁,数据无价,于是好多人给自己的NAS配了不间断电源UPS,原本UPS和NAS之间有一条数据线,可以通过数据线通信,停电后UPS会通知NAS停电信息,NAS就会做成必要的保护措施,但是并不是所有的NAS支持的所有的UPS,所以就出现了今天需要解决的问题,UPS和NAS之间默认不兼容,当然也可通过网上找相关的驱动来解决,但也不是万能的,尤其是自己组装的UPS,更不可靠和NAS通信,这种情况下,我们可以通过在NAS上创建计划任务的方式来解决,今天我们就以群晖7.01的系统作为演示,其他NAS系统同理。

原理:

市电停电后,我们的路由器或者网关首先会关机,但是我们的NAS因为接了UPS,所以并不会马上关机,但是UPS的电量也是有限的,坚持不了太长时间,我们可以在NAS上创建定期循环任务,来ping路由的IP地址,如果ping不通,NAS就在延迟几分钟后关机,从而保护NAS里面的磁盘。

教程开始

1.打开群晖的控制面板,点击任务计划

2.依次点击:新增——计划任务——用户自定义脚本。

3.填写计划名称,用户账号必须选择root,否则可能运行出错。

4.点击计划,设置为每天运行,运行频率根据你UPS续航能力设置,建议10-30分钟。

5.切换到任务设置,复制粘贴下面的代码,需要修改则这段代码

MonitorIP=192.168.1.1
DelayTime=600s

IP是你的网关地址(或者能代表停电关机的的IP),和DelayTime就是ping通以后的延迟关机时间。

代码

#!/bin/sh

MonitorIP=192.168.1.1
DelayTime=600s

if ping $MonitorIP -W 2 -w 2 -c 2 | grep '^[0-9].*ms$' > /dev/null
then
 echo "Power on."
else
 synologset1 sys warn 0x11600036
 sleep $DelayTime
 if ping $MonitorIP -W 2 -w 2 -c 2 | grep '[0-9].*ms$' > /dev/null
 then
  synologset1 sys warn 0x11600035
 else
  synologset1 sys warn 0x11600037
  poweroff
 fi
fi

exit 0

 

 

THE END