Команда curl -X POST возвращает пустой ответ или ошибку connection refused — чаще всего причина в неверно указанном порте, отсутствующем заголовке Content-Type или в том, что сервер слушает только localhost, а запрос идёт на внешний адрес. Прежде чем переписывать скрипт, проверьте доступность сервиса простым curl -v http://адрес — флаг -v покажет, на каком этапе обрывается соединение.

Работа с HTTP из командной строки — базовый навык для администрирования серверов, отладки API и автоматизации. В этой статье разберём два главных инструмента — curl и wget, научимся отправлять GET- и POST-запросы, передавать заголовки и JSON, сохранять файлы и обрабатывать ответы в bash-скриптах.

Что такое HTTP-запрос и зачем он нужен в Bash

HTTP — протокол обмена данными между клиентом и сервером. Каждый запрос состоит из метода (GET, POST, PUT, DELETE и других), адреса, заголовков и, при необходимости, тела. Из терминала такие запросы используют для проверки доступности сайтов, тестирования REST API, скачивания файлов и интеграции скриптов с внешними сервисами.

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

Установка и проверка curl и wget

В большинстве дистрибутивов Linux утилита curl предустановлена. Проверить её наличие можно командой curl --version. Если утилита отсутствует, установите её через пакетный менеджер вашей системы.

sudo apt install curl wget # Debian/Ubuntu

sudo dnf install curl wget # Fedora/RHEL

sudo pacman -S curl wget # Arch Linux

На macOS curl входит в базовую поставку системы, а wget обычно ставится через Homebrew. В Windows 10 и новее curl также доступен из коробки в PowerShell и CMD.

💡

Проверяйте версию curl командой curl --version: в старых выпусках могут отсутствовать некоторые флаги, например --json появился лишь в свежих версиях.