5 окт. 2012 г.

Настройка автоматического выключения при low battery от UPS с помощью nut (Network UPS Tools)

Если имеются ИБП с подключением по USB, то целесообразно настроить корректное атовыключение рабочих станций на Oracle Linux 6.3 и Debian при отсутствии питания от сети. ИБП - Mustek PowerAgent 650 с USB.

1. Подключаем все провода, не забываем USB-кабелем соединить ПК и ИБП.
2. Устанавливаем Nut:

aptitude install nut

или

yum install nut

Особые извращенцы могут, конечно же, скомпилить из исходников :)
Различие между Debian и RHEL6 дистрибутивами только в том, что конфигурационные файлы в 1м случае лежат в /etc/nut, а во 2м - в /etc/ups :)

3. Настройка драйвера. Смотрим наши юсб-устройсва командой:

lsusb

Ищем среди них что-то типа:

Bus 001 Device 004: ID 0665:5161 Cypress Semiconductor USB to Serial


Если такого нет, то надо пошаманить с модулями ядра. В частности, нужны модули usb, usbhid.
Теперь меняем права, где цифры - номера шины (Bus) и устройства (Device) из предыдущей команды:

chown root:nut /dev/bus/usb/001/004

4. Переходим в папку с конфигами (cd /etc/ups или cd /etc/nut) и начинаем настраивать.
1) nano upsd.users
Добавляем пользователя, ставя свои имя и пароль:

[monuser]

password = secret
upsmon master

2) nano upsd.conf

Добавляем/раскомментируем:
LISTEN 127.0.0.1 3493

3) nano ups.conf
Добавляем описание ИБП:
[mustek_650]

driver = blazer_usb
        port = auto
        desc = "some comment"

Тут в поле driver с другими моделями возможно придется указывать другой драйвер - смотрите офиц. документацию. Тестировать на работоспособность можно командой (аргумент поменять понятно как), а затем получить инфо об ИБП:

upsdrvctl start

Network UPS Tools - UPS driver controller 2.6.4
Network UPS Tools - Megatec/Q1 protocol USB driver 0.08 (2.6.4)
Supported UPS detected with mustek protocol
Vendor information unavailable
No values provided for battery high/low voltages in ups.conf
Using 'guestimation' (low: 10.400000, high: 13.000000)!
Battery runtime will not be calculated (runtimecal not set)

4) nano upsmon.conf
Добавляем строчку с описанием нашего конкретного ИБП (данные пользователя должны соответствовтаь тому, что писали в upsd.users!):

MONITOR mustek_650@localhost 1 monuser secret master

5. Выставляем права для секьюрности:

chown root:nut upsd.conf upsd.users
chmod 0640 upsd.conf upsd.users
chown root:nut upsmon.conf
chmod 0640 upsmon.conf

6. Скрещиваем пальцы и запускаем :)

RHEL6: /etc/init.d/ups start
Debian: /etc/init.d/ups-monitor start

7. Тестируем. Проверим данные поступают ли от нашего УПСа:

upsc mustek_650@localhost


ups.status: OL - значит, что УСП найден, работает и питание от сети есть.


upsdrvctl -t shutdown
upsmon -c fsd


1я команда - симуляция только ответа от драйвера без выполнения команды на выключение, 2я - симуляция всего ивента, соответственно с выключением ПК.