Terminus export hosts: экспорт данных о сайтах и доменах через Terminus CLI

Запрос terminus export hosts чаще всего возникает у разработчиков, которые работают с платформой Pantheon и пытаются выгрузить список доменов (hosts) своих сайтов через консольную утилиту Terminus — официальный CLI-инструмент этой хостинг-платформы. Прямой команды с таким названием в стандартной поставке Terminus нет, поэтому задача решается комбинацией существующих команд и обработкой их вывода.

Ниже разберём, что реально умеет Terminus, как получить и экспортировать данные о сайтах и привязанных доменах, какие форматы вывода доступны и какие ошибки встречаются при такой работе. Точный набор команд зависит от установленной версии утилиты, поэтому перед началом стоит проверить актуальный список команд в вашей копии.

Что такое Terminus и зачем нужен экспорт хостов

Terminus — это консольный клиент для управления сайтами на платформе Pantheon: создание сред, деплой, бэкапы, работа с доменами и многое другое выполняется командами из терминала, без захода в веб-панель. Он написан на PHP и распространяется как отдельный исполняемый файл или устанавливается через пакетные менеджеры.

Под «экспортом хостов» обычно понимают одну из трёх задач. Первая — получить список всех сайтов организации с их идентификаторами. Вторая — выгрузить привязанные к средам доменные имена, например для аудита DNS или миграции. Третья — сформировать файл в формате, пригодном для дальнейшей обработки скриптами, например CSV или JSON.

Подготовка: установка и авторизация

Прежде чем что-либо экспортировать, убедитесь, что утилита установлена и вы авторизованы. Проверка версии выполняется командой terminus --version. Авторизация происходит через machine token, который создаётся в личном кабинете Pantheon.

terminus auth:login --machine-token=ВАШ_ТОКЕН

После входа проверьте, что сессия активна, командой terminus auth:whoami. Если вместо имени пользователя вы видите ошибку авторизации, токен нужно пересоздать — срок его действия мог истечь или он был отозван в панели управления.

⚠️ Внимание: machine token даёт полный доступ к вашим сайтам от вашего имени. Не храните его в открытом виде в скриптах, попадающих в систему контроля версий, и не публикуйте вывод команд, где токен может отображаться.

Получение списка сайтов и доменов

Базовая команда для выгрузки перечня сайтов — terminus site:list. Она выводит таблицу с именами, идентификаторами и другими полями. Чтобы результат было удобно экспортировать, используйте флаг формата вывода.

terminus site:list --format=json > sites.json

Для получения доменов конкретной среды используется команда вида terminus domain:list <site>.<env>, где <site> — имя сайта, а <env> — среда (например, live или dev). Обратите внимание: точный синтаксис и доступные флаги зависят от версии Terminus, сверяйтесь со встроенной справкой terminus domain:list --help.

  • 📋 site:list — полный список сайтов, доступных вашему аккаунту
  • 🌐 domain:list — домены, привязанные к конкретной среде сайта
  • 📄 Флаги --format=json или --format=csv — машиночитаемый вывод для экспорта
  • 🔍 --fields=... — выбор только нужных колонок в выводе
📊 Для чего вам нужен экспорт хостов из Terminus?
Аудит доменов и DNS
Миграция сайтов
Автоматизация в CI/CD
Разовая выгрузка списка сайтов

Автоматизация: выгрузка доменов всех сайтов разом

Когда сайтов много, перебирать их вручную неудобно. Типовой подход — цикл в shell-скрипте: сначала получаем список сайтов в JSON, затем для каждого сайта запрашиваем домены и складываем результат в общий файл. Логика такого скрипта выглядит следующим образом.

for site in $(terminus site:list --format=list); do

terminus domain:list "${site}.live" --format=csv >> all-domains.csv

done

Этот пример — иллюстрация принципа, а не готовое универсальное решение. В реальном скрипте добавьте обработку ошибок (среда live есть не у всех сайтов), задержки между запросами и проверку кода возврата каждой команды. Перед запуском на боевом аккаунте протестируйте скрипт на одном-двух сайтах.

☑️ Проверка перед массовой выгрузкой доменов

Выполнено: 0 / 5

Форматы вывода и обработка результатов

Terminus поддерживает несколько форматов вывода, что упрощает интеграцию с другими инструментами. Выбор формата зависит от того, куда пойдут данные дальше.

ФорматФлагКогда использовать
tableпо умолчаниюПросмотр глазами в терминале
list--format=listПеребор значений в циклах скриптов
json--format=jsonОбработка через jq, Python, Node.js
csv--format=csvИмпорт в таблицы и Excel

Для фильтрации JSON-вывода удобен инструмент jq: например, можно оставить только имена сайтов или только primary-домены. Самая частая причина «пустого» экспорта — запрос доменов у среды, которой не существует у данного сайта, поэтому фильтруйте и проверяйте входные данные до цикла.

Типичные ошибки и их решение

При работе с экспортом через Terminus пользователи сталкиваются с несколькими повторяющимися проблемами. Разберём основные.

  • 🔑 Ошибка авторизации — токен истёк или отозван; создайте новый в панели Pantheon и выполните auth:login заново.
  • 📭 Пустой вывод domain:list — у сайта нет указанной среды или домены не привязаны; проверьте список сред командой terminus env:list <site>.
  • ⏱️ Таймауты при массовом обходе — добавьте паузы между запросами и повторные попытки при сетевых сбоях.
  • 🧩 Неизвестная команда или флаг — синтаксис менялся между версиями; сверьтесь с --help вашей установленной версии.
⚠️ Внимание: не запускайте массовые циклы по сотням сайтов без ограничения скорости — интенсивные запросы к API могут привести к временному ограничению доступа. Начинайте с малого пула сайтов и увеличивайте нагрузку постепенно.
Что делать, если нужен именно файл /etc/hosts

Иногда под «export hosts» понимают генерацию строк для локального файла /etc/hosts — например, чтобы направить домен на конкретный IP для тестирования. В этом случае данные о доменах берутся из domain:list, а IP-адреса — из DNS-записей или документации Pantheon по настройке DNS. Автоматически «правильный» IP Terminus не подставит: его нужно определить для каждой среды отдельно.

Когда Terminus не подходит: альтернативы

Если задача выходит за рамки возможностей CLI, есть запасные варианты. Веб-панель Pantheon позволяет просматривать домены каждой среды вручную — это подходит для разовых проверок без автоматизации. Для глубокой интеграции существует программный API платформы, к которому можно обращаться напрямую по HTTP, минуя Terminus.

Выбор инструмента зависит от масштаба: один сайт проще проверить в панели, десятки сайтов — выгрузить через Terminus, а постоянную синхронизацию данных с внутренними системами логичнее строить на прямых запросах к API. Учтите, что возможности API и лимиты запросов описаны в официальной документации платформы — сверяйтесь с ней при проектировании интеграции.

Часто задаваемые вопросы

Существует ли команда terminus export hosts?

Отдельной команды с таким названием в стандартной поставке Terminus нет. Экспорт данных о сайтах и доменах выполняется командами site:list и domain:list с флагами формата вывода и перенаправлением результата в файл.

В каком формате лучше выгружать список доменов?

Для дальнейшей обработки скриптами удобнее JSON, для открытия в Excel или Google Sheets — CSV. Оба формата поддерживаются флагом --format.

Почему domain:list возвращает пустой результат?

Возможные причины: у сайта нет запрошенной среды, к среде не привязаны домены, либо у вашего аккаунта нет доступа к этому сайту. Проверьте список сред командой env:list и права доступа в панели Pantheon.

Можно ли использовать Terminus в CI/CD-пайплайне?

Да, это распространённый сценарий. Авторизация выполняется через machine token, который передаётся из защищённых переменных окружения CI-системы. Не вшивайте токен в код репозитория.

Где найти актуальный список команд Terminus?

Выполните terminus list в терминале — утилита покажет все команды, доступные в установленной версии. Подробности по конкретной команде даёт флаг --help. Также существует официальная документация проекта Terminus.