The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Подключение источника бесперебойного питания к Linux с помощью NUT-2.2.1 (ups backup nut linux)


<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>
Ключевые слова: ups, backup, nut, linux,  (найти похожие документы)
From: Алексей Лесовский Newsgroups: email Date: Mon, 23 May 2008 17:02:14 +0000 (UTC) Subject: Подключение источника бесперебойного питания к Linux с помощью NUT-2.2.1 В статье я опишу как подключить к Linux UPS через USB и настроить процедуру выключения при разряженной батарее Статья основывается на следующих данных так что большое спасибо авторам и самим разработчикам: - http://www.opennet.dev/base/sys/smart_ups_nut.txt.html - сам автор признается что его статья неполная, и при ее прочтении у меня возникала масса вопросов, поэтому дальше - http://eu1.networkupstools.org/doc - официальная документация по NUT, правда на англ. языке Заранее извиняюсь за возможные грамматические и орфографические ошибки. итак начало Имеем ups, в моем случае подключенный через usb, и операционная система linux, в моем случае fedora, что в принципе мало имеет значение т.к. установка происходила из исходных кодов. Для работе с ups была использована программа NUT - Network UPS Tools. Итак поехали. Для начала скачиваем исходные коды программы и устанавливаем ее в систему, ничего необычного на этом шаге нет, поэтому выполняются обычные процедуры wget http://eu1.networkupstools.org/source/2.2/nut-2.2.1.tar.gz tar -xvzf ./nut-2.2.1.tar.gz cd ./nut-2.2.1.tar.gz ./configure make make install в ходе установки у меня создался каталог программы в /usr/local/ под названием ups, в зависимости от дистрибутива и от метода установки (rpm, yum, emerge) путь может отличаться но внутренняя структура каталогов будет одинаковая. После установки появляются следующие каталоги: bin - каталог с драйверами под определенные модели UPS'ов etc - файлы конфигурации демонов, настройки подключения к ups sbin - системные демон, демон мониторинга, и еще html cgi-bin include lib share - нам в них ничего править не придется, так что их описывать не обязательно Для начала, кто делает это впервые, нужно определиться с UPS, подключен ли он, видит ли его ядро. воспользуемся утилитой из пакета usbutils lsusb вывод покажет, какие usb-устройства есть в системе, если вы не видите ups, также рекомендую воспользоваться dmesg, если dmesg и там его нет, значит в ядре попросту не хватает каких то опции. В моем случае все определилось без проблем у я увидел модель American Power Conversion Back-UPS Pro 500 т.е. APC далее в каталоге с исходными кодами, есть подкаталог data, в нем есть список поддерживаемого оборудования - driver.list там можно найти поддерживается ли ваш UPS и каком подходит для него драйвер. Теперь когда определились с моделью ups и драйвером, можно приступать к настройке конфигов. пути к файлам будут указываться относительно /usr/local/ редактируем ups/etc/ups.conf user = nobody [usbhid] driver = usbhid-ups port = /dev/hiddev0 в общем строка user, показывает от кого будет запускаться драйвер, он запускается с правами nobody и поэтому в начале не может получить доступа к некоторым ресурсам (в каталоге /dev/, не может создать .pid и проч.) [usbhid] - это имя нашего UPS, рекомендую запомнить потому что еще пригодится driver - это драйвер для нашего UPS, располагается в каталоге ups/bin port - это место где демон будет взаимодействовать с ups (в некоторых дистрибутивах, путь может иметь вид /dev/usb/hiddev0) Примечание: вообще в каталоге ups/bin есть отдельный драйвер для UPS'ов фирмы АРС, используется usbhid-ups, потому как UPS подключен через USB перед запуском рекомендую открыть в отдельном окне tail -f /var/log/messages, дабы просматривать системные сообщения, выводимые демонами далее запускаем upsdrvctl для соединения с ups ups/bin/upsdrvctl start usbhid вот тут как раз и указываем имя нашего UPS - usbhid - так, мы явно указываем что нужно использовать секцию [usbhid] вообще у upsdrvctl есть 2 полезных параметра, -t - тестовый режим, upsdrvctl выводит на экран то что бы он делал, во время нормального запуска; и -D - отладочный запуск (debug) смотрим в messages все ли нормально, если нет, то разбираемся в причинах (рекомендую оф.сайт - там неплохой FAQ), если да идем дальше правим ups/etc/upsd.conf и ups/etc/upsd.users в файле upsd.conf настраиваются права доступа к upsd. ACL all 0.0.0.0/0 ACL localhost 127.0.0.1/32 ACCEPT localhost REJECT all LISTEN 127.0.0.1 3493 в файле upsd.users настраиваются пользователи имеющие доступ к upsd. [upsmon] password = usbhidpassword allowfrom = localhost upsmon master далее с правами доступа на файлы и директории, у меня часто вылазили сообщения что не хватает прав доступа к каким то файлам поэтому пришлось немного их поменять, хотя с точки зрения безопасности это не хорошо. chmod 666 /dev/hiddev0 # указание user = root в ups.conf, не помогло избежать проблемы доступа, к hiddev0 chmod 777 /var/state/ups # там upsd не мог создать .pid файл chmod 640 ups/etc/upsd.conf теперь запускаем upsd и в случае успешного запуска проверяем соединение с UPS ups/sbin/upsd ups/bin/upsc usbhid@localhost успешный вывод должен быть примерно следующий... battery.charge: 100 battery.charge.low: 10 battery.charge.warning: 50 battery.date: 2001/09/25 battery.mfr.date: 2007/06/12 battery.runtime: 7177 battery.runtime.low: 120 battery.type: PbAc ... ups.status: OL ups.test.result: No test initiated ups.vendorid: 051d это говорит что все хорошо. Теперь настраиваем upsmon для того чтобы следить за тем когда разрядится батарея, и выключить нашу машинку. редактируем ups/etc/upsmon.conf. Пример полностью взят из статьи с opennet, что немного облегчило мне жизнь. Но не забываем поменять имя UPS'а и пароль на свои (самая первая строка). редактируем ups/etc/upsmon.conf MONITOR usbhid@localhost 1 upsmon usbhidpassword master NOTIFYCMD /usr/local/sbin/callwall NOTIFYFLAG ONLINE SYSLOG+EXEC NOTIFYFLAG ONBATT SYSLOG+EXEC NOTIFYFLAG LOWBATT SYSLOG+EXEC MINSUPPLIES 1 SHUTDOWNCMD "/sbin/shutdown -h +0" POLLFREQ 5 POLLFREQALERT 2 HOSTSYNC 15 DEADTIME 15 POWERDOWNFLAG /etc/killpower RBWARNTIME 43200 NOCOMMWARNTIME 300 FINALDELAY 5 все теперь запускаем upsmon и и если запуск прошел успешно можно протестировать нашу работу))) выдергиванием шнура питания из сети Примечание: запустились ли процессы можно проверить через ps, следующим образом ps ax |grep ups ups/sbin/upsmon Также проверить как останавливается система можно сказав upsd что UPS получил сигнал выключения питания upsmon -c fsd Теперь все это (upsdrvctl, upsd, upsmon) можно положить в автозагрузку. На этом функционал программы не исчерпывается, кому хочется большего следуют на http://eu1.networkupstools.org/doc Также есть неплохой пакет заточенный конкретно под бесперебойники фирмы APC - apcupsd на http://www.apcupsd.com/

<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>

Обсуждение [ RSS ]
  • 1.1, Большой Лис (?), 12:26, 27/05/2008 [ответить]  
  • +/
    коммандой make install дестибутив превращается в slackware :)

    автор, зачем компилить из исходников и засирать систему не "паковаными" программами, когда в updates федоры той же лежит nut?

     
  • 1.2, daevy (?), 14:14, 27/05/2008 [ответить]  
  • +/
    Большой Лис, стечение обстоятельств такое, что пришлось из исходников
     
  • 1.3, Аноним (3), 14:38, 27/05/2008 [ответить]  
  • +/
    Поверьте мне, значение параметра port игнорируется, NUT уже довольно давно не пользуется услугами ядерного драйвера HID. port нужно задавать только при подключении к COM. Кстати, что навело вас на мысль, что там должно быть /dev/hiddev0? Если это документация, то мы ее поправим :)
    Кстати, для настройки прав доступа гораздо лучше использовать набор правил udev, ищите в scripts/udev/ в исходниках.
     
     
  • 2.5, daevy (?), 06:42, 28/05/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >Поверьте мне, значение параметра port игнорируется, NUT уже довольно давно не пользуется
    >услугами ядерного драйвера HID. port нужно задавать только при подключении к
    >COM. Кстати, что навело вас на мысль, что там должно быть
    >/dev/hiddev0? Если это документация, то мы ее поправим :)
    >Кстати, для настройки прав доступа гораздо лучше использовать набор правил udev, ищите
    >в scripts/udev/ в исходниках.

    в старой статье вроде было написано про hiddev0, насчет документации непомню:)

     

  • 1.4, devnull (??), 17:47, 27/05/2008 [ответить]  
  • +/
    господа, подскажите

    сам ups завёлся, upsmon при тестировании force shutdown не выключает сам ups

    при выключении пишет в монитор ERROR и в логах тишина

    может быть права на какие то файлы поправить

    дайти хинт

    дистрибутив rhel 5.1
    nut 2.2.0-5.1
    ups - powerware pw-9120

     
  • 1.6, Maxxx (??), 17:00, 06/07/2008 [ответить]  
  • +/
    http://blog.siegerstein.org.ua/?p=3
    Там для Линь и для Фри
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру