Программы для ups linux
Достался мне уже старенький ИБП (источник бесперебойного питания) модели APC SMART 420. Подключается к компьютеру через com порт. Стал смотреть программы для корректного подключения его к компьютеру. На диске с этим ИБП нашел программу под linux размером аж 27Mb! Я так понял, она целиком графическая и требует для работы Java. А у меня на этом компьютере даже графического интерфейса нет, зачем роутеру графика? 🙂 Погуглив выбор пал на программу nut.
Данная программа может работать со многими типами ИБП, например такими как ippon, dell, mge, powercom и множество других моделей. Полный перечень смотрите тут.
Итак, задача вести логи состояния UPS, а также хочется web графический интерфейс для наглядного представления.
Первым делом идем на сайт проекта nut и смотрим есть ли поддержка вашего ИБП. Мне повезло, модели APC имеют хорошую поддержку в данной программе.
Установка nut и правка конфигов
После установки мы увидим достаточно много примеров конфигурационных файлов
Для работы переименуем их в нормальные конфиги без префикса sample и выставим права.
Файл nut.conf. Тип запуска программы.
Файл ups.conf. Сюда заносим ИБП, которые собираемся мониторить или контролировать. Обратите внимания, что для каждой модели ИБП надо правильно подобрать название драйвера, а иногда даже указать правильно тип кабеля. Но у меня в данном случае проблем не возникло. Еще задайте порт, на котором подключен ваш ИБП. Для linux обычно это порты /dev/ttyS0-1, а для freebsd /dev/cua0-1, что соответствуют портам com1-2
Остальные конфиги upssched.conf, upsset.conf, upsstats.html, upsstats-single.html я не трогал.
CGI скрипты я положил в папку cfi-bin на своем apache сервере.
Запуск nut
Запуск осуществляется в несколько этапов.
1. Загрузка драйверов для ИБП и установка с ним связи. Самый главный этап.
От рута выполняем
Если программа не нашла ваш ИБП, то следующие шаги запуска будут бесполезны. Проверьте в тот ли порт подключен ИБП, попробуйте заменить драйвер или указать ваш тип кабеля в файле ups.conf. Возможно это поможет.
2. Загрузка демона upsd и синхронизация с вашим ИБП
3. Запуск мониторинга ИБП. Тут программа работает с теми переменными, что вы задали в файле upsmon.conf.
Это все, теперь ваш ИБП настроен и будет работать при отлючении сети как вы задали.
Информация о ИБП
Визуальная информация в графиках
Ведем логи ИБП
Я делаю это с помощью программы upslog, которая ставится вместе с программой nut.
Запускаем
и в файле ups.log каждые 30 секунд создается запись с основными характеристиками ИБП. Из этой команды я сделал скрипт и назвал его log. Файл положил рядом с остальными бинарными файлами nut.
Ну и на закуску команды, которыми можно управлять напрямую вашим ИБП. Вот перечень команд с их описанием. Не пробуйте выполнять команды, если не знаете их назначение, можете запросто выключить компьютер.
показать
Теперь остается сделать только общий скрипт скрипт запуска программы и положить в стартовые скрипты компьютера.
У меня скрипт для linux получился такой.
Если что-то не получается сделать первым делом читайте документацию на сайте или в man файлах.
Сервис 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. Создадим его, выставим права и заполним его:
Заключение
На этом настройка завершена. Можно протестировать, банально выдернув ИБП из розетки.
Для наблюдения за источниками бесперебойного питания в Linux существуют разные инструменты, как предоставляемые поставщиками "бесперебойников" так и сторонние. Последние чаще всего немного сложнее в настройке но зато предоставляют более широкие возможности.
Из сторонних инструментов наиболее широкими возможностями обладают apcupsd и Network UPS Tool (NUT). Далее будет приведён пример использования NUT для мониторинга состояния бытового ИБП.
NUT это клиент-серверный инструмент: сервер взаимодействует с источниками бесперебойного питания и предоставляет универсальный интерфейс для получения информации клиентам. Клиенты обращаются к NUT-серверу, запрашивают информацию и меняют параметры ИБП через тот же универсальный интерфейс.
В случае персонального компьютера сервер и клиент "поднимаются" на одной машине, но взаимодействуют между собой так же, как если бы они находились на разных хостах в сети.
Приступаем к настройке. Начальные условия: ИБП IPPON BACK Basic 650VA , питающий домашний медиа-центр под управлением Xubuntu 16.04, на котором мы и запустим NUT.
Установим необходимые пакеты:
Открываем в редакторе файл "/etc/nut/ups.conf" и добавляем в конце описание нашего ИБП:
В квадратных скобках указывается имя ИБП. Если к серверу подключено несколько ИБП то для каждого необходимо указывать уникальное имя. Остальные параметры:
- driver: драйвер для взаимодействия с устройством. В выборе драйвера полезным может быть файл "/usr/share/nut/driver.list" из поставки nut-server.
- port: имя файла устройства. Если ИБП один то можно указать "auto".
- desc: Описание ИБП. Произвольная строка.
Здесь в квадратных скобках указывается логин. Остальные поля:
Далее нужно описать подключение NUT Client к серверу под созданным выше пользователем в файле "/etc/nut/upsmon.conf". Для этого достатоно добавить в файл одну строку:
Закончив настройку перезапустим nut-server и nut-client:
На этом начальная настройка заканчивается и теперь можно запусть графическую утилиту мониторинга из меню: «Интернет» -> «NUT Monitor»:
С помощью этого приложения можно видеть загрузку ИБП, заряд батареи, температуру на ИБП и ряд других параметров. Кроме того приложение добавляет в системный лоток иконку, показывающую текущий статус ИБП и отображающую во всплывающей подсказке краткую сводку:
Совместная работа ИБП с операционной системой на базе Linux легко реализовать через использование клиента KNUT. Программное обеспечение KNUT служит графической оболочкой для утилиты nut, позволяющей осуществлять мониторинг электропитания и завершение работы системы при разряде батарей ИБП.
Для управления и мониторингом ИБП в среде KDE операционной системы Linux от ROSA Lab необходимо установить c депозитария две программы knutsetting и knutclient. Knutsetting предназначена для управления настройками ИБП (запуск и перезапуск демонов, отвечающих за опрос ИБП, добавление и удаление пользователей, настройка реакции на различные события и тому подобное).
Knutclient отвечает за снятия показаний с ИБП. В зависимости от модели оборудования, можно получить данные о напряжении, нагрузке на прибор, примерном времени работы от батарей и так далее.
Установку программ можно выполнить через команду «urpmi knutsetting knutclient» в эмуляторе терминала из пользователя «root» (для выполнения от root введите su – и далее пароль). Либо через графический интерфейс, запустив программу «drakrpm». Следует помнить, что для работы обеих программ необходим установленный пакет «nut-server».
После установки программы для ее настройки необходимо зайти в главное меню и выбрать там пункт «Утилиты» → «Системные» → «KNutClient».
После запуска необходимо настроить клиент для работы с источником бесперебойного питания. Для этого необходимо выбрать пункт «Настройка» → «Настроить KnutClient». В открывшемся окне в левой боковой панели выбрать пункт «UPS». Нажать кнопку «Добавить» справа и ввести следующие данные:
Имя: UPS (можете выбрать любое по желанию)
Адрес UPS: 127.0.0.1
Имя UPS: sipower
Имя пользователя: upsmon
Пароль: pass
Настройки порта и задержек оставить без изменений.
После внесения необходимых данных необходимо нажать «OK» для сохранения. Если всё сделано верно, то сразу будет произведено подключение к ИБП. Если этого не случилось, достаточно нажать кнопку «F5» или выбрать пункт меню «Соединение» → «Переподключиться».
Для получения возможности отправки команд на ИБП необходимо иметь заранее созданного пользователя с административными привилегиями, допускающими изменение параметров сохранённых в ПЗУ оборудования. Создание такого пользователя производится в утилите «knutsetting». Настройки в этом случае будут полностью аналогичны, за тем исключением, что вместо пользователя «upsmon» и стандартного пароля «pass» необходимо указать пользователя с администраторскими полномочиями.
Дополнительные настройки отображения данных, получаемых с ИБП, можно задать или изменить, выполнив выбор меню «Настройка» → «Настроить KnutClient». Далее в левой боковой панели можно выбрать пункты «Аналог», «Панель», «Трей» для настройки соответствующих значений по вкусу.
В случае необходимости выполнения прямых команд, отправляемых непосредственно UPS, необходимо выбрать меню «Файл» → «Выполнить прямую команду». Список доступных команд предоставляется по нажатию на выпадающее меню.
Для выполнения процедуры настройки KNUTsetting необходимо открыть меню в нижнем левом углу экрана, выбрать пункт меню «Утилиты» → «Системные» → «Настройка рабочего стола». В открывшемся окне найти раздел «Оборудование» и выбрать пункт «UPS». Следует помнить, что для использования этого модуля необходимо вводить пароль пользователя «root». Он будет необходим как для входа в модуль, так и для сохранения настроек в процессе работы.
В первую очередь, необходимо проверить настройки путей к конфигурационным файлам и системным службам. Для этого необходимо выбрать вкладку «Пути ( Paths )». В выпадающем списке «Ваш дистрибутив (Selected distribution)» в нижней части раздела необходимо выбрать «ROSA». Если значение выставлено как «ROSA» по умолчанию, то ничего делать не требуется.
Настройки выключения ОС производятся во вкладке «Мониторинг → Свойства (Monitoring → Properties settings)». Команда, описывающая действия при выключении ОС, указывается в строке «Команда выключения (Shutdown command)». Вместо выключения можно настроить засыпание на диск. В строке «Задержка перед выключением системы (Sleep interval before shutting down the system)» задаётся значение в секундах для настройки задержки перед выполнением команды выключения по достижению критического заряда батареи.
Для выполнения завершения работы можно использовать команду «/bin/systemctl» с различными аргументами:
/bin/systemctl poweroff – для выключения системы
/bin/systemctl hibernate – для перевода компьютера в спящий режим
/bin/systemctl hybrid - sleep – для перевода компьютера в режим гибридного сна
/bin/systemctl suspend – для перевода компьютера в ждущий режим
Полный список опций можно посмотреть, выполнив в консоле «/bin/systemctl --help».
Если в дальнейшем требуется не только мониторинг данных, получаемых с ИБП, но и произвести некоторые настройки, которые предусмотрены оборудованием (например, отключить зуммер или провести диагностику источника бесперебойного питания), то необходимо создать отдельного пользователя, обладающего такими полномочиями.
Для создания такого пользователя необходимо перейти во вкладку «Пользователи (Users)» и нажать кнопку «Добавить (Add)» справа. В нижней части экрана необходимо ввести в поле «Имя (Name)» — имя пользователя, «Пароль (Passwo r d)» — пароль.
Например :
Имя (Name): admin
Пароль (Password): admin
Тип (Type of section): Пользователь (user).
После чего необходимо нажать «OK» для сохранения. После создания пользователя «admin» необходимо нажать один раз кнопкой мыши по нему и в правой части экрана выполнить нажатие на кнопку «Edit» для редактирования учётной записи. Для настройки необходимо выбрать в нижней правой части «Разрешить изменение переменных (Allow the change variables)», в левой нижней части выбрать в столбце «Доступные команды (Instant commands)» разрешённые данному пользователю действия и нажать кнопку «→». Для сохранения произведённых настроек необходимо нажать кнопку «OK». Для дальнейшего применения настроек необходимо перезапустить демон UPS. Это можно выполнить нажатием кнопки «Перезапустить ИБП (Restart ups)» в самой нижней части окна. После чего можно выйти из программы.
Если при разряде аккумулятора не выполняется завершение работы системы необходимо вручную отредактировать файл /etc/ups/ ups .conf. В консоле выполните команду su – и введите пароль администратора. Затем cd / etc / ups и mc . Выбираете файл ups . conf и нажимаете F4 для редактирования. В секции [ sipower ], в самом конце файла стираете знак равно после ignorelb и нажимаете F2 для сохранения. Закройте окно и перезагрузите компьютер.
Возможно потребуется отредактировать файл конфигурации ИБП ups . conf добавив драйвер для протокола Megatec. Для подключения через USB-порт это "blazer_usb", для подключения через последовательный порт "blazer_ser". Пример файла конфигурации приведен ниже:
Читайте также: