Инструменты nut (Network UPS tools) - это демоны управления и мониторинга UPS, которые могут быть использованы для различных UPS.
Подключение UPS PwerMust 800 USB и настройка отключение.
#apt-get install nut
файл /etc/nut/nut.conf
MODE=standaloneНастройки драйвера для сбора данных:
Подключаем UPS к USB, смотрим вывод lsusb:
#lsusb Bus 003 Device 002: ID 0665:5161 Cypress Semiconductor USB to Serial
Список драйверов можно посмотреть в файле /usr/share/nut/driver.list
"Mustek" "ups" "2" "Yukai PowerMust" "1000 USB (PID: 5161)" "blazer_usb"
Теперь, когда определились с драйвером, можно приступать к настройке.
редактируем файл /etc/nut/ups.conf
[mustek] driver = blazer_usb port = auto offdelay = 120 ondelay = 5 desc = "PowerMust 800 USB"
файл /etc/nut/upsd.conf
LISTEN 127.0.0.1 3493Профили пользователей для доступа к upsd:
Добавляем пользователя в файл /etc/nut/upsd.users
[upsmon] password = password actions = SET instcmds = ALL upsmon master
файл /etc/nut/upsmon.conf
MONITOR mustek@localhost 1 upsmon password master MINSUPPLIES 1 NOTIFYCMD /sbin/upssched POLLFREQ 5 POLLFREQALERT 5 HOSTSYNC 15 DEADTIME 15 POWERDOWNFLAG /etc/killpower 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 RBWARNTIME 43200 NOCOMMWARNTIME 300 FINALDELAY 5
Правила udev для доступа к USB устройствам
#udevadm trigger --subsystem-match=usb --action=change
Перезагружаемся или вместо перезагрузки можно сделать так:
передергиваем USB кабель UPS
#udevadm control --reload-rules #udevadm trigger #service nut restart
Проверим, что UPS сообщает о своем состоянии:
# upsc mustek@localhost battery.voltage: 13.60 battery.voltage.nominal: 12.0 beeper.status: enabled device.type: ups driver.name: blazer_usb driver.parameter.bus: 002 driver.parameter.pollinterval: 2 driver.parameter.port: 005 driver.parameter.productid: 5161 driver.parameter.vendorid: 0665 driver.version: 2.6.3 driver.version.internal: 0.04 input.current.nominal: 3.0 input.frequency: 49.9 input.frequency.nominal: 50 input.voltage: 227.4 input.voltage.fault: 227.9 input.voltage.nominal: 220 output.voltage: 227.9 ups.delay.shutdown: 120 ups.delay.start: 180 ups.load: 6 ups.productid: 5161 ups.status: OL ups.temperature: 25.0 ups.type: offline / line interactive ups.vendorid: 0665
Коды состояний: ups.status:
файл /etc/nut/upssched.conf
CMDSCRIPT /etc/nut/cmd.sh PIPEFN /tmp/upspipe LOCKFN /tmp/upslock AT COMMBAD * EXECUTE commbad AT COMMOK * EXECUTE commok AT NOCOMM * EXECUTE nocomm AT ONBATT * EXECUTE powerout AT ONBATT * START-TIMER shutdownnow 90 AT LOWBATT * EXECUTE shutdowncritical AT ONLINE * CANCEL-TIMER shutdownnow AT ONLINE * EXECUTE powerup
AT ONBATT * START-TIMER shutdownnow 90 - при работе от батареи ждем 90 секунд и выполняем скрипт cmd.sh с аргументом shutdownnow.
Получение списка команд UPS
# upscmd -l mustek@localhost Instant commands supported on UPS [mustek]: 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
Можно запустить, например, тест батареи, командой
$ upscmd -u upsmon -p password mustek test.battery.start
Скрипт cmd.sh
#touch /etc/nut/cmd.sh #chmod 666 /etc/nut/cmd.sh
содержимое файла cmd.sh
#!/bin/sh case $1 in commbad) logger "UPS communications failure" ;; commok) logger "UPS communications restored" ;; nocomm) logger "UPS communications cannot be established" ;; powerout) logger "UPS on battery. Shutdown in 90 seconds...." upscmd -u upsmon -p password mustek@localhost shutdown.return ;; shutdownnow) logger "UPS has been on battery for 120 seconds. Starting orderly shutdown" upsmon -c fsd ;; shutdowncritical) logger "UPS battery level CRITICAL. Shutting down NOW!!!!" upsmon -c fsd ;; powerup) logger "UPS on line. Shutdown aborted." upscmd -u upsmon -p pass mustek@localhost shutdown.stop ;; *) logger "Unrecognized command: $1" ;; esac
Если все работает правильно, ОС завершит работу, компьютер будет принудительно отключен от электросети (UPS выключится). После возобновление подачи питания, он автоматически подаст питание на компьютер.