Сервис Linux NUT (Network UPS Tools) — это комплекс программ мониторинга и управления различными блоками бесперебойного питания (далее ИБП). Полный список поддерживаемых моделей можно получить, посмотрев список драйверов в файле /usr/share/nut/driver.list.  В руководстве описана настройка отключения ПК агентом NUT при потере напряжения в сети на примере ИБП Eaton 5E 650iUSB на Ubuntu-подобных дистрибутивах. Для использования под другие дистрибутивы используйте пакетный мененджер своего дистрибутива или соберите из исходных кодов. Новейшую версию Network UPS Tools можно скачать на GitHub по ссылке ссылке.  Для начала следует установить NUT: Сделаем резерную копию папки с файлами конфигурации NUT: Теперь добавим директиву, указывающую, что ИБП подключен к данному компьютеру, а не к удаленному: Теперь подключим ИБП к компьютеру и посмотрим вывод команды lsusb: Ищем, поддерживается ли ИБП сервисом NUT. Можно либо просмотреть его вручную либо вывести строки с упоминанием марки ИБП, например: Теперь, когда мы определились с драйвером, можно настраивать NUT. Следует выставить верные права доступа и владельцев для файлов конфигурации NUT Дописываем строки в конец файла /etc/nut/ups.conf или создаем новый с таким содержимым: Чтобы NUT имел право на доступ к USB интерфейсу ИБП, нужно написать правило доступа для udev.  udev — подсистема управления устройствами Linux. Благодаря udev в папке /dev находятся только подключенные в данный момент устройства. Выполним команду и найдем строку, соответствующую ИБП. В нашем примере это где после ID идет idVendor:idProduct (0463:ffff) Теперь создадим файл с правилом для udev: После создания правила следует перезагрузить сервис udev: После этого следует отключить и заново подключить USB кабель от ИБП. После этого выполним команду для проверки работоспособности udev правила: Если вывод приблизительно такой, то все настроено правильно. Дописываем строки в конец файла /etc/nut/upsd.conf или создаем новый с таким содержимым: Имейте в ввиду что LISTEN должно быть написано именно большими буквами, или работать ничего не будет. Создаем пользователя upsmonitor без права логина и домашней папки, с UID меньше 1000, чтобы он считался служебным и его не было на экране входа пользователей в систему, и с GID'ом группы nut.  Узнаем GID группы nut: Теперь подберем UID для пользователя. Либо выберем такой, какой врядли используется какой либо программой, например, 339, либо выполняем: и если ничего не выводит, то UID свободен и его можно использовать для создания пользователя upsmonitor: Теперь добавим этого пользователя в файл профилей пользователей NUT /etc/nut/upsd.users: Дописываем строки в конец файла /etc/nut/upsmon.conf или создаем новый с таким содержимым: Посмотрим, что ИБП может сообщить о своем состоянии: Все поля более менее очевидны или были определены нами в конфигурационных файлах ранее. Коды состояний ИБП отображаются в поле ups.status: и могут принимать значения: ИБП можно давать команды напрямую из консоли, с помощью команды upscmd. Список доступных команд можно получить, выполнив команду: Настройки beeper.* управляют сигнализацией ИБП в случае потери напряжения в сети, load.off выключает ПК немедленно, load.off.delay задержка в секундах до выключения ПК, shutdown.stop — команда прерывания процесса отключения ПК.  В некоторых ИБП присутствуют и другие опции, например, тест батареи или shutdown.return, в случае использования которой компьютер будет выключен, но ИБП пошлет сигнал включения ПК как только восстановится питание в сети. Чтобы это сработало, в БИОСе ПК дожна быть включена соответствующая функция, которая обычно находится где то в районе настроек питания. Для примера выключим писк ИБП, когда пропадает питание в сети: Чтобы включить, замените beeper.disable на beeper.enable. Дописываем строки в конец файла /etc/nut/upssched.conf или создаем новый с таким содержимым: Теперь теперь нужен скрипт /etc/nut/cmd.sh. Создадим его, выставим права и заполним его: На этом настройка завершена. Можно протестировать, банально выдернув ИБП из розетки.