1. 首页
  2. 科技数码

家庭服务器 篇十八:入门级UPS如何实现断电自动关机

这篇文章是补一个坑。我之前介绍过容易断电的环境主机要带一个UPS。

入门级UPS如何实现断电自动关机

直流供电的小主机二十几块钱买个电池就可以实现基础UPS功能;台式机买个百来块的UPS也够用。我买UPS主要是应付频繁断电。不过有网友问到了一个问题:这种UPS没有断电关机功能,如何实现断电关机?这里我就来回复一下如何解决这个需求:

断电关机是UPS的一个基础功能,主机通过USB连接UPS,UPS断电时会发送关机信息给主机,通过UPS配套软件实现关机。只不过丐版的UPS不带这个功能,但是我们可以换个思路实现。

一般的方法是通过一个脚本定时ping路由器网关或者知名DNS(比如114DNS114.114.114.114,或者阿里DNS223.5.5.5)。如果ping不通就设定几分钟之后执行关机脚本。

Windows系统有现成的软件,软件设置成开机运行后,如果ping不通网络就会在设定时间关机。不过我不太喜欢这种方式,主要是软件无法设定ping的IP,所以我不知道这个软件是否会突然失效。但Windows有现成软件(不止一个),所以实现起来确实很简单,相信对于大家而言毫无难度。

入门级UPS如何实现断电自动关机

入门级UPS如何实现断电自动关机

我一般长期开机的主机是Linux系统,我详细介绍一下通过脚本实现主机的断电自动关机。具体思路是断电后路由器会断网,这个时候主机无法ping通网络,然后脚本就会执行关机操作:

首先我们新建一个check.sh的脚本,check.sh的作用用于检测设备是否断电,如果未断电没有其它操作,如果断电则执行关机脚本:

我保存脚本的路径是/home/user/sh/check.sh,大家按需修改:

#!/bin/sh
ping -c 1 192.168.1.1 > /dev/null
ret=$?
if [ $ret -ne 0 ]
then
echo ' compuer will shutdown in 3 mintues! '
sleep 180
/home/user/sh/shutdown.sh
fi

如果检测到网络不通,脚本会输出一个提示并在3分钟后执行关机脚本。shutdown.sh这个脚本起到两个功能:再ping一次如果网络还不通就关机,如果网络通了就不关机。

#!/bin/sh
ping -c 1 192.168.1.1 > /dev/null
ret=$?
if [ $ret -ne 0 ]
then
echo ' shutdown now ! '
echo 密码 | sudo -S poweroff
else
echo ' AC is work ! '
fi

注意:IP需要根据实际情况设置,一般来说ping网关最好,不会因为网络故障而关机。此外两个脚本都需要chmod 755 添加执行权限。至于使用shutdown还是poweroff也要看实际情况。

我们首先进入命令行手动运行测试一下脚本是否正常工作,断开网络分别执行两个脚本:

入门级UPS如何实现断电自动关机

测试正常之后,最后我们需要把check.sh添加到cron里每分钟定时执行:

crontab -e然后添加执行脚本执行规则

#每分钟执行一次
* * * * ? /home/john/sh/check.sh

这样就可以了!不需要借助其它硬件也能实现断电(其实是断网关机)是不是很简单。再配合局域网唤醒设备实现远程开机即可。

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

原创文章,作者:夜风博客,如若转载,请注明出处:https://www.homedt.net/469757.html