Подключение странного UPS Ippon через NUT
Попался мне тут бесперебойник один, Ippon Back Comfo Pro. Странная такая штука, но пришлось прикручивать. Родной софт хоть и есть, но похоже работает только под 4-кой, да и джаву просит, так что поставил Network UPS Tools. Вообще NUT тоже далеко не подарок, но выбора не было. NUT заточен так, что гасит систему по low battery. И не всегда умеет ребут. И сраный Ippon нихрена не знает, сколько ему осталось жить на батареях. А еще, до кучи, мой конкретный упс упорно выключался без предупреждения ровно через 5 минут. Пришлось извращаться, применяя upssched и гася сервер после onbattery. Но это чревато тем, что с большой долей вероятности сервер не проснется после восстановления питания или при восстановлении питания в течение интервала выключения. Проблема, однако, но она вроде решена, см. ниже.
# cd /usr/ports/sysutils/nut
# make install
# cd /usr/local/etc/nut
# cp ups.conf.sample ups.conf
# ee ups.conf
[ippon1] # имя упса
driver = megatec
port = /dev/cuad0 # COM1
# cp upsd.conf.sample upsd.conf
# ee upsd.conf
ACL all 0.0.0.0/0
ACL localhost 127.0.0.1/32
ACCEPT localhost
REJECT all
# cp upsd.users.sample upsd.users
# ee upsd.users
[upsuser]
password = upsuser
allowfrom = localhost
actions = SET
instcmds = ALL
upsmon master
# cp upsmon.conf.sample upsmon.conf
# ee upsmon.conf
RUN_AS_USER root # похер
MONITOR ippon1@localhost 1 upsuser upsuser master
MINSUPPLIES 1
SHUTDOWNCMD “/sbin/shutdown –p now”
POLLFREQ 10
POLLFREQALERT 10
HOSTSYNC 20
DEADTIME 60
POWERDOWNFLAG /etc/killpower
RBWARNTIME 43200
NOCOMMWARNTIME 3000
FINALDELAY 0
NOTIFYCMD “/usr/local/sbin/upssched” # извращения с шедулером
NOTIFYFLAG ONLINE WALL+EXEC #
NOTIFYFLAG ONBATT WALL+EXEC #
NOTIFYFLAG LOWBATT WALL+EXEC #
# cp upssched.conf.sample upssched.conf
# ee upssched.conf
CMDSCRIPT /usr/local/etc/nut/upssched-cmd
PIPEFN /var/run/upssched.pipe
LOCKFN /var/run/upssched.lock
AT LOWBATT * EXECUTE “/sbin/shutdown –p now”
AT ONBATT * START-TIMER timer1 185 # время в секундах (похоже, надо попасть
AT ONLINE * CANCEL-TIMER timer1 # в интервал между POLLFREQALERT)
# touch upssched-cmd
# ee upssched-cmd
#!/bin/sh
/usr/local/sbin/upsmon –c stop
/usr/local/sbin/upsd –c stop
sleep 2
cp /usr/local/etc/nut/ippon-c2 /dev/cuad0 # гасим упс вручную
sleep 2
/sbin/shutdown –p now
# touch ippon-c2
# ee ippon-c2
S03R0005^M
^M обозначает <cr> (0x0d). Команда для Ippon означает «выключить питание через 3 минуты, подождать 5 минут и включить снова (если, конечно, оно есть на входе)». Цифры можно варьировать, первая имеет формат от .2 до 10, вторая от 0000 до 9999, причем 0000 означает «выключитиь насовсем». Подробнее см. http://www.ippon.ru/support/download.php
# chmod 666 *
# chmod 777 upssched-cmd
# ee /etc/rc.conf
...
nut_enable=”YES”
nut_upsmon_enable=”YES”
...
С таким раскладом упс вроде работает как положено. На всякий случай прописал в биосе просыпаться каждое утро.
Кстати. При работе без видеокарты система по умолчанию пытается юзать COM1 в качестве консоли.
# reboot
Проверка:
# upsc ippon1@localhost
Должен появиться список параметров упса.
PS В версии 2.2 можно сделать ранний шатдаун более цивильными средствами, которые позволяют также гасить зависимые сервера. Описано в upssched.txt.