Blayd — автоматизация запуска команд через YAML | SecureFlow

Blayd — автоматизация запуска команд через YAML

Постер статьи

Содержание

Blayd — это лёгкая и удобная утилита для запуска последовательностей команд, описанных в формате YAML. Этот инструмент позволяет автоматизировать сложные задачи через читаемые и легко поддерживаемые пайплайны без необходимости писать громоздкие bash-скрипты.

Почему стоит использовать Blayd вместо обычных скриптов?

Традиционные bash-скрипты быстро превращаются в сложный и запутанный код. Отлаживать и поддерживать их сложно, особенно при масштабировании задач.

Blayd решает эти проблемы:

  • Читабельность. YAML-формат легко воспринимается даже новичками.
  • Гибкость. Переменные, импорт и экспорт позволяют строить сложные сценарии.
  • Удобство. Структурированное описание шагов избавляет от ручного копирования вывода.
  • Портативность. Pipelines можно легко переносить и делиться ими.

Установка Blayd: быстро и просто

Если у вас установлен Go, установка занимает пару секунд:c

go install github.com/lo0pz7/blayd/cmd/blayd@latest

После этого команда blayd будет доступна в терминале. Проверьте, что всё работает:

blayd -h

Вы увидите список команд и опций.

Основы: создание pipeline.yaml

Структура файла

Pipeline — это YAML-файл с двумя основными секциями:

  • vars — объявление переменных
  • steps — список шагов пайплайна

Переменные в Blayd

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

Пример:

vars:
  domain: example.com
  threads: 10

Для использования переменной в поле args или inputs пишите ${var.имя}.

Например:

args: ["-d", "${var.domain}"]

Шаги: что это и как работают

Каждый шаг — это либо выполнение команды с аргументами, либо особый шаг для объединения данных.

Пример обычного шага:

- name: Сбор поддоменов через subfinder
  command: subfinder
  args: ["-silent", "-d", "${var.domain}"]
  export: subfinder_output
  • name — название шага для вывода в консоль
  • command — команда для выполнения (должна быть установлена в системе)
  • args — массив аргументов, где можно использовать переменные
  • export — имя переменной для сохранения вывода шага

Как использовать вывод из предыдущих шагов?

Blayd поддерживает два способа вставить вывод из предыдущих шагов:

  1. import — указывает, что весь вывод сохраняемой переменной нужно подставить в качестве стандартного ввода текущей команды.
    - name: Проверка живых поддоменов
      command: httpx
      args: ["-silent", "-threads", "${var.threads}"]
      import: subfinder_output
      save: alive_subdomains.txt
    
  2. ${output.имя} — переменная, которую можно использовать внутри args или в inputs для передачи вывода как строки или списка.

Шаг merge — объединение выводов и удаление дублей

Для объединения нескольких выводов из разных шагов и удаления повторяющихся строк используется специальный шаг с merge:

- name: Объединение поддоменов
  merge:
    inputs: ["${output.subfinder_output}", "${output.assetfinder_output}"]
    unique: true
  export: all_subdomains
  save: all_subdomains.txt
  • inputs — список переменных с выводами, которые нужно объединить
  • unique: true — удаляет дубли
  • export и save — сохраняет результат объединения

Сохранение вывода в файлы: как и куда?

  • save в шаге — сохраняет вывод конкретного шага в указанный файл.
  • save вне шагов (на верхнем уровне YAML) — сохраняет вывод всех шагов в один общий файл.

Пример сохранения всего вывода в один файл:

save: full_output.txt

Пример полного pipeline.yaml с объяснениями

save: full_pipeline_output.txt

vars:
  domain: example.com
  threads: 10

steps:
  - name: Сбор поддоменов через subfinder
    command: subfinder
    args: ["-silent", "-d", "${var.domain}"]
    export: subfinder_output

  - name: Сбор поддоменов через assetfinder
    command: assetfinder
    args: ["-subs-only", "${var.domain}"]
    export: assetfinder_output

  - name: Объединение и удаление дублей
    merge:
      inputs: ["${output.subfinder_output}", "${output.assetfinder_output}"]
      unique: true
    export: all_subdomains
    save: all_subdomains.txt

  - name: Поиск живых поддоменов через httpx
    command: httpx
    args: ["-silent", "-threads", "${var.threads}"]
    import: all_subdomains
    save: alive_subdomains.txt

Как запустить пайплайн?

Выполните команду:

blayd pipeline.yaml

Blayd последовательно выполнит все шаги, передаст выводы между ними, сохранит результаты и выведет статус каждого шага.

Советы по использованию Blayd

  • Всегда используйте понятные имена для переменных и шагов.
  • Используйте export и import для передачи данных между командами.
  • Применяйте merge для объединения результатов с удалением дубликатов.
  • Используйте верхнеуровневый save для сохранения полного вывода пайплайна.

Заключение

Blayd — это современный и простой инструмент, который поможет автоматизировать запуск сложных цепочек команд в удобном YAML-формате. Он идеально подойдёт системным администраторам, DevOps-инженерам и багхантером, которым нужно быстро и наглядно создавать гибкие пайплайны.

Если вы устали от громоздких скриптов и хотите повысить эффективность — попробуйте Blayd!