- Написано на java. У меня нет столько памяти =)
- Утилита мониторинга не запускается из-за ошибки, и с этим походу ничего не поделаешь.
- Инсталятор все ломает, что не внушает доверия. Он добавляет монтирование usbfs в fstab, но usbfs объявлено устаревшим довольно давно и ядра в убунту идут без него. И надо закомментировать это заранее, иначе машина не загрузится до ssh и придется топать к ней и подключать монитор и клаву.
NUT состоит из нескольких частей:
- драйвер - читающий данные из usb.
- сервер - посылающий данные и сообщения клиентам по запросу. У сервера свой список пользователей с логинами/паролями.
- клиент - периодически читает информацию/события с сервера и производит действия с машиной на которой запущен. Для некоторых действий нужен логин и пароль.
- и scheduler - вспомогательный скрипт, который поможет нам с таймером
- выключенную пищалку, которая не разбудит нас посреди ночи.
- выключение сервера через 90 или меньше сек работы от батареи. Изкоробки оно выключается, когда у батареи низкий заряд. Я так думаю, что батарея испортиться через некоторое время и ее заряда не будет хватать для корректного выключения сервера. Тогда мы просто уменьшим таймер.
- бесперебойник продолжает работать посте выключения сервера, чтобы питать ADSL модем с WIFI сколько возможно. Преимущество медной лапши - наличие сигнала в телефонной линии, даже если электричество в доме закончилось.
Почти все действия производим с правами root, посему первая команда:
$ sudo -s
# apt-get install nut
Настройка драйвера:
Выберите нужный драйвер для ups тут# nano /etc/nut/ups.conf
[ippon]
driver = blazer_usb
port = auto
desc = "IPPON 400 UPS, USB interface"
Без этого шага драйвер выдает ошибки. Для запуска клиента и сервера на одной машине# nano /etc/nut/nut.conf
MODE=standalone
Перезапускаем сервис# service nut-server restart
или перезагрузимся, затем# upsdrvctl start
и получим что-то типа:Network UPS Tools - UPS driver controller 2.7.1
Network UPS Tools - Megatec/Q1 protocol USB driver 0.10 (2.7.1)
Supported UPS detected with megatec 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)
Настройка сервера:
Сервер должен слушать только локальный интерфейс, сетевой доступ нам без надобности# nano /etc/nut/upsd.conf
LISTEN 127.0.0.1 3493
Добавляем основного пользователя с правами изменять настройки.# nano /etc/nut/upsd.users
[upsmon]
password = secret
actions = SET FSD
instcmds = ALL
upsmon master
Настройка клиента:
# nano /etc/nut/upsmon.conf
MONITOR ippon@localhost 1 upsmon secret master
#эти настройки есть в конфиге по умолчанию
MINSUPPLIES 1
SHUTDOWNCMD "/sbin/shutdown -h +0"
POLLFREQ 5
POLLFREQALERT 5
HOSTSYNC 15
DEADTIME 15
POWERDOWNFLAG /etc/killpower
RBWARNTIME 43200
NOCOMMWARNTIME 300
FINALDELAY 5
# Настраиваем таймер и сообщения в консоль и по почте
# Я плохо знаю NUT, посему это может быть слегка избыточно
NOTIFYCMD /sbin/upssched
NOTIFYMSG ONLINE "UPS %s on line power"
NOTIFYMSG ONBATT "UPS %s on battery"
NOTIFYMSG LOWBATT "UPS %s battery is low"
NOTIFYMSG FSD "UPS %s: forced shutdown in progress"
NOTIFYMSG COMMOK "Communications with UPS %s established"
NOTIFYMSG COMMBAD "Communications with UPS %s lost"
NOTIFYMSG SHUTDOWN "Auto logout and shutdown proceeding"
NOTIFYMSG REPLBATT "UPS %s battery needs to be replaced"
NOTIFYMSG NOCOMM "UPS %s is unavailable"
NOTIFYMSG NOPARENT "upsmon parent process died - shutdown impossible"
NOTIFYFLAG ONLINE SYSLOG+WALL+EXEC
NOTIFYFLAG ONBATT SYSLOG+WALL+EXEC
NOTIFYFLAG LOWBATT SYSLOG+WALL+EXEC
NOTIFYFLAG FSD SYSLOG+WALL+EXEC
NOTIFYFLAG COMMOK SYSLOG+WALL+EXEC
NOTIFYFLAG COMMBAD SYSLOG+WALL+EXEC
NOTIFYFLAG SHUTDOWN SYSLOG+WALL+EXEC
NOTIFYFLAG REPLBATT SYSLOG+WALL+EXEC
NOTIFYFLAG NOCOMM SYSLOG+WALL+EXEC
NOTIFYFLAG NOPARENT SYSLOG+WALL+EXEC
Для запуска клиента и сервера на одной машине# nano /etc/nut/nut.conf
MODE=standalone
Перезапускаем сервисы# service nut-server restart
# service nut-client restart
Получаем ups статус$ upsc ippon@localhost
Видим:Init SSL without certificate database
battery.charge: 100
battery.voltage: 13.60
battery.voltage.high: 13.00
battery.voltage.low: 10.40
battery.voltage.nominal: 12.0
device.type: ups
driver.name: blazer_usb
driver.parameter.pollinterval: 2
driver.parameter.port: auto
driver.version: 2.7.1
driver.version.internal: 0.10
input.current.nominal: 1.0
input.frequency: 50.3
input.frequency.nominal: 50
input.voltage: 232.0
input.voltage.fault: 232.0
input.voltage.nominal: 220
output.voltage: 232.0
ups.beeper.status: disabled
ups.delay.shutdown: 30
ups.delay.start: 180
ups.load: 30
ups.productid: 5161
ups.status: OL
ups.temperature: 25.0
ups.type: offline / line interactive
ups.vendorid: 0665
Отключение звука
Пищалки в упсах громкие и противные. Получаем список доступных команд:# upscmd -l ippon@localhost
IPPON дешевый упс посему команд немного:beeper.toggle - Toggle the UPS beeper
load.off - Turn off the load immediately
load.on - Turn on the load immediately
shutdown.return - Turn off the load and return when power is back
shutdown.stayoff - Turn off the load and remain off
shutdown.stop - Stop a shutdown in progress
test.battery.start - Start a battery test
test.battery.start.deep - Start a deep battery test
test.battery.start.quick - Start a quick battery test
test.battery.stop - Stop the battery test
Создадим скрипт для отключения звука# nano /etc/nut/beeper.off.sh
# chmod 750 /etc/nut/beeper.off.sh
# chown root:nut /etc/nut/beeper.off.sh
#!/bin/sh
upsc ippon@localhost ups.beeper.status 2>&1 | grep enabled && upscmd -u upsmon -p secret ippon@localhost beeper.toggle
Добавим запуск скрипта в запуск клиента. Это не совсем верно и можно придумать случай, когда это не сработает, но для меня это "достаточно хорошо" тм =) Добавляем sleep и beeper.off.sh в скрипт# nano /etc/init.d/nut-client
...
start)
log_daemon_msg "Starting $DESC" "$NAME"
check_var_directory
start_stop_client start
sleep 1
/etc/nut/beeper.off.sh
log_end_msg $?
;;)
...
Настройка таймера и уведомлений на почту
Для уведомлений вам надо установить и настроить nullmailer или аналог. Если их нет закомментируйте отправку почты# nano /etc/nut/upssched.conf
CMDSCRIPT /etc/nut/cmd.sh
PIPEFN /tmp/upspipe
LOCKFN /tmp/upslock
AT ONBATT * EXECUTE powerout
AT ONBATT * START-TIMER shutdownnow 90
AT ONLINE * CANCEL-TIMER shutdownnow
AT ONLINE * EXECUTE powerup
Когда таймер закончит отсчет запустится CMDSCRIPT. EXECUTE тоже выполняет CMDSCRIPT.# nano /etc/nut/cmd.sh
# chown root:nut /etc/nut/cmd.sh
# chmod 750 /etc/nut/cmd.sh
#!/bin/sh
case $1 in
powerout)
logger "UPS on battery. Shutdown in 90 seconds...."
echo -e "Subject: UPS monitor. On battery.\nThe UPS has been on battery for awhile" \
| sendmail lex2d.by@gmail.com
;;
powerup)
logger "UPS on line. Shutdown aborted."
echo -e "Subject: UPS monitor. On line.\nUPS on line. Shutdown aborted." \
| sendmail lex2d.by@gmail.com
;;
shutdownnow)
logger "UPS has been on battery for 90 seconds. Starting orderly shutdown"
/usr/bin/sudo /sbin/shutdown -h +0
;;
shutdowncritical)
logger "UPS battery level CRITICAL. Shutting down NOW!!!!"
/usr/bin/sudo /sbin/shutdown -h +0
;;
*)
logger "Unrecognized command: $1"
;;
esac
Добавим пользователя nut в sudo. Иначе клиенту не хватит прав завершить работу сервера.# visudo
# Добавить в конец файла
nut ALL = (root) NOPASSWD: /sbin/shutdown
Возможно теперь вы тоже не любите NUT...
Огромное СПАСИБО! :)
ОтветитьУдалитьЗамечательно. Теперь как это все удалить? Не смотря на остановку сервиса и удаление командой sudo apt-get purge nut* в консоль продолжает сыпаться сообщения о недоступности UPS Ippon. Бесперебойник отжил свое, а демона не могу выгнать...
ОтветитьУдалитьПолагаю upsmon остался запущен.
ОтветитьУдалитьУ меня ups apc back-ups 950, при запуске upsdrvctl start выдает using subdriver APC HID 0.95, что это значит?
ОтветитьУдалить