Linux如何使用普通的UPS做到断电自动关机

文章2021-04-23
Linux如何使用普通的UPS做到断电自动关机-下一朵云

1.创建供电检测脚本 ups.sh

vi ups.sh

填入以下内容,然后输入 :wq保存

#!/bin/sh
while
ping -c 4 192.168.2.1 > /dev/null
[ $? -eq 0 ];
do
echo '供电正常 时间:'$(date) >> /var/log/ups.log
sleep 600
done
echo '供电异常,2分钟后重新检测 时间:'$(date) >> /var/log/ups.log
sleep 120
ping -c 4 192.168.2.1 > /dev/null
if [ $? -eq 0 ]
then
echo '供电正常 时间:'$(date) >> /var/log/ups.log
else
echo '供电异常,开始关机 时间:'$(date) >> /var/log/ups.log
shutdown -h now
fi

其中,192.168.2.1修改为你内网设备IP,保证其在市电断电后离线即可

基本每10分钟会ping一次内网设备,如果离线则在2分钟后重新ping一次,如果两次均检测离线,则开始关机(可根据自己的UPS供电时间调整

检测日志会保存在 /var/log/ups.log文件中

2.赋予可执行权限

chmod 777 ups.sh

或者

chmod a+x ups.sh

3.创建守护脚本,检测ups.sh的正常运行

vi ups_sh.sh

填入以下内容,然后输入 :wq保存

NUM=`ps -ef | grep ups.sh | grep -v grep |wc -l`; echo ${NUM}
if [ ${NUM} -lt 1 ];then
/usr/local/ups/ups.sh > /dev/null 2>&1 &
echo '开启供电检测脚本 时间:'$(date) >> /var/log/ups.log
fi
exit 0

其中,/usr/local/ups/ups.sh为供电检测脚本的路径

日志保存在/var/log/ups.log

4.同样赋予可执行权限

chmod 777 ups_sh.sh

或者

chmod a+x ups_sh.sh

5.创建Cron定时任务

crontab -e

填入以下内容,然后输入 :wq保存

*/5 * * * * /usr/local/ups/ups_sh.sh > /dev/null

其中 */5 * * * *为每5分钟执行一次守护脚本

更详细的Cron定时任务的内容,请参考 《Linux创建cron定时任务》

/usr/local/ups/ups_sh.sh 为守护脚本的路径

6.断电关机后如何发送邮件通知

断电关机前发送邮箱通知必须满足两个条件

1)网关必须在UPS保护下,断电后主机仍然可以访问互联网(此时可以让脚本ping内网的其他断电离线的设备)

2)必须在linux系统设置好mail命令相关配置文件,如何配置详见《Linux下使用mail发送邮件》

此时,在ups.sh修改为如下

#!/bin/sh
while
ping -c 4 192.168.2.1 > /dev/null
[ $? -eq 0 ];
do
echo '供电正常 时间:'$(date) >> /var/log/ups.log
sleep 600
done
echo '供电异常,2分钟后重新检测 时间:'$(date) >> /var/log/ups.log
sleep 120
ping -c 4 192.168.2.1 > /dev/null
if [ $? -eq 0 ]
then
echo '供电正常 时间:'$(date) >> /var/log/ups.log
else
echo '供电异常,开始关机 时间:'$(date) >> /var/log/ups.log
echo "供电异常正在关机" | mail -s "供电异常" kissyou@love.com
sleep 10
shutdown -h now
fi

此时,关机前10秒会向kissyou@love.com邮箱发送 标题为 供电异常,内容为 供电异常正在关机 的邮件,请将kissyou@love.com修改成你自己的邮箱

Linux如何使用普通的UPS做到断电自动关机-下一朵云
版权声明:本文为下一朵云发布文章,转载请附上原文出处链接和本声明。
本文链接:https://www.orcy.net.cn/1583.html

​ 广告:HCIE-Security认证课程辅导资料(付费)

暂无评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注