README.md

Ippon PowerMaster External Command Script

Скрипт для программы PowerMaster+ для автоматического удалённого выключения компьютеров по событиям ИБП Ippon.

Назначение

Этот скрипт интегрируется с программой PowerMaster+ и выполняет следующие задачи:

  • При наступлении события ИБП (например, переход на батарею, критический разряд) отправляет команды на удалённое выключение серверов по протоколу SSH
  • Поддерживает два сервера (SERVER1 и SERVER2), адреса которых настраиваются в скрипте
  • Ведёт детальный журнал всех операций в файл C:\UPS_Logs\events.log

Как это работает

Скрипт обрабатывает события PowerMaster+ на двух этапах:

  1. OCCUR — когда событие происходит:

    • Записывает параметры события в лог (тип события, условие)
    • Проверяет наличие ssh.exe в системе
    • Отправляет команду sudo /usr/bin/systemctl poweroff на оба сервера
    • Фиксирует коды завершения команд
  2. FINISH — когда событие завершается:

    • Записывает сообщение о завершении события в лог

Настройка

Перед использованием отредактируйте следующие параметры в default.cmd:

  • SSH_USER — имя пользователя SSH на удалённых серверах (по умолчанию: ups_shutdown)
  • SERVER1, SERVER2 — IP-адреса серверов для удалённого выключения
  • LOG — путь к файлу журнала (по умолчанию: C:\UPS_Logs\events.log)
  • SSH_OPTS — дополнительные параметры SSH (таймауты, режим batch и т.д.)

Добавление дополнительных серверов

Чтобы добавить больше серверов для выключения, выполните следующие шаги:

  1. Добавьте новую переменную с IP-адресом сервера после строки с SERVER2:

    set "SERVER3=192.168.137.8"
    set "SERVER4=192.168.137.9"
    
  2. В секции :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%"
    
  3. При необходимости измените значение в строке “Поддерживает два сервера” в секции “Назначение” на актуальное количество

Требования

  • Windows с установленным OpenSSH (обычно входит в состав современных версий Windows)
  • На удалённых серверах должен быть настроен SSH-доступ без пароля (авторизация по ключам) для пользователя, указанного в SSH_USER
  • Пользователь на удалённых серверах должен иметь права sudo для выполнения systemctl poweroff
  • Директория для лог-файла должна существовать и быть доступной для записи учётной записи SYSTEM (под которой запускается PowerMaster+)

Интеграция с PowerMaster+

  1. Скопируйте файл default.cmd в директорию внешних команд PowerMaster+
  2. Настройте в PowerMaster+ выполнение этого скрипта при нужных событиях ИБП
  3. Убедитесь, что служба PowerMaster+ запущена от имени SYSTEM или имеет права на запись в лог-файл

Логирование

Все действия скрипта записываются в файл, указанный в переменной LOG. Лог содержит:

  • Метки времени
  • Параметры событий
  • Пути к исполняемым файлам
  • Результаты выполнения команд SSH
  • Коды возврата
Описание
Конвейеры
0 успешных
0 с ошибкой
Разработчики