市面上的 UPS 本身可以通过 USB 接口与 UPS 通讯,实现控制当市电断电时自动关机,当市电恢复时自动开机。

但是对 UPS 有要求,仅支持少数带通信接口的 UPS,而且市面上大多 UPS 机器只有一个 USB 接口,被 UPS 占用后就无法插 U 盘或移动硬盘了。如果没有通讯接口,一旦停电需用手动关机!!

以下为普通 UPS实现停电自动关机方案,且不占用设备USB端口。

一、登陆并配置定时任务

使用 root 权限登陆 SSH 命令控制界面,假设定时脚本是 ping.sh ,输入命令 crontab -e 配置定时任务。

在最后一行增加下面内容

*/1 * * * * /usr/bin/sudo sh /usr/local/src/ups/ping.sh #每分钟检测一次

二、创建 ping.sh 批处理脚本文件

#!/bin/sh
ping -c 1 192.168.1.1 > /dev/null
if [ $? -eq 0 ]; then
    echo "Router is reachable"
else
    #记录异常日志
    current_time=$(date +"%Y-%m-%d %H:%M:%S")
    echo "$current_time 断电触发UPS保护,执行关机" >> /usr/local/src/ups/error.log
    #执行关机  多执行几次sync  保证数据不丢失
    sync && systemctl stop docker && sync && sync && sync && shutdown -h now
fi

三、赋予 ping.sh 批处理脚本文件权限

chmod 755 /usr/local/src/ups/ping.sh

四、重启服务开始执行任务

输入命令 reboot 重启设备,程序就开始执行了。

或 重启 Crontab 服务

/sbin/service crond restart

注意!!:

需要 PING 的路由器设备必须接市电,确保断电后无法链接 !!!