Скрипты

ℹ️ О разделе

Раздел Скрипты - это центральная библиотека скриптов INFRAX. Здесь можно создавать, редактировать, загружать, скачивать и удалять скрипты. Та же библиотека используется в окне Выполнить скрипт, в планировщике задач и в других автоматизациях.

Обзор

Страница Скрипты показывает библиотеку в виде таблицы с двумя колонками: Название и Расширение. Список сортируется по названию, а фильтры работают по названию и расширению.

Что умеет страница

  • Кнопка Добавить скрипт открывает редактор для создания нового скрипта.
  • Клик по строке открывает уже существующий скрипт в редакторе.
  • Заголовок и расширение помогают быстро найти нужный файл в большой библиотеке.
  • Окно выбора скрипта в других разделах использует тот же список.
💡 Практика

Если скрипт нужен для запуска из нескольких мест, храните его в этой библиотеке один раз. Потом его можно выбирать в Выполнить скрипт, в задаче Cron и в других связанных формах.

Управление скриптами

Доступ к библиотеке

Откройте раздел через меню:

Администрирование → Автоматизации → Скрипты

Создание и редактирование

  1. Нажмите Добавить скрипт или откройте существующую запись в таблице.
  2. Укажите название. Если оставить поле пустым, название может быть взято из имени файла.
  3. Выберите Тип файла: PowerShell, Batch или Bash.
  4. Введите код вручную или загрузите файл в редактор.
  5. Нажмите Сохранить.
ℹ️ Загрузка файла

Поле загрузки принимает .ps1, .bat, .cmd и .sh. При загрузке расширение автоматически определяет язык редактора: .ps1 - PowerShell, .bat и .cmd - Batch, .sh - Bash.

Кнопки редактора

  • Скачать файл - сохраняет текущий код с выбранным расширением.
  • Удалить - удаляет скрипт.
  • Параметры скрипта - задают значения, которые Cron и другие сценарии запуска передают в скрипт позиционными аргументами командной строки в указанном порядке.
⚠️ Связанные задания

Если скрипт используется в периодических заданиях, перед удалением показывается список связанных задач. При подтверждении удаляются и эти задачи, и сам скрипт.

Типы файлов

В редакторе доступны три рабочих типа файлов, и именно они показываются в выпадающем списке Тип файла.

PowerShell (.ps1)

  • Подходит для автоматизации на Windows.
  • В UI отображается как PowerShell.
  • При выборе этого типа файл скачивается с расширением .ps1.

Batch (.bat, .cmd)

  • Используется для простых командных файлов Windows.
  • В UI отображается как Batch.
  • .cmd при загрузке тоже распознается как Batch.

Bash (.sh)

  • Подходит для Linux-скриптов.
  • В UI отображается как Bash.
  • Если в начале файла не указан командный интерпретатор, система автоматически добавляет строку #!/bin/bash.
ℹ️ Автовыбор языка

При открытии сохраненного скрипта редактор пытается определить язык по имени файла, а при сохранении использует текущий выбранный тип файла.

Выполнение

Скрипты запускаются не из самой таблицы, а из других экранов приложения. Самый частый путь - кнопка Выполнить скрипт в панели действий узлов.

Где доступен запуск

  • Панель действий узлов - кнопка Выполнить скрипт или пункт меню с тем же названием.
  • Выбранные узлы - скрипт запускается только на тех узлах, для которых у пользователя есть соответствующее разрешение.
  • Планировщик заданий - скрипт можно использовать как периодическое задание.
✅ Что происходит при запуске

Запрос на выполнение ставится в очередь как фоновая задача. Это позволяет запускать скрипты на большом количестве узлов без блокировки интерфейса.

Сколько может длиться скрипт

  • Запуск вручную и по расписанию - результат ожидается до 30 минут. Пока скрипт работает, INFRAX периодически спрашивает агент, закончилась ли работа, поэтому кратковременный обрыв связи скрипт не прерывает.
  • Остановка вручную - кнопка Прервать в окне хода выполнения задания просит агент остановить скрипт на узле.
  • Узлы со старым агентом - предел 2 минуты: сообщать о ходе выполнения такой агент не умеет. Обновите агент на узле.
⚠️ Долгие операции

Скрипт, который не закончился за 30 минут, останавливается, а в истории задания остаётся запись о том, что время выполнения истекло. Обслуживание, которое заведомо идёт дольше, разбивайте на части или запускайте средствами самого узла.

Результаты

Результаты выполнения доступны в Истории заданий. В карточке задания можно просмотреть общий результат скрипта и отдельный вывод для каждого узла.

Что видно в результате

  • Вывод - stdout или очищенный текст ответа.
  • Состояние - успешное выполнение или ошибка.
  • Код завершения - exit code на узле.
  • Код ответа HTTP - если результат пришел через HTTP.
  • Сообщение и stderr - дополнительные детали ошибки.
ℹ️ Просмотр по узлам

Если задача выполнялась на нескольких узлах, в окне результатов можно переключаться между ними и смотреть вывод отдельно для каждого узла.

🔔 Уведомление о результате

Когда выполнение скрипта завершается, его инициатор получает встроенное уведомление (колокольчик в шапке) со статистикой по узлам. Если скрипт отработал везде, приходит уведомление Скрипт выполнен с числом узлов. Если часть узлов завершилась с ошибкой — Скрипт выполнен с ошибками с указанием, на скольких из скольких узлов произошел сбой. Ссылка из уведомления ведет в Историю заданий, где можно посмотреть вывод по каждому узлу.

Планировщик

В окне Новое задание можно выбрать скрипт, узлы сети и, если нужно, параметры запуска. Для одноразовых задач доступна опция Удалить задание после выполнения.

Поля скрипта в Cron

  • Скрипт - выбор из библиотеки.
  • Узлы сети - на каких узлах выполняется задача.
  • Параметры скрипта - отображаются, если у выбранного скрипта они заданы; значения передаются позиционными аргументами ($1, $2 в Bash, %1, %2 в Batch, $args[0] или позиционный блок param() в PowerShell).

Инциденты

  • Можно создать инцидент, если скрипт не удалось выполнить или ответа не было.
  • Можно создать инцидент по совпадению или несовпадению регулярного выражения в выводе.
  • Можно автоматически закрывать инцидент после восстановления.
  • Для инцидента можно выбрать отдельную услугу.
💡 Запуск с параметрами

Если у пользовательского задания есть параметры, диалог запуска попросит ввести значения перед стартом задачи. Значения передаются в скрипт позиционными аргументами командной строки в порядке параметров. Системные задания с параметрами не запускаются.

Рекомендации

Именование

  • Используйте понятные названия, которые сразу описывают назначение скрипта.
  • По возможности указывайте ОС или сценарий использования в названии.

Содержимое

  • Держите код компактным и добавляйте комментарии там, где логика неочевидна.
  • Опишите параметры в самой записи скрипта и читайте их из позиционных аргументов в том же порядке.
  • Не храните секреты прямо в тексте скрипта.

Эксплуатация

  • Проверяйте новые скрипты на тестовых узлах.
  • Удаляйте устаревшие записи и связанные задания, когда они больше не нужны.
  • Группируйте библиотеку по назначению: обслуживание, контроль, отчеты, аварийные действия.