便宜的UPS没有检测的端口, 断电后需要人工干预,去关掉服务器。这段脚本可以自动的检测断电,并关闭服务器。
本脚本只支持Linux系统。
工作原理
工作时需要一个参照设备, 参照设备需要有IP地址, 同时连接在UPS系统外部。断电后会失去IP地址,服务器ping不通就会在规定的时间内自动关机。
crontab定时设置
必须要设置成root的crontab,其他用户没有关机的权限
# m h dom mon dow command
* * * * * /root/detect_ups.sh >> /var/log/detect_ups.log
* * * * * 表示每分钟检测一次
/root/detect_ups.sh 表示你的脚本的所在位置
检测脚本
/root/detect_ups.sh
#!/bin/bash
me="$(basename "$0")";
running=$(ps h -C "$me" | grep -wv $$ | wc -l);
[[ $running > 1 ]] && exit;
detect_ip=192.168.1.1
ping_count=1
detect_delay=300
echo " detect ip:=$detect_ip"
echo " detect delay:=$detect_delay sec"
ping -c ${ping_count} ${detect_ip} > /dev/NULL
if [ $? -eq 0 ]
then
echo ' AC Power OK !'
else
echo " AC Power maybe off, checking again after ${detect_delay} second !"
sleep ${detect_delay} #延时秒
ping -c ${ping_count} ${detect_ip} > /dev/NULL
if [ $? -eq 0 ]
then
echo ' AC Power recover, return !'
else
echo ' AC Power always off, poweroff !'
/usr/sbin/poweroff
fi
fi