APCUPSD — автовыключение сервера в ос FreeBSD

Задача:

Корректно выключать файловую помойку при отключении электропитания и разряде батареи ИБП

Установка APCUPSD 

Обновляем порты. Если делаете в первый раз, то в начале скачиваем и распаковываем

portsnap fetch && portsnap extract

если уже обновлялись, то достаточно команды

 

portsnap fetch update

 

 

Ищем нужный порт

 

cd /usr/ports/
make search name='apcupsd'

 

 

Переходим в нужный порт

 

cd /usr/ports/sysutils/apcupsd

 

Собираем и устанавливаем

 

make && make install && make clean

 

В окне конфигурации достаточно выбрать две опции:

 

    1. Compile APC SmartUPS serial driver

 

    1. Compile with USB Support driver

 

 

Этого хватит для подключения ИБП через USB, но в нашем примере оставим всё по умолчанию

 

 

Порт установлен, теперь нам доступны команды:

 

/usr/local/sbin/apcaccess
/usr/local/sbin/apcupsd
/usr/local/sbin/apctest

 

и доступен следующий скрипт для запуска

 

/usr/local/etc/rc.d/apcupsd

 

 

Сохраняем конфиг по умолчанию

 

cp /usr/local/etc/apcupsd/apcupsd.conf /usr/local/etc/apcupsd/apcupsd.conf.default

 

Редактируем конфиг

 

vi /usr/local/etc/apcupsd/apcupsd.conf

 

Если сильно не вникать с режимами подчиненный/ведомый, клиент/сервер, то в общем случае конфиг apcupsd.conf на локальной машине выглядят:

 

## apcupsd.conf v1.1 ##
# date: 2013-05-04
#
UPSNAME APC800
UPSCABLE usb
UPSTYPE usb
#DEVICE /dev/usv
#POLLTIME 60
LOCKFILE /var/spool/lock
SCRIPTDIR /usr/local/etc/apcupsd
PWRFAILDIR /var/run
NOLOGINDIR /var/run
ONBATTERYDELAY 6
BATTERYLEVEL 5
MINUTES 3
TIMEOUT 0
ANNOY 300
ANNOYDELAY 60
NOLOGON disable
KILLDELAY 0
NETSERVER on
NISIP 0.0.0.0
NISPORT 3551
EVENTSFILE /var/log/apcupsd.events
EVENTSFILEMAX 10
UPSCLASS standalone
UPSMODE disable
STATTIME 0
STATFILE /var/log/apcupsd.status
LOGSTATS off
DATATIME 0
#FACILITY DAEMON
#UPSNAME UPS_IDEN
#BATTDATE mm/dd/yy
#SENSITIVITY H
#WAKEUP 60
#SLEEP 180
#LOTRANSFER  208
#HITRANSFER 253
#RETURNCHARGE 15
#BEEPSTATE T
#LOWBATT 2
#OUTPUTVOLTS 230
#SELFTEST 336

 

После того, как установка окончена, выполняем команду rehash, чтобы система обнаружила появление yновых команд

 

rehash

 

Добавляем apcupsd в автозагрузку

 

echo 'apcupsd_enable="YES"' >> /etc/rc.conf

 

Запускаем сервис

 

/usr/local/etc/rc.d/apcupsd start

 

Проверяем запустился ли сервис:

 

ps -ax | grep apc

 

 

Теперь проверяем работу ИБП. Выдергиваем на несколько секунд провод питания ИБП и смотрим в консоль.

 

 

Возможные ошибки apcupsd

 

1. Ошибка при тестировании утилитой apctest

2013-05-04 11:21:28 apctest 3.14.10 (13 September 2011) freebsd
Checking configuration ...
Attached to driver: usb
sharenet.type = Network & ShareUPS Disabled
cable.type = USB Cable
mode.type = USB UPS Driver
Setting up the port ...
apctest FATAL ERROR in generic-usb.c at line 674
Cannot find UPS device --
For a link to detailed USB trouble shooting information,
please see <http://www.apcupsd.com/support.html>.
apctest error termination completed

 

Проверяйте конфиг, возможно перепутали интерфейс подключения

 

UPSCABLE usb
UPSTYPE usb
#DEVICE /dev/usv

 

Документация  и ссылки по APCUPSD для вкуривания:

  1. http://www.apcupsd.com/
  2. http://www.apcupsd.com/manual/manual.html
  3. http://apcupsd.sourceforge.net/manual/manual.pdf