Задание уровня заряда батареи правильно делать в конфиге nut, но а если эта настройка по какой-либо причине не работает, т.е. система все равно завершает работу только по сигналу от UPS о низком заряде батареи, уровень которого был задан производителем.
Итак, если у вас есть управляемый UPS и настройка уровня низкого заряда в nut не удалась, то здесь далее представлен скрипт для cron, который запускается каждую минуту, проверяет значение состояния питания (электрическая сеть или батарея) и уровня заряда батареи (при заряде меньше указанного числа происходит завершение работы компьютера).
Собственно скрипт:
#!/bin/bash SHELL=/bin/bash STATUS=`upsc powercom@127.0.0.1 | grep "ups.status"` STATUS=${STATUS:12:2} CAPACITY=`upsc powercom@127.0.0.1 | grep "battery.charge:"` CAPACITY=${CAPACITY:16:2} LOW_CAPACITY="50" OFF="/sbin/shutdown -h now" if [ $STATUS = "OB" ] then LOGDATE=`date +"%d.%m.%y"` ACTIONTIME=`date +"%H:%M:%S"` echo "[$LOGDATE $ACTIONTIME] working on battarey" >> /var/log/lowbatt.log if [ $CAPACITY -lt $LOW_CAPACITY ] then echo "[$LOGDATE $ACTIONTIME] going shutdown" >> /var/log/lowbatt.log mail -s "UPS status - LOW BATTERY STATUS - SHUTDOWN" admin@comp-gluk.ru $OFF fi fi |
Скрипт проверяет состояние UPS powercom@127.0.0.1 и в случае перехода питания на батарею записывает событие в лог. В случае разряда батареи высылает сообщение на e-mail и завершает работу компьютера.
Установка скрипта в cron
Для установки скрипта необходимо поместить файл с скриптом в папку /etc/cron.d/, выполнить команду от суперпользователя
sudo crontab -e |
Добавить строку:
* * * * * bash /etc/cron.d/lowbatt |
И сохранить изменения.
PS Скрипт написан для UPS Powercom IMP-525. Если он не корректно работает — возможно нужно подправить переменные STATUS, CAPACITY, OFF.