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

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

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

我一般长期开机的主机是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也要看实际情况。

我们首先进入命令行手动运行测试一下脚本是否正常工作,断开网络分别执行两个脚本。测试正常之后,最后我们需要把check.sh添加到cron里每分钟定时执行:

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

每分钟执行一次

        • ? /home/john/sh/check.sh

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

posted @ 2022-09-19 10:36  汉学  阅读(1780)  评论(0)    收藏  举报