Мониторинг работы ИБП в Убунту будем осуществлять через nut. Вообще, при всей простоте настройки, зачастую программа не работает корректно, ссылаясь то на драйвер, то на отсутствие связи с ИБП и прочее. В-общем, если у вас все заработает с первого разу, то считайте, вы счастливчик.
Дана исходная среда:
Использованные ссылки
Итак, приступаем.
$ sudo apt-get install nut
# /etc/nut/ups.conf
[apc]
driver = usbhid-ups
port = auto
desc = "APC01"
То, что задано в квадратных скобках - это имя для демонов upsd и upsmon, т.е. может быть по вашему усмотрению. Что касается названия драйвера в директиве driver, то лучше посмотреть страничку http://www.networkupstools.org/compat/stable.html и выбрать подходящее название драйвера для вашей модели ИБП. Если же ваш ИБП соединяется с машиной по COM-порту, то нужно указать правильное имя порта, например /dev/ttyS0. В случае COM-порта необходимо также задать право на обращение к порту. См. текст по ссылке выше.
# /etc/nut/upsd.conf LISTEN 0.0.0.0
# /etc/nut/upsd.users
[local_mon]
password = PASSWORD_HERE
allowfrom = localhost
upsmon master
Здесь мы задали имя пользователя в квадратных скобках (local_mon), пароль и с какой машины ему разрешен доступ к демону upsd.
# /etc/nut/upsmon.conf MONITOR apc@localhost 1 local_mon PASSWORD_HERE master POWERDOWNFLAG /etc/killpower SHUTDOWNCMD "/sbin/shutdown -h now"
Здесь мы прописали в директиве MONITOR идентификатор ИБП apc (мы его задавали в /etc/nut/ups.conf), далее через @ машину, на которой настроен и запущен демон upsd (мы его настроили на предыдущем шаге), далее цифрой 1 мы указали количество потребителей, которое защищает наш ИБП (если задать 0, то при отключении питания демон upsd будет сигнализировать, однако выключать машину не будет, подробнее см. комменты в upsmon.conf); далее идет имя пользователя и пароль, заданные в файле /etc/nut/upsd.users; слово master задает, что данная машина будет отключена последней (в случае, если конфигурация предусматривает ведомые машины). Прописываем также директиву SHUTDOWNCMD в случае, если нам нужно выключить машину в случае сбоя по питанию.
# /etc/default/nut START_UPSD=yes START_UPSMON=yes
sam@sam-desktop:~# chown root:nut /etc/nut/upsd.conf # chmod 640 /etc/nut/upsd.conf # chown root:nut /etc/nut/upsd.users # chmod 640 /etc/nut/upsd.users # chown root:nut /etc/nut/upsmon.conf # chmod 640 /etc/nut/upsmon.conf
$ sudo /etc/init.d/nut start
* Starting Network UPS Tools [ OK ]
Широковещательное сообщение от nut@sam-desktop
(somewhere) at 12:53 ...
Communications with UPS myups@localhost lost
Широковещательное сообщение от nut@sam-desktop
(somewhere) at 12:54 ...
UPS myups@localhost is unavailable
Пытаемся еще раз (от имени рута):
# /etc/init.d/nut start * Starting Network UPS Tools [ OK ]
Запустилось без ошибок.
upsc apc
/usr/local/bin/upsc -L localhost
# /etc/ups/upssched.conf ## Дописать скрипт CMSCRIPT! # Включаем таймер earlyshutdown, который сработает через 120 секунд: AT ONBATT * START-TIMER earlyshutdown 120 # отключаем таймер по восстановлению напряжения: AT ONLINE * CANCEL-TIMER earlyshutdown
Проверьте, что система корректно закрывается после пропадания питания. Отсоедините UPS от питающей сети и наблюдайте на консоли сообщения. После успешных тестов в файле /etc/ups/upssched.conf замените строку «AT ONBATT * START-TIMER earlyshutdown 120 на AT ONBATT * START-TIMER earlyshutdown 1500.
На доработку: скрипт CMDSCRIPT в /etc/nut/upssched.conf может быть примерно таким:
#!/bin/bash
# /etc/nut/upssched-cmd - Run scheduled commands
case $1 in
apc1-on-batt)
/sbin/shutdown -h now +0
;;
belkin-on-batt)
/sbin/shutdown -h now +0
;;
*)
logger -t upssched-cmd "Unrecognized command: $1"
;;
esac
# EOF
TAG: