LinuxForum.Fans
Тема

Apcupsd: отправка смс через минуту, если нет питания

Автор: aivs 7 сообщений 3274 просмотров
#199165

Здравствуйте!
Есть задача: знать, когда сервер работает от UPS больше минуты. Если батарея исчерпана, то выключать его.

Покопавшись в настройках и конфигах, нашел нужные мне настройки в /etc/apcupsd/apcupsd.conf

# Уровень заряда батареи при котором выключается сервер
BATTERYLEVEL 5

# Время в минутах до полного истощения батареи, при котором выключается сервер
MINUTES 3

# Время в секундах после отключения питания, при котором выключается сервер
TIMEOUT 60

Параметр TIMEOUT как нельзя лучше подходит для исполнения функции отправки смс. Я хочу переназначить его действие с выключение компа на отправку смс.
Покопав файлы в /etc/apcupsd
[console][root@myhost apcupsd]# ls
apccontrol apcupsd.css commfailure hosts.conf offbattery powerfail
apcupsd.conf changeme commok multimon.conf onbattery[/console]
понял, что при наступлении времени TIMEOUT, выполняется команда:

text
/etc/apcupsd/apccontrol timeout

Внутри apccontrol, для timeout выполняется код:

text
echo "Battery time limit exceeded on UPS ${2}. Doing shutdown." | wall

Всего лишь сообщение, видимо затем выполняется что то типа:

text
/etc/apcupsd/apccontrol doshutdown

Это я проверю!
если кто решал такую задачу, дайте комментарии!

#199168

Проверил, все именно так как я и думал
После отключения питания идет отсчет времени.
Сначала выполняется /etc/apcupsd/apccontrol timeout
и сразу же за ним /etc/apcupsd/apccontrol doshutdown

Всё просто, сейчас подредактирую doshutdown, чтобы он не выключал комп при получении команды выключения, если до этого была получена команда timeout.

Один вопрос
эти параметры
# Уровень заряда батареи при котором выключается сервер
BATTERYLEVEL 5
# Время в минутах до полного истощения батареи, при котором выключается сервер
MINUTES 3
срабатывают в зависимости, что наступит раньше ?

#199182

Написал функцию, которая проверяет, была ли команда /etc/apcupsd/apccontrol timeout до /etc/apcupsd/apccontrol doshutdown, если была, то отправится смс, а не выключится кома, если не было, то комп выключится

text
#!/bin/bash

PID_FILE=./timeout # Файл метка,если существует. значит был запуск /etc/apcupsd/apccontrol timeout

# По параметру TIMEOUT из файла /etc/apcupsd/apcupsd.conf происходит отправка смс. # Если был вызов /etc/apcupsd/apccontrol timeout,то отправляется смс о том, что компьютер без питания # Если такого вызова не было, функция выполнит выключение halt_or_sms () { if [ -e $PID_FILE ] then echo "Отправка смс" rm $PID_FILE else echo "Выключение"

fi }

case "$1" in timeout) touch $PID_FILE echo "Battery time limit exceeded on UPS . Doing shutdown." ;; doshutdown) halt_or_sms ;; esac

#199185

Чето у меня ниче не работает
выключаю из розетки бесперебойник, по идеи должен TIMEOUT сработать, а он не срабатывает

#199220
aivs написал:

Есть задача: знать, когда сервер работает от UPS больше минуты. Если батарея исчерпана, то выключать его.
....
если кто решал такую задачу, дайте комментарии!

Я использую для управления ИБП пакет nut. Очень удобно. Особенно тем, что им окучено сразу несколько компьютеров сидящих на одном ИБП. На одном - живет сервер, на остальных клиенты. Все так синхронно гасится когда надо.

#199350

Мне главнее не выключение, а оповещение. За наводку спасибо!

#199376

Удалите тему, тут все не правда!

Войдите или зарегистрируйтесь, чтобы ответить.