Запрос 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=...— выбор только нужных колонок в выводе
Автоматизация: выгрузка доменов всех сайтов разом
Когда сайтов много, перебирать их вручную неудобно. Типовой подход — цикл в shell-скрипте: сначала получаем список сайтов в JSON, затем для каждого сайта запрашиваем домены и складываем результат в общий файл. Логика такого скрипта выглядит следующим образом.
for site in $(terminus site:list --format=list); do
terminus domain:list "${site}.live" --format=csv >> all-domains.csv
done
Этот пример — иллюстрация принципа, а не готовое универсальное решение. В реальном скрипте добавьте обработку ошибок (среда live есть не у всех сайтов), задержки между запросами и проверку кода возврата каждой команды. Перед запуском на боевом аккаунте протестируйте скрипт на одном-двух сайтах.
☑️ Проверка перед массовой выгрузкой доменов
Форматы вывода и обработка результатов
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.