Ippon PowerMaster External Command Script
Скрипт для программы PowerMaster+ для автоматического удалённого выключения компьютеров по событиям ИБП Ippon.
Назначение
Этот скрипт интегрируется с программой PowerMaster+ и выполняет следующие задачи:
- При наступлении события ИБП (например, переход на батарею, критический разряд) отправляет команды на удалённое выключение серверов по протоколу SSH
- Поддерживает два сервера (SERVER1 и SERVER2), адреса которых настраиваются в скрипте
- Ведёт детальный журнал всех операций в файл
C:\UPS_Logs\events.log
Как это работает
Скрипт обрабатывает события PowerMaster+ на двух этапах:
-
OCCUR — когда событие происходит:
- Записывает параметры события в лог (тип события, условие)
- Проверяет наличие ssh.exe в системе
- Отправляет команду
sudo /usr/bin/systemctl poweroffна оба сервера - Фиксирует коды завершения команд
-
FINISH — когда событие завершается:
- Записывает сообщение о завершении события в лог
Настройка
Перед использованием отредактируйте следующие параметры в default.cmd:
SSH_USER— имя пользователя SSH на удалённых серверах (по умолчанию:ups_shutdown)SERVER1,SERVER2— IP-адреса серверов для удалённого выключенияLOG— путь к файлу журнала (по умолчанию:C:\UPS_Logs\events.log)SSH_OPTS— дополнительные параметры SSH (таймауты, режим batch и т.д.)
Добавление дополнительных серверов
Чтобы добавить больше серверов для выключения, выполните следующие шаги:
-
Добавьте новую переменную с IP-адресом сервера после строки с
SERVER2:set "SERVER3=192.168.137.8" set "SERVER4=192.168.137.9" -
В секции
:doEventOccurCommandдобавьте блоки кода для каждого нового сервера после блока SERVER2:echo [%date% %time%] Sending poweroff to %SERVER3%... >> "%LOG%" "%SSH_EXE%" %SSH_OPTS% %SSH_USER%@%SERVER3% "sudo /usr/bin/systemctl poweroff" >> "%LOG%" 2>&1 echo [EXIT3]=%ERRORLEVEL% >> "%LOG%" echo [%date% %time%] Sending poweroff to %SERVER4%... >> "%LOG%" "%SSH_EXE%" %SSH_OPTS% %SSH_USER%@%SERVER4% "sudo /usr/bin/systemctl poweroff" >> "%LOG%" 2>&1 echo [EXIT4]=%ERRORLEVEL% >> "%LOG%" -
При необходимости измените значение в строке “Поддерживает два сервера” в секции “Назначение” на актуальное количество
Требования
- Windows с установленным OpenSSH (обычно входит в состав современных версий Windows)
- На удалённых серверах должен быть настроен SSH-доступ без пароля (авторизация по ключам) для пользователя, указанного в
SSH_USER - Пользователь на удалённых серверах должен иметь права sudo для выполнения
systemctl poweroff - Директория для лог-файла должна существовать и быть доступной для записи учётной записи SYSTEM (под которой запускается PowerMaster+)
Интеграция с PowerMaster+
- Скопируйте файл
default.cmdв директорию внешних команд PowerMaster+ - Настройте в PowerMaster+ выполнение этого скрипта при нужных событиях ИБП
- Убедитесь, что служба PowerMaster+ запущена от имени SYSTEM или имеет права на запись в лог-файл
Логирование
Все действия скрипта записываются в файл, указанный в переменной LOG. Лог содержит:
- Метки времени
- Параметры событий
- Пути к исполняемым файлам
- Результаты выполнения команд SSH
- Коды возврата