Автоматическое завершение работы при разряде UPS

Задание уровня заряда батареи правильно делать в конфиге 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.

Запись опубликована в рубрике Debian, Linux с метками , , , , . Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *