Мониторинг работы ИБП в Убунту будем осуществлять через 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: