14просмотров
21 июля 2025 г.
Score: 15
🔌 NUT (Network UPS Tools) — контроль ИБП в сети Недавно нужно было настроить NUT на новой ноде Proxmox и я понял, что совсем забыл как это делать. Чтобы не забыть, а при отключении света устройства корректно выключались я решил написать эту заметку. NUT нужен для того чтобы:
✅ Следить за состоянием UPS
✅ Получать уведомления (например, при пропадании питания)
✅ Автоматически выключать систему при долгом отключении
✅ Работать с несколькими машинами в сети Режим работы: netclient
Мой сервер не подключен к ИБП напрямую, он получает информацию от другого по сети.
Для этого NUT работает в режиме netclient — просто слушает сигналы от удалённого сервера NUT.
# /etc/nut/nut.conf
MODE=netclient 🧠 Мониторинг удалённого UPS
# /etc/nut/upsmon.conf
MONITOR ups@192.168.10.1 1 ups password slave
Здесь:
- ups — имя ИБП на удалённой машине
- 192.168.10.1 — её IP
- ups / password — логин/пароль, заданные на удалённой машине
- slave — клиентский режим
Остальные параметры: частота опроса, команды выключения, уведомления и т.д. 📜 Автоматизация с upssched
NUT вызывает скрипт, если питание пропало или восстановилось.
Тут задаётся логика: «если света нет 300 секунд — выключиться».
# /etc/nut/upssched.conf
MONITOR ups@192.168.10.1 1 ups password slave
NOTIFYCMD /sbin/upssched
NOTIFYMSG ONLINE "UPS %s on line power"
NOTIFYMSG ONBATT "UPS %s on battery"
NOTIFYMSG LOWBATT "UPS %s battery is low"
NOTIFYMSG FSD "UPS %s: forced shutdown in progress"
NOTIFYMSG COMMOK "Communications with UPS %s established"
NOTIFYMSG COMMBAD "Communications with UPS %s lost"
NOTIFYMSG SHUTDOWN "Auto logout and shutdown proceeding"
NOTIFYMSG REPLBATT "UPS %s battery needs to be replaced"
NOTIFYMSG NOCOMM "UPS %s is unavailable"
NOTIFYMSG NOPARENT "upsmon parent process died - shutdown impossible" NOTIFYFLAG ONLINE SYSLOG+WALL+EXEC
NOTIFYFLAG ONBATT SYSLOG+WALL+EXEC
NOTIFYFLAG LOWBATT SYSLOG+WALL+EXEC
NOTIFYFLAG FSD SYSLOG+WALL+EXEC
NOTIFYFLAG COMMOK SYSLOG+WALL+EXEC
NOTIFYFLAG COMMBAD SYSLOG+WALL+EXEC
NOTIFYFLAG SHUTDOWN SYSLOG+WALL+EXEC
NOTIFYFLAG REPLBATT SYSLOG+WALL+EXEC
NOTIFYFLAG NOCOMM SYSLOG+WALL+EXEC
NOTIFYFLAG NOPARENT SYSLOG+WALL+EXEC ⚙️ Скрипт действий:
# /etc/nut/cmd.sh
#!/bin/sh
case $1 in powerout) logger "UPS on battery. Shutdown in 300 seconds...." ;; powerup) logger "UPS on line. Shutdown aborted." ;; shutdownnow) logger "UPS has been on battery for 300 seconds. Starting orderly shutdown" /usr/bin/sudo /sbin/shutdown -h +0 ;; shutdowncritical) logger "UPS battery level CRITICAL. Shutting down NOW!!!!" /usr/bin/sudo /sbin/shutdown -h +0 ;; *) logger "Unrecognized command: $1" ;;
esac 🔐 Пользователи (на удалённом сервере):
# /etc/nut/upsd.users
[upsmon]
password = xxx
actions = SET FSD
instcmds = ALL
upsmon master 💾 Сохранил здесь, чтобы не забыть. Работает стабильно. Проверено отключением света 🙂