非管理型UPS如何实现停电后NAS的自动关机脚本
注:本文只适用于威连通的NAS,理论上来讲也是可以拿去其他LINUX内核的NAS下使用,但是具体的脚本内容还是需要做些修改。另外本文只是作为生活中的一点经验积累,如果有问题还请高手解答。
自从有了NAS后,就一直在想着给NAS配置一个后备电源,网上和张大妈家能找到最多的莫过于施耐德APC BK650-CH,但是价格已经不是当年的价格了,然后外观也不是很喜欢。所以在淘宝、京东逛了几天后就入了山特(SANTAK) 山特ET550,其实买这个第一是外观吸引了我,其他的也没啥优点就是一个普通的UPS,附加稳压和防浪涌功能,价格当时买的时候在300以内,现在来看也是在300左右浮动。
施耐德APC BK650 带管理功能,可以实现停电后自动关机:
APC BR550G-CN UPS不间断电源 330W/550VA UPS电源带电源管理功能,对UPS要求高的用户可以选择这款:
不差钱的建议入这款,虽说性价比不高,但是功能全啊,带稳压带USB带防浪涌带调压,简直就是为家用NAS生的。so,趁着双十一还没过完,有好价了就不要犹豫了。
山特(SANTAK) 山特ET550 550VA/300W非管理型的UPS,无法实现停电后自动关机的功能:
山特TG-E500 后备式ups不间断电源家备用电脑500VA/300W 不带电源管理功能也就是非管理型UPS:
入手了UPS就捉么着怎么实现停电后自动关闭NAS,在网上查了很多资料,最后总结加上自己的一点小智慧,最终实现了自己的NAS在停电后自动关机的功能。
对于不带USB口或者串口的UPS后备电源来说,断电后NAS自动关机只能通过检测路由器或其他网络设备来实现NAS的自动关机,从而来保护硬盘。所以写这个脚本的初衷就不是为了延长使用时间,而是为了在失去市电后通过UPS供电并自动关机来实现对硬盘的保护。
脚本通过计划任务周期性运行,在检查到外部网络设备停电关机后,NAS无法PING通被检测网络设备,以此来判断市电可能中断,然后脚本在检测到PING失败后,自动执行NAS关机指令,使NAS在UPS电源电池耗尽前安全关机,不至于突然断电造成硬盘磁头归位的情况。但是这样做有个缺点是NAS关机后,在市电恢复后,无法实现自动开机,只能通过路由器远程唤醒开机(远程唤醒这部分不在本文内涉及)。
先看下脚本执行的情况吧:
可以看到我标注的地方,在我认为的断电后,系统日志里面记录了我们在脚本里面设置的相关信息。
脚本1,这一部分主要是用来ping被检测的网络设备是否掉线的,如果被检测设备通信正常,则向日志内写入电源正常并退出,如果通信不正常,则在等待延时结束后跳转去执行脚本2:
在经过脚本1的延时后,进入脚本2我们再次进行PING被测网络设备看通信是否正常,如果正常就向系统日志内写入相关信息说可能出现过断电的情况并已经恢复,但是在我们延时的那个时间里没有恢复正常,则去执行关机指令使NAS关机:
第一个脚本是用来检测是否停电,第二个是用来再次检测主机,看电源是否恢复,如果恢复了就不再执行关机操作。其中黄色标注的地方是需要注意的一些地方,错了恐怕脚本就不能执行了。
IP= 后面的就是你要检测的挂在市电下的网络设备,可以是路由器也可以是无线网关比如小米的智能电源插座,电视盒子什么的。前提是需要给检测的设备在路由器里面手动给指定IP(此处由于篇幅问题不在本文内涉及),这样才不会发生设备重启后,被检测设备因DHCP服务而造成把IP分配给其他设备。
检测时间,根据自己UPS的性能,自己拿捏着设置就行了。
本来想把脚本写成一个文件进行执行的,但是写完后发现执行不了,可能问题出在了IF语句的嵌套上面,所以就老老实实的分成了两个文件来写,脚本写的比较粗糙,注释什么的都是当时写的时候注的,后来脚本修改了几次,注释也就没改。纯粹的业余小白,高手勿喷。
拿到脚本后如何使用:
下载脚本后用WINSCP上传到NAS的硬盘目录下,不上传到/usr/sbin是因为重启后添加进去的脚本就被删除了。所以自己找个目录放进去然后把目录地址记下来。
比如我放在了NAS的第一块硬盘里,自己建的一个POWER文件夹里。
如下图黄色标记处路径信息:
然后双击打开上传后的脚本文件用WINSCP自带的编辑器修改检测主机的IP和时间,最后保存。编辑器界面和需要修改的地方如上面的脚本1和2的截图内黄色标记的地方。
完了后右键单击脚本文件,选择属性,检查文件权限,按图设置权限即可。
由于威连通没有提供自定义计划任务的地方(这个是值得吐槽的地方,这一点没有群辉做的好)所以我们只能通过WINSCP来修改计划任务配置文件,来增加新的计划任务,来让NAS运行我们的检测脚本。
威连通的计划任务配置文件在/etc/config文件夹下,进入后找到crontab文件打开,添加计划任务:
*/5 * * * * sh /share/CACHEDEV1_DATA/power/powerfail
从SH 后开始一直到/powerfail中间的文件路径加粗的地方需要替换为你自己的路径,5 代表每5分钟执行一次POWERFAIL脚本
最后点保存后,进日志管理器里面看看是否已经有相关的检测信息在了。如果没有可以用putty连上NAS的终端,在终端里面直接运行脚本看是否正常。有错误根据提示修改就可以了。
最后如果不想每隔几分钟就向系统日志内写入电源正常的信息提示,可以在脚本1里面write_log "AC Power OK!"这条语句前面加一个#号并保存就可以了。
脚本下载链接:
链接 密码: frfz
WINSCP下载链接:
链接 密码: hgsu
逝去岁月
校验提示文案
五千万啊
校验提示文案
大兔子君007
校验提示文案
lyuyee
校验提示文案
值友6540356864
校验提示文案
DreamerYY
校验提示文案
caozh
校验提示文案
[已注销]
校验提示文案
lendlice
校验提示文案
Mars_V
校验提示文案
Atjl
校验提示文案
五千万啊
校验提示文案
一个鸡蛋黄
校验提示文案
BJ0769
校验提示文案
BrightNeo
校验提示文案
psp6670
校验提示文案
gz-ss
校验提示文案
vipnec
校验提示文案
香菇肥牛
校验提示文案
鸡腿110
校验提示文案
[已注销]
校验提示文案
caozh
校验提示文案
值友5141142750
校验提示文案
小小泽马里奥
校验提示文案
熊尼克
校验提示文案
Atjl
校验提示文案
神月
校验提示文案
DreamerYY
校验提示文案
值友9484258536
校验提示文案
vxlinjie
校验提示文案
sunnyquan
校验提示文案
值友6540356864
校验提示文案
长脸叔叔
校验提示文案
lyuyee
校验提示文案
大兔子君007
校验提示文案
鸡腿110
校验提示文案
香菇肥牛
校验提示文案
vipnec
校验提示文案
逝去岁月
校验提示文案
Mars_V
校验提示文案