Программы для ups linux
lsusb, как и в той теме, выдаёт:
Bus 001 Device 003: ID 0925:1234 Lakeview Research
По верхней ссылке так и не понятно, чем разрешилась ситуация. Это проблема кривых дров или просто что-то конфликует и если устранить конфликт, то всё нормально заработает? Что можно попробовать?
ещё можно поставить nut и не страдать хернёй
Завтра попробую. Но в списке поддерживаего nut'ом железа его нет. А ставить какой-нибудь дженерик-драйвер - значит, судя по обсуждению по ссылке, получить минимум контроля над устройством.
А какой котроль над устройством нужен? Про мой blazer_usb тоже говорили что он какой-то не такой, не знаю, всё что можно умеет и даже больше. Я даже не видел софтину которая им управлять должна. Не прошёл до конца квест «найди софт для своего упс на стрёмных левых сайтах в интернете», да и тот венда-онли в любом случае.
Например, хотелось бы, чтобы бесперебойник посылал ОСи сигнал на нормальное выключение компа, если батарея близка к разрядке.
Он вроде вольтаж должен отсылать когда спрашивают? А дальше nut сам разберётся, когда подходит время гасить. Сам он ничего не должен посылать. Вообще, ситуация с бесперебойниками несколько похожа на ситуацию с насами, хоть сам бери и собирай себе бесперебойник. Непопулярное железо стоящее сотни нефти за сколько-нибудь приличный конфиг. Хуже наверно только железо для плёнки, хотя казалось бы надёжно сохранять терабайты полезно каждому. Печально это всё.
Ну, пусть так - не он посылает сигнал о выключении, а тулз мониторинга, испрашивая у ИБП информацию о его состоянии, говорит ОСи отрубиться. Осилит ли это nut с левыми дженерик-дровами? Что-то не верится. Но завтра попробую, выбора, похоже, нет.
если nut его увидит (т.е. протокол известный а не хренпоймичто на коленке китайцами наструганое) - то напряжение батареи/% разяда он-то точно сможет узнать.
а так - сатавить оффтопик, запускать вендор софтину, и снифить протокол. потом - писать свой драйвер и отправлять патчи разрабам nut.
Связался с китайцами, которые писали софт и дрова для моего ИБП. Больше для ржаки.
Всё обсуждение крутилось вокруг вопроса, каким кабелем у меня ИБП подключён к компу. Подключён он через USB-B--USB-A, а надо, оказывается, через серийный порт (RS232 и прочее). На компе серийных портов нет, конечно, но это решаемо через какую-нибудь плату расширения. А вот у ИБП только USB-B-выход.
Можно ли как-то обмануть его? Типа создать виртуальный серийный порт и перекинуть траффик на него с USB, к которому ИБП подключён? :)
если nut его увидит (т.е. протокол известный а не хренпоймичто на коленке китайцами наструганое) - то напряжение батареи/% разяда он-то точно сможет узнать.
И этого будет nut'у достаточно, чтобы отдать команду ОСи на отключение при разрядке батареи?
Может такое быть что RS232 у ИБП внутри, а к нему подключен переходник на юсб и выведен наружу. А ещё бывает что переходник есть, но его забыли подключить проводком.
А ещё китайцы могут бредить и общаться с тобой не приходя в сознание.
И этого будет nut’у достаточно, чтобы отдать команду ОСи на отключение при разрядке батареи?
Да, хотя обычно ИБП (и NUT) немножко умнее и дают ИБП команду выключиться через хх секунд после выключения ПК и включиться когда подача электроэнергии восстановится (так корректно обрабатывается ситуация, когда питание вернулось во время шатдауна).
ок, я сегодня-завтра попробую поставить Nut.
А никто не хочет ради интереса попробовать его заставить работать с родными дровами через перекидывание траффика с USB на виртуальный serial port? Если это возможно.
Можно ли чисто линуксовскими методами как-то связать эти ttyS0 и USB? Чисто ради интереса.
Подключён он через USB-B--USB-A, а надо, оказывается, через серийный порт (RS232 и прочее). На компе серийных портов нет, конечно, но это решаемо через какую-нибудь плату расширения. А вот у ИБП только USB-B-выход.
ну так надо было у них и спросить - а куда ком-порт тыкать-то если только юсб есть? :)
И этого будет nut'у достаточно, чтобы отдать команду ОСи на отключение при разрядке батареи?
ну да. а что ему еще надо нать для этого-то?
правда тут может быть другой сюрприз: питание появится пока комп выключается (до того как упс сдохнет), итог - комп выключен, а питание подается.
да если usb видится как usb to serial - без проблем. а если нет - то в общем случае никак, писать свой драйвер который будет прикидываться ком-портом.
В программе мониторинга должен быть способ выставить устройство. Вместо /dev/ttyS0 туда нужно вбить /dev/ttyUSB123 (какой будет номер вместо 123 зависит от железа, посмотри lsusb ).
> ну так надо было у них и спросить - а куда ком-порт тыкать-то если только юсб есть? :)
Я общался с разработчиками дров, думая, что проблема в софте. Почему производитель ИБП использует их дрова под серийный порт вместе с USB интерфейсом, спрашивать у них смысла не было.
В программе мониторинга должен быть способ выставить устройство. Вместо /dev/ttyS0 туда нужно вбить /dev/ttyUSB123 (какой будет номер вместо 123 зависит от железа, посмотри lsusb).
Теоретически такая возможность есть, но к результату не приводит. Вот так выглядит конфиг тулза:
В качестве Communicate Mode принимается либо 0, либо 1. Если выбрать 0, появляется UPS Adapter No Response (пытается общаться через com-порт, видимо). Если выбрать 1, ошибок не возникает, но и никакой полезной информации от устройства не идёт.
В UPS Communicate Ports можно выбрать Com 1 или Com 2. И всё.
Nut я поставил. Он подключился к УПС через дрова richcomm_usb. Здесь писали, что через эти дрова можно получить onbattery, lowbattery и т.д., у меня не вышло и этого. Может, что не так настроил?
К материнской плате в комплекте оказался один подключаемый на шлейфе com-порт. Может, попробовать купить переходник USB на com и воткнуть его в com?
Если прямо запустить драйвер через richcomm_usb -a ups -DDD, то видно, что траффик есть:
Разобрался. ups.status в выдаче - это оно и есть. OB = on battery, OL = online, LB = low battery. Он ещё и неправильно статус в моём случае определяет. Всё время говорит, что OB, и так уже 2 часа.
ну значит китайцы внутри проводки перепутали. отключите сеть, посмотрите что упс скажет.
Через nut ничего так и не заработало. Но каким-то чудом запустились родные дрова и тулзы, шедшие в комплекте, через usb. Специально ничего для этого не делал. Просто прибрался в линуксе. И решил ещё поковырять родной софт. Глядь - а он работает. Что призошло не знаю, но УПС рабочий, можете брать. :)
Купив источник бесперебойного питания от APC (а именно — APC Back-UPS ES 550VA ), я с удивленьем обнаружил, что «из коробки» он не может похвастаться тесной дружбою с Linux. Конечно, XFCE Power Manager, входящий в состав XFCE 4.6, подхватил и разпознал UPS, но всё, на что он оказался способен — отображение в трее уровня заряда. Какие-либо настройки отсутствовали начисто, нельзя было даже задать выключение ПК при достижении определённого уровня заряда.
Обратившись за консультацией в гугл, я узнал о существовании замечательного демона apcupsd, чья роль заключается в — никогда не поверите — управлении ИБП от APC. Но, как оказалось, практически все руководства по его начальной настройке были откровенно устаревшими — включая, как ни странно, официальный мануал. Споткнуться приходилось уже в самом начале о «cat /proc/bus/usb/devices». Поговорив с гуглом серьёзным и доверительным тоном, я добился от него ссылки на действующий мануал, художественным переводом коего с дополнениями из иных источников сия статья и является.
Итак, начнём с установки самого apcupsd:
sudo apt-get install apcupsd
Разумеется, вышесказанное справедливо для Debian и его производных, включая Ubuntu. Если в вашем дистрибутиве не используется apt-get — думаю, вы всё равно знаете, как поставить необходимый пакет. Надеюсь на это.
Теперь мы отредактируем конфигурационный файл apcupsd:
sudo gedit /etc/apcupsd/apcupsd.conf
В данном случае нас интересуют всего три параметра:
Сохраняем изменённый конфигурационный файл, открываем следующий:
sudo gedit /etc/default/apcupsd
Заменяем ISCONFIGURED=no на ISCONFIGURED=yes, сохраняем, закрываем. Отныне apcupsd будет знать, что мы не забыли его настроить.
Теперь достаточно запустить apcupsd:
sudo /etc/init.d/apcupsd start
Если он уже был запущен — вместо start нам, разумеется, надо будет писать restart.
Всё, ваш ПК теперь связан с новеньким ИБП прочными узами дружбы.
А теперь немножко о том, что мы можем настроить в обширном /etc/apcupsd/apcupsd.conf:
ONBATTERYDELAY — время (в секундах), определяющее задержку между обнаружением сбоя электропитания и отсылкой события onbattery. По умолчанию — 6
BATTERYLEVEL — уровень заряда батареи (в процентах), при котором инициируется выключение компьютера. По умолчанию — 5
MINUTES — расчётное время остаточной работы (в минутах), при достижении которого инициируется выключение компьютера. По умолчанию — 3
TIMEOUT — параметр актуален для старых ИБП, неспособных определять свой уровень заряда. Задаёт время (в секундах) между сбоем электропитания и отключением компьютера. Для современного ИБП параметр стоит оставить на 0, но выставление иного значения может быть удобно для тестирования работы ИБП. Например, если выставить 30 и выдернуть шнур из розетки, уже через полминуты apcupsd продемонстрирует своё умение выключать компьютер
Выполнения одного из условий (BATTERYLEVEL, MINUTES или TIMEOUT) достаточно для выключения компьютера. Более тонкая настройка не описывается, ибо её необходимость для домашнего пользователя весьма сомнительна.
Долго сказка сказывается, да недолго дело делается: полагаю, описанные действия пользователь произведёт за пару минут. Надеюсь, данная статья поможет кому-нибудь подружить его ИБП APC с Linux, сэкономив время и не завязнув в устаревших мануалах.
Сервис Linux NUT (Network UPS Tools) — это комплекс программ мониторинга и управления различными блоками бесперебойного питания (далее ИБП). Полный список поддерживаемых моделей можно получить, посмотрев список драйверов в файле /usr/share/nut/driver.list.
В руководстве описана настройка отключения ПК агентом NUT при потере напряжения в сети на примере ИБП Eaton 5E 650iUSB на Ubuntu-подобных дистрибутивах. Для использования под другие дистрибутивы используйте пакетный мененджер своего дистрибутива или соберите из исходных кодов. Новейшую версию Network UPS Tools можно скачать на GitHub по ссылке ссылке.
Установка NUT
Для начала следует установить NUT:
Сделаем резерную копию папки с файлами конфигурации NUT:
Теперь добавим директиву, указывающую, что ИБП подключен к данному компьютеру, а не к удаленному:
Теперь подключим ИБП к компьютеру и посмотрим вывод команды lsusb:
Ищем, поддерживается ли ИБП сервисом NUT. Можно либо просмотреть его вручную либо вывести строки с упоминанием марки ИБП, например:
Теперь, когда мы определились с драйвером, можно настраивать NUT.
Защита конфигурационных файлов
Следует выставить верные права доступа и владельцев для файлов конфигурации NUT
Настройка NUT
Настройка драйвера, способа подключения и времени выключения
Дописываем строки в конец файла /etc/nut/ups.conf или создаем новый с таким содержимым:
Настройка доступа системной группы NUT к ИБП по USB
Чтобы NUT имел право на доступ к USB интерфейсу ИБП, нужно написать правило доступа для udev.
udev — подсистема управления устройствами Linux. Благодаря udev в папке /dev находятся только подключенные в данный момент устройства.
и найдем строку, соответствующую ИБП. В нашем примере это
где после ID идет idVendor:idProduct (0463:ffff)
Теперь создадим файл с правилом для udev:
После создания правила следует перезагрузить сервис udev:
После этого следует отключить и заново подключить USB кабель от ИБП. После этого выполним команду для проверки работоспособности udev правила:
Если вывод приблизительно такой, то все настроено правильно.
Настройка адресов и портов прослушивания подключений к NUT
Дописываем строки в конец файла /etc/nut/upsd.conf или создаем новый с таким содержимым:
Имейте в ввиду что LISTEN должно быть написано именно большими буквами, или работать ничего не будет.
Настройка профиля пользователя для доступа к NUT
Создаем пользователя upsmonitor без права логина и домашней папки, с UID меньше 1000, чтобы он считался служебным и его не было на экране входа пользователей в систему, и с GID'ом группы nut.
Узнаем GID группы nut:
Теперь подберем UID для пользователя. Либо выберем такой, какой врядли используется какой либо программой, например, 339, либо выполняем:
и если ничего не выводит, то UID свободен и его можно использовать для создания пользователя upsmonitor:
Настройки мониторинга NUT
Дописываем строки в конец файла /etc/nut/upsmon.conf или создаем новый с таким содержимым:
Тест соединения
Посмотрим, что ИБП может сообщить о своем состоянии:
Все поля более менее очевидны или были определены нами в конфигурационных файлах ранее. Коды состояний ИБП отображаются в поле ups.status: и могут принимать значения:
- OL — система работает от сети;
- OB — система работает от батареи;
- LB — система работает от разряженной батареи.
Внутренние команды и переменные ИБП
ИБП можно давать команды напрямую из консоли, с помощью команды upscmd. Список доступных команд можно получить, выполнив команду:
Настройки beeper.* управляют сигнализацией ИБП в случае потери напряжения в сети, load.off выключает ПК немедленно, load.off.delay задержка в секундах до выключения ПК, shutdown.stop — команда прерывания процесса отключения ПК.
В некоторых ИБП присутствуют и другие опции, например, тест батареи или shutdown.return, в случае использования которой компьютер будет выключен, но ИБП пошлет сигнал включения ПК как только восстановится питание в сети. Чтобы это сработало, в БИОСе ПК дожна быть включена соответствующая функция, которая обычно находится где то в районе настроек питания.
Для примера выключим писк ИБП, когда пропадает питание в сети:
Чтобы включить, замените beeper.disable на beeper.enable.
Настройка планировщика задач NUT upssched
Дописываем строки в конец файла /etc/nut/upssched.conf или создаем новый с таким содержимым:
Теперь теперь нужен скрипт /etc/nut/cmd.sh. Создадим его, выставим права и заполним его:
Заключение
На этом настройка завершена. Можно протестировать, банально выдернув ИБП из розетки.
Началось все с того, что у меня сгорел служивший верой и правдой много лет Back-UPS 500VA. Не беда, подумал я и заменил его на APC Smart UPS 1000, что для моего сервера оказалось гораздо лучше. Сразу скажу, изначально сервер работал на форточках и проблем с бесперебойником не было. После замены ИБП и окончательно-бесповоротном переходе на Ubuntu я задался вопросом: собственно, как мониторить состояние сети электропитания и состояние бесперебойника? Погуглив некоторое время, я наткнулся на несколько инструкций по подключению бесперебойников к никсовым машинам, но почему-то они все были про Back UPS и USB. В частности, меня натолкнуло на написание этой статьи аналогичная статься на Хабре «Начальная настройка ИБП APC в Linux с точки зрения чайника».
Но у меня же старенький тысячник с ком-портом и про USB он и слыхом не слыхивал.
Предупреждаю! Внимательно выбирайте кабель COM-COM. Например, стандартный кабель от свича DES3526 вызывает аварийное отключение бесперебойника. У меня подошел проводок от другого UPS (на сколько помню — Sven).
Как выяснилось, демон для мониторинга/управления все-таки есть, только все инструкции к нему безнадежно устарели (включая официальные!).
Установка демона APC:
После установки начался геморрой с настройкой. Наступая на все грабли по очереди я все же добился своего:
Для снижения количества неудачных настроек для начала найдем порт ttyS:
У меня активных портов оказалось всего 2:
Редактируем /etc/apcupsd/apcupsd.conf
В разделе UPSNAME я обозвал свой бесперебойник:
В разделе UPSCABLE был выбран тип Smart:
В разделе UPSTYPE выбран apcsmart и нужный порт:
Далее осталось только сообщить демону, что мы не забыли его настроить:
Меняем в строке ISCONFIGURED=no на ISCONFIGURED=yes
И напоследок запустить сие чудо:
Когда эта скотина все-таки запустилась без ошибок, я сильно обрадовался. Осталось только вывести данные бесперебойника на веб-морду серва. Тут кроется загвоздочка: веб-морда у меня Webmin, модуль для него есть, но идет он не настроенный.
Установка модуля Apcupsd в Webmin:
Для начала скачаем модуль на рабочую станцию отсюда.
Затем зайдем в модули Webmin и добавим скачанный модуль.
Все установилось, но модуль ничего не показывает и пишет что не настроен — ничего! Допиливаем до рабочего состояния:
На рабочей станции приводим пути в настройках модуля в порядок:
Жмем сохранить и — вуаля!
*В связи с безвременной кончиной фотохостинга savepic скриншоты с уже подключенным Apc Smart UPS 3000 RM
Статью написал для того, чтобы никто больше не наступал на те же грабли и не гуглил бесполезными запросами.
Приветствую всех. Стоит задача прикрутить к серверу ИБП. Ранее с ИБП никогда не имел дел. Поэтому подскажите, какой лучше выбрать ИБП, и как его подружить с сервером, например для автоматического выключения системы низком заряде батареи.
А зачем он нужен?
router ★★★★★ ( 20.11.13 16:21:22 )
Последнее исправление: router 20.11.13 16:21:37 (всего исправлений: 1)
Часто вырубают электричество в офисе. Например для того что бы рэйд контроллер успел записать данные на ЖД. И как дополнение выключение сервера в автоматическом порядке ,средствами системы, а не пропажей электричества.
Если важные данные, то можно. Заряда батареи, обычно, хватает лишь для того, чтобы корректно завершить работу компьютера. О работе в автономном как таковой речь не идет.
Интересно. Спасибо. А как nut работает? Что то типа apcupsd, но универсальнее?
Само собой. Автономная работа и не нужна особо :) Но APC Back UPS Pro 650 хватает минут на 40 работы подобного сервера. Увы модель самостоятельная. Главное что бы рэйд дозаписал все свое, и выключить систему.
Сервер опрашивает все подключенные ИБП, запоминает подключившихся клиентов. После отказа питания, после срабатывания триггера ( низкий заряд на батарее или прошедшее время от аккумулятора ) всем клиентам даёт команду останавливать ОСь. Ждёт, пока ещё возможно, отчётов от клиентов, потом сам гасит сервер, на котором крутится
О это и есть то что нужно. Но как я понял, он опять таки не со всеми дружит) НА сервере будет стоять виртуализатор. В НУТе глянул, вроде можно самому команду выключения задавать, где и задам повыключать виртуалки, а потом себя.
Читайте также: