Мы — долго запрягаем, быстро ездим, и сильно тормозим.
www.lissyara.su —> статьи —> FreeBSD —> Шелезяки —> UPS APC-1500

Прикручивание бесперебойника Smart-UPS APC-1500 к FreeBSD

Автор: lissyara.


    Купили бесперебойник - APC-1500 RC, правда, после того как пару раз пропала напруга :) И встал вопрос - куда его крутить? У него был USB и COM-интерфейс (на SNMP плату расширения я уж не стал заикаться - 200 с лишним баксов она стоит, контора б не разорилась, хотя проблем бы было на порядок меньше - можно было б его по сети прикрутить на все три сервака, что от него питались), к сожалению одновременно они работать не хотели - если подключить USB то он отключал COM :( Потому прикрутил его по COM-интерфейсу на FreeBSD.
   Поехали:
/usr/home/lissyara/>cd /usr/ports/
/usr/ports/>make search name='apcups'
Port:   apcupsd-3.10.18_1
Path:   /usr/ports/sysutils/apcupsd
Info:   A daemon for controlling APC UPS
Maint:  ports@FreeBSD.org
B-deps: expat-1.95.8_3 gettext-0.14.5 libiconv-1.9.2_1
R-deps: expat-1.95.8_3 gettext-0.14.5 libiconv-1.9.2_1
WWW:    http://www.apcupsd.com

/usr/ports/>

Оно. Обновляем порты, и ставим:
/usr/ports/>su
/usr/ports/>cd /usr/ports/sysutils/apcupsd
/usr/ports/sysutils/apcupsd/>make && make install && make clean

Вылазиет синенькое окошко, где я выбрал только первый пункт:
 [X] CLIENT_ONLY Build apcupsd client only (no network server)
 [ ] CGI         Compile with CGI programms to show status
 [ ] USB         Compile with USB Support (READ MANUAL!!!)
 [ ] SNMP        Compile with SNMP Support (READ MANUAL!!!)
 [ ] NOPTHREADS  Compile without pthreads support (READ MANUAL!!!) 

Почему не по USB? Он у меня из ядра ампутирован, да и не родной это интерфейс, как ни крути. Родной - COM. После установки копируем скрипт запуска, добавляем строку в /etc/rc.conf:
===> SECURITY REPORT:
      This port has installed the following files which may act as network
      servers and may therefore pose a remote security risk to the system.
/usr/local/sbin/apcaccess
/usr/local/sbin/apctest
/usr/local/sbin/powerflute
/usr/local/sbin/apcupsd
/usr/local/sbin/apcnisd

      This port has installed the following startup scripts which may cause
      these network services to be started at boot time.
/usr/local/etc/rc.d/apcupsd.sh.sample

      If there are vulnerabilities in these programs there may be a security
      risk to the system. FreeBSD makes no guarantee about the security of
      ports included in the Ports Collection. Please type 'make deinstall'
      to deinstall the port if this is a concern.

      For more information, and contact details about the security
      status of this software, see the following webpage:
http://www.apcupsd.com
===>  Cleaning for libiconv-1.9.2_1
===>  Cleaning for gettext-0.14.5
===>  Cleaning for libtool-1.5.20
===>  Cleaning for expat-1.95.8_3
===>  Cleaning for apcupsd-3.10.18_1
/usr/ports/sysutils/apcupsd/>cd /usr/local/etc/rc.d/
/usr/local/etc/rc.d/>ls | grep apc
apcupsd.sh.sample
/usr/local/etc/rc.d/>cp apcupsd.sh.sample apcupsd.sh
/usr/local/etc/rc.d/>echo '' >> /etc/rc.conf
/usr/local/etc/rc.d/>echo 'apcupsd_enable="YES"' >> /etc/rc.conf
/usr/local/etc/rc.d/>

Установился. Топаем в /usr/local/etc/apcupsd/
/usr/local/etc/rc.d/>cd ../apcupsd/
/usr/local/etc/apcupsd/>ls
apccontrol                      commfailure
apcupsd.conf                    commok
apcupsd.conf.net-master.sample  mainsback
apcupsd.conf.net-slave.sample   masterconnect
apcupsd.conf.sample             mastertimeout
changeme                        onbattery
/usr/local/etc/apcupsd/>dmesg | grep sio
usb0: USB revision 1.0
sio0 at port 0x3f8-0x3ff irq 4 flags 0x10 on isa0
sio0: type 16550A
sio1 at port 0x2f8-0x2ff irq 3 on isa0
sio1: type 16550A
/usr/local/etc/apcupsd/>

В итоге, у меня получился следующий файл (комменты удалены за ненадобностью):
/usr/local/etc/apcupsd/>cat apcupsd.conf | grep -v "^#"
UPSCABLE smart
UPSTYPE smartups
DEVICE /dev/cuaa1 # первый (cuaa0) COM-порт у меня занят,
                  # поэтому повесил на второй
LOCKFILE /var/spool/lock
ONBATTERYDELAY 6
BATTERYLEVEL 5
MINUTES 3
TIMEOUT 0
ANNOY 300
ANNOYDELAY 60
NOLOGON disable
KILLDELAY 10
EVENTSFILE /var/log/apcupsd.events
UPSCLASS standalone
UPSMODE disable
STATTIME 0
STATFILE /var/log/apcupsd.status
LOGSTATS off
DATATIME 0
UPSNAME APC-1500 RC
WAKEUP 30

После чего запускаем, проверяем запустился ли, и, на `бис`, выдёргиваем питальник из UPS`a :)))
/usr/local/etc/apcupsd/>/usr/local/etc/rc.d/apcupsd.sh start
 apcupsd
/usr/local/etc/apcupsd/>
/usr/local/etc/apcupsd/>ps -ax | grep apc
11605  ??  Ss     0:00.05 /usr/local/sbin/apcupsd --kill-on-powerfail
11613  p0  R+     0:00.00 grep apc
/usr/local/etc/apcupsd/>
Broadcast Message from lissyara@bsd-4-11.local
        (no tty) at 14:35 MSK...

Warning power loss detected.

Broadcast Message from lissyara@bsd-4-11.local
        (no tty) at 14:35 MSK...

Power has returned...
/usr/local/etc/apcupsd/>

Всё путём. Пашет. :) Пор желании можно провести стресс-тест - выдернуть питальник насовсем и посмотреть, - отключится ли комп корректно. Письма шлются root`у - о кажом скачке напряжения. У меня рутовая почта пересылается на другие серваки - чтобы если питание пропадёт - хоть было ясно что случилось - а не сидеть гадать - нету сервака в инете, а почему нету - никто не знает :)

P.S. На шестой фряхе порты (файлы в /dev) обзываются по другому (/dev/ttyd0 - первый ком-порт, например). Так что учтите.



размещено: 2005-12-19,
последнее обновление: 2006-04-28,
автор: lissyara


skit, 2006-01-05 в 19:25:18

Быстро, коротко и ясно :))
Пасиб!

nomad, 2006-04-04 в 18:04:56

Отличная статья. Полностью соответствует нелегкой правде жизни. =)

proxy-man, 2006-04-07 в 11:36:12

Респект - все лаконично и доступно. :)

BAV_Lug, 2006-06-16 в 13:46:46

А для УПСов других производителей эта программа покатит?
Интерисует для Mustek 1000 USB.

drurus, 2007-01-22 в 16:11:03

А через UPS тоже великолепно работает! :)

На сервере, где подключен ИБП:
grep Smart /var/run/dmesg.boot
ugen0: American Power Conversion Smart-UPS 2200 FW:654.13.I USB FW:4.2, rev 1.10/0.06, addr 2

cat apcupsd.conf
UPSCABLE usb
UPSTYPE usb
DEVICE
LOCKFILE /var/spool/lock
BATTERYLEVEL 10
MINUTES 3
TIMEOUT 0
ANNOY 300
ANNOYDELAY 60
NOLOGON disable
KILLDELAY 0
NETSERVER on
NISIP 0.0.0.0
NISPORT 3551
UPSCLASS netmaster
UPSMODE net
EVENTSFILE /var/log/apcupsd.events
EVENTSFILEMAX 10
STATTIME 0
STATFILE /var/log/apcupsd.status
LOGSTATS off
DATATIME 0

список серверов, которые будут "мониториться", к первому подключен APC
cat hosts.conf
MONITOR 192.168.29.10 "Fort"
MONITOR 192.168.29.8 "Virgo"
MONITOR 192.168.29.1 "Proxy"

маленький http сервер из /usr/ports/www/shttpd
grep shtt /etc/inetd.conf
http   stream  tcp     nowait root /usr/local/bin/shttpd        shttpd -I1 -D0 -d /usr/local/etc/apcupsd/cgi -i multimon.cgi -u nobody

На клиентах, которые запитаны от ИБП и отслеживают состояние:
cat apcupsd.conf
UPSCABLE ether
UPSTYPE net
DEVICE 192.168.29.10:3551
LOCKFILE /var/spool/lock
EVENTSFILE /var/log/apcupsd.events
EVENTSFILEMAX 10
UPSCLASS standalone
UPSMODE disable
NISPORT         3551
NETTIME 30

Все. Состояние смотрим на http://192.168.29.10/

Roman, 2007-03-02 в 14:00:39

Спасибо люди, очень помогло.

Дмитрий, 2007-03-21 в 20:56:07

Настроил..вроде работает, но не совсем правильно: по истечении указанного в конфиге MINUTES 3
Mar 21 19:46:15 scangate apcupsd[623]: Reached run time limit on batteries.
Mar 21 19:46:15 scangate apcupsd[623]: Initiating system shutdown!
Mar 21 19:46:15 scangate apcupsd[623]: User logins prohibited
Mar 21 19:46:15 scangate shutdown: halt by root: apcupsd initiated shutdown
Mar 21 19:46:23 scangate apcupsd[623]: apcupsd exiting, signal 15
Mar 21 19:46:23 scangate apcupsd[623]: apcupsd shutdown succeeded

При этом в консоле пишет: System halted и press any key to reboot/ Короче не шатдаунится

Дмитрий, 2007-03-21 в 20:57:36

наврал - по истечении TIMEOUT 300

Vili, 2007-05-29 в 20:31:00

Который раз убеждаюсь что это самый нужный сайт ;)

Touch, 2007-10-27 в 21:24:41

В новой версии apcupsd пришлось писать на основной тачке к которой подключен УПС:
UPSCLASS sharemaster
UPSMODE share

а на клиентах:
UPSCLASS shareslave

NarkomanLove, 2007-11-06 в 20:14:43

А кто нибудь пробывал зацепить клиентом Windows 2003 или вобще какую нибудь Windows?

stas, 2007-11-15 в 23:27:41

у меня есть такой же бесперебойник APC-1500, в комплекте кабель 024D  , есть также 024С и куча безродных...

apctest на мгновение соединение с бесперебойником устанавливает и тут же оно рвется.. с любыми кабелями...
один раз только выдалась инфа , как и положено..
тут же повтор - и ничего нет...

с этими же кабелями бесперебойник штатно управляется и win2k и winXP и netware... причем со всеми - одинаково успешно...

осталось только еще по USB попробовать...

что интересно, смарты 420,620 и ПРО 450 работают без замечаний под этим же apcupsd ...

вот такая непонятка...

dsa86, 2008-05-10 в 18:04:00

у кого не работают кабеля,а может быть драйвера - наверное подойдет NUT(http://www.freebsd.org/cgi/url.cgi?ports/sysutils/nut/pkg-descr) огромное количество поддерживаемых вендоров и моделей.
и Mustek 1000 поддерживается (http://www.networkupstools.org/compat/)

brt, 2008-10-23 в 16:15:06

По умолчанию apcupsd действительно выполняет команду shutdown -h now и происходит halt системы. Минус такой ситуации в том, что если питание появиться до того как ИБП разрядиться, то сервер так и будет висеть в этом сосотоянии пока его в ручную не включишь. У себя я сделал так:
в /usr/local/etc/apcupsd подправил файл apccontrol
там в case "$1" ищем параметр doshutdown) и меняем строчку ${SHUTDOWN} -h now "apcupsd initiated shutdown" на
${SHUTDOWN} -p now "apcupsd initiated shutdown"
В таком случае компьютер выключается полность и при появлении питания его можно включить по сети Wake On Lan (если мамка поддерживает).

Дмитрий, 2008-12-16 в 11:54:56

А если мне нужно просто знать, что упс работает от батарей? Без принятия мер по выключению сервера?

m4rkell, 2009-04-14 в 16:33:22

Прикрутил все фурычит, статья зачот! КОгда то в одном банке, был у нас виндовый сервак факсовый, так он перед приемом факса ждал ввода номер телефона внутреннего, для чего это делалось, ко внутренним номера на серваке были привязанны мылы юзверей, вот чувак когда послыл факс внутри офиса на свой номер телефона, ему на мыло приходило его отсканенное пиьсмо, ну это для того было что сканеров не на всех хватало...

m4rkell, 2009-04-14 в 16:37:11

Извнините))) не в то окно!

Ганс , 2009-04-16 в 13:54:49

Приобрели похожый UPS и в ходе эксперементов заметил что когда вырубается сервак подключенный по USB начинает фунциклировать COM и благопалучно вырубает второй сервак.

Ганс , 2009-04-16 в 14:01:04

Правда второй сервак у меня не FreeBSD а Win и как
поведет себя BSD в роли второго я не проверял.

Talk, 2010-06-25 в 17:30:26

Подключил smart apc через com кабель, так apcupsd не хотела заводиться до тех пор, пока я в типе кабеля не указал usb. Воистину, чудны дела твои, Господи

cod, 2010-10-28 в 19:53:35

А подскажите как правильно использовать с Back-UPS 400? Он dumb и apcupsd ничего не пишет, только запускается и все. apctest не в состоянии опросить UPS, відает 'мусор'.
Может заменить на Back-UPS Pro 420, он вроде smart?

yurkinson, 2011-10-24 в 16:34:49

Для осчастливленных владельцев APC Smart-UPS RT 5000VA:
читаем список ИБП, которые не стоит покупать на сайте apcupsd.net - он входит в этот список.
Решением является использование snmp, для этого в конфиге пишем:
UPSCABLE ether
UPSTYPE snmp
DEVICE ip_addr:161:APC:community_name

где ip_addr - назначаем либо утилиткой с сайта производителя, либо начально выделяем при помощи dhcp а потом конфигурим статически (у меня в сети dhcp не было, поэтому временно сделал тестовую сетку из ноута, ADSL модема
с включенным DHCP и самого ИБП) потом проверял утилитку - тоже находит;
community_name назначаем в админке в пункте Administration-Network-SNMPv1-Access Control например себе сделал так
apc5000 255.255.255.255 read  и далее в качестве параметра community_name использовал значение apc5000.

Кстати почему то с моделью APC  Smart-UPS 3000 RM XL (также упомянутой на страничке adcupsd) проблем ни с USB ни с SERIAL подключениями не было - проверено, а с 5000-ым USB не заработал вообще, а консольный порт работал только при снятой карте snmp с указанием типа кабеля в конфиге - DUMB (выдавал только состояние OnLINE\OnBatt - что для меня неюзабельно).

rootconf0, 2021-11-21 в 3:20:54

Итак, имеем:
FreeBSD (amd64);
APC Smart-UPS SC 1000;
USB to Serial Cable — кабель, у которого с одной стороны COM-разъём для втыкания в UPS, а с другой — USB для втыкания в компьютер; идёт в комплекте с вышеуказанным UPS.
Задача: подружить его с apcupsd.
Вроде бы в компьютер втыкаем USB и думается, что надо выставить в apcupsd.conf:
UPSCABLE usb
UPSTYPE usb
DEVICE
и всё должно завестись... Но не заводится. ((
После долгих мучений и попыток найти решение в документации, пришёл к решению методом научного тыка при поддержке логики. Всё-таки изначально из UPS'а идёт COM, стало быть ставим так:
UPSCABLE smart
UPSTYPE apcsmart
DEVICE /dev/ttyU0
Собственно, в этом /dev/ttyU0 собака и порылась — при втыкании в компьютер USB-шного конца он определяется как:
kernel: ugen1.2: Prolific Technology Inc. at usbus1
kernel: uplcom0: Prolific Technology Inc. USB-Serial Controller, class 0/0, rev 1.10/3.00, addr 2 on usbus1
номер ugen и usbus меняются в зависимости от порта USB, но мой пытливый глаз углядел в /dev свеже появившийся девайс /dev/ttyU0, который и оказался UPS'ом.
Всех благ!!!



 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.0899 секунд
Из них PHP: 65%; SQL: 35%; Число SQL-запросов: 77 шт.
У Вас отключено GZIP-сжатие в браузере. Размер страницы 41981