Скрипты
Раздел Скрипты - это центральная библиотека скриптов INFRAX. Здесь можно создавать, редактировать, загружать, скачивать и удалять скрипты. Та же библиотека используется в окне Выполнить скрипт, в планировщике задач и в других автоматизациях.
Обзор
Страница Скрипты показывает библиотеку в виде таблицы с двумя колонками: Название и Расширение. Список сортируется по названию, а фильтры работают по названию и расширению.
Что умеет страница
- Кнопка Добавить скрипт открывает редактор для создания нового скрипта.
- Клик по строке открывает уже существующий скрипт в редакторе.
- Заголовок и расширение помогают быстро найти нужный файл в большой библиотеке.
- Окно выбора скрипта в других разделах использует тот же список.
Если скрипт нужен для запуска из нескольких мест, храните его в этой библиотеке один раз. Потом его можно выбирать в Выполнить скрипт, в задаче Cron и в других связанных формах.
Управление скриптами
Доступ к библиотеке
Откройте раздел через меню:
Администрирование → Автоматизации → Скрипты
Создание и редактирование
- Нажмите Добавить скрипт или откройте существующую запись в таблице.
- Укажите название. Если оставить поле пустым, название может быть взято из имени файла.
- Выберите Тип файла: PowerShell, Batch или Bash.
- Введите код вручную или загрузите файл в редактор.
- Нажмите Сохранить.
Поле загрузки принимает .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).
Инциденты
- Можно создать инцидент, если скрипт не удалось выполнить или ответа не было.
- Можно создать инцидент по совпадению или несовпадению регулярного выражения в выводе.
- Можно автоматически закрывать инцидент после восстановления.
- Для инцидента можно выбрать отдельную услугу.
Если у пользовательского задания есть параметры, диалог запуска попросит ввести значения перед стартом задачи. Значения передаются в скрипт позиционными аргументами командной строки в порядке параметров. Системные задания с параметрами не запускаются.
Рекомендации
Именование
- Используйте понятные названия, которые сразу описывают назначение скрипта.
- По возможности указывайте ОС или сценарий использования в названии.
Содержимое
- Держите код компактным и добавляйте комментарии там, где логика неочевидна.
- Опишите параметры в самой записи скрипта и читайте их из позиционных аргументов в том же порядке.
- Не храните секреты прямо в тексте скрипта.
Эксплуатация
- Проверяйте новые скрипты на тестовых узлах.
- Удаляйте устаревшие записи и связанные задания, когда они больше не нужны.
- Группируйте библиотеку по назначению: обслуживание, контроль, отчеты, аварийные действия.