В Linux команда curl — это... Универсальный инструмент для передачи данных между серверами с использованием URL-адресов. Он поддерживает такие протоколы, как HTTP, HTTPS, FTP и другие. С помощью curl вы можете загружать файлы, тестировать API, отправлять заголовки, проходить аутентификацию, следовать перенаправлениям и автоматизировать сетевые задачи непосредственно из терминала с помощью удобных для скриптов опций.
Если вы работаете с серверами LinuxДля работы с веб-хостингом или API изучение команды curl в Linux имеет важное значение. Она быстрая, позволяет создавать скрипты и идеально подходит для устранения неполадок на веб-сайтах, проверки SSL и взаимодействия с REST-конечными точками. В этом руководстве вы узнаете, что такое curl, как его установить, и увидите реальные примеры использования curl, которые ежедневно применяют системные администраторы и разработчики.
Что такое команда curl в Linux?
curl (клиентский URL) — это утилита командной строки, построенная на основе библиотеки libcurl, которая передает данные с использованием URL-адресов. Она поддерживает HTTP/S, FTP/S, SFTP, SCP, SMTP, IMAP и другие протоколы.
В отличие от браузеров, curl работает в неинтерактивном режиме, что делает его идеальным для автоматизации и тестирования API. Конвейеры CI / CDа также диагностика сервера. Она доступна по умолчанию в большинстве дистрибутивов Linux.
Как установить curl в Linux
В большинстве дистрибутивов Linux есть curl. Сначала проверьте свою версию:
curl --version
Если он отсутствует, установите его, используя свой пакет. manager:
- Убунту/Дебиан:
sudo apt update && sudo apt install curl - RHEL/CentOS/Rocky/Alma:
sudo dnf install curlorsudo yuminstall curl - Fedora:
sudo dnf install curl - Arch:
sudo pacman -S curl - Альпийский:
sudo apk add curl
Совет: На серверах с минимальным набором ресурсов рекомендуется установить ca-certificates чтобы избежать ошибок SSL при использовании URL-адресов HTTPS.
Основной синтаксис curl и распространенные параметры
Общий синтаксис:
curl [options] <URL>
Полезные варианты завивки (запомните их в первую очередь):
-I(или--head): Получать только HTTP-заголовки.-L: Следуйте перенаправлениям.-o file: Сохранить в файл (с пользовательским именем).-O: Сохраните файл, используя его удаленное имя.-sи-S: Перейти в бесшумный режим и отобразить ошибки.-v/-vv: Многословный / чрезмерно многословный.-X: Укажите метод HTTP (GET, POST, PUT, DELETE).-H: Добавить пользовательский заголовок.--data/--data-raw/--data-binary: Отправить данные тела сообщения.-u: Базовая аутентификация (user:pass).--http2: Принудительное использование HTTP/2.--compressed: Запросить сжатый ответ.--retry: Повторите попытку при кратковременных сбоях.--max-time: Установите максимальное общее время для передачи.
Основные примеры завивки волос (для начинающих и среднего уровня)
1) Простой GET-запрос
curl https://example.com
Эта команда выводит HTML-содержимое в терминал.
2) Переходить по переадресациям
curl -L http://example.com
Используйте -L, когда сайты перенаправляют с HTTP к HTTPS или к каноническим URL-адресам.
3) Скачайте файл (сохраните его под тем же именем).
curl -O https://example.com/file.zip
Используйте заглавные буквы -O Чтобы сохранить имя файла на сервере. Или укажите своё собственное:
curl -o backup.zip https://example.com/file.zip
4) Возобновить прерванную загрузку
curl -C - -O https://example.com/large.iso
-C - Загрузка продолжается с того места, где остановилась предыдущая.
5) Отображать только заголовки ответа
curl -I https://example.com
Полезно для быстрой проверки HTTP-статуса, заголовков кэша и типа сервера.
6) Включите подробную информацию о запросе и ответе (отладка).
curl -v https://example.com
Используйте -v or -vv для более глубокого устранения неполадок, включая согласование SSL/TLS.
7) Отправить пользовательский заголовок
curl -H "Accept: application/json" https://api.example.com/v1/status
Можно добавить несколько заголовков с помощью нескольких способов. -H флаги. Это распространенная практика для REST API.
curl для API: JSON, POST, PUT, DELETE
Отправьте JSON в POST-запросе.
curl -X POST https://api.example.com/v1/users \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <TOKEN>" \
--data '{"name":"Alice","email":"alice@example.com"}'
Используйте --data or --data-raw для JSON-данных. Всегда устанавливайте. Content-Type: application/json и заголовки аутентификации, если это необходимо.
Примеры операций PUT (обновление) и DELETE
# Update a user
curl -X PUT https://api.example.com/v1/users/123 \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <TOKEN>" \
--data '{"email":"new@example.com"}'
# Delete a user
curl -X DELETE https://api.example.com/v1/users/123 \
-H "Authorization: Bearer <TOKEN>"
Загрузка данных формы и файлов (многокомпонентная загрузка)
# Post form fields
curl -X POST https://example.com/form \
-H "Content-Type: application/x-www-form-urlencoded" \
--data "name=Alice&email=alice@example.com"
# Upload a file
curl -X POST https://api.example.com/v1/upload \
-H "Authorization: Bearer <TOKEN>" \
-F "file=@/path/to/report.pdf" \
-F "meta=quarterly"
Используйте -F Для загрузки многокомпонентных форм curl автоматически устанавливает правильные заголовки-разделители.
Аутентификация с помощью curl (базовая, Bearer, Cookies)
Базовая HTTP-аутентификация
curl -u "username:password" https://secure.example.com/endpoint
В целях безопасности лучше использовать токены или переменные окружения, а не вводить пароли напрямую. Также можно использовать .netrc файл с соответствующими правами доступа для хранения учетных данных.
Токены Bearer (ключи API)
curl -H "Authorization: Bearer $API_TOKEN" https://api.example.com/v1/me
сессия печенье
# Save cookies during login
curl -c cookies.txt -X POST https://example.com/login \
-d "user=alice&pass=secret"
# Reuse cookies for subsequent requests
curl -b cookies.txt https://example.com/dashboard
SSL/TLS, сертификаты и прокси-серверы
curl по умолчанию выполняет проверку сертификатов при использовании HTTPS. Если вы видите ошибки SSL, убедитесь, что установлены системные пакеты центров сертификации, или укажите собственный центр сертификации.
# Use a custom CA certificate
curl --cacert /etc/ssl/certs/custom-ca.crt https://secure.example.com
# Client certificate (mutual TLS)
curl --cert client.crt --key client.key https://mtls.example.com
# Temporarily ignore certificate errors (not recommended)
curl -k https://self-signed.local
Поддержка прокси-сервера встроена:
# HTTP proxy
curl -x http://proxy.local:3128 https://example.com
# SOCKS5 proxy
curl -x socks5h://user:pass@proxy.local:1080 https://example.com
-k (--insecure) предназначено только для временного тестирования. В производственной среде следует исправлять цепочки доверия, а не обходить проверку.
Расширенные советы по использованию curl для DevOps и хостинга.
Установка тайм-аутов и количества повторных попыток (устойчивые скрипты)
# Fail fast after 5 seconds total; retry up to 3 times on transient errors
curl --max-time 5 --retry 3 --retry-delay 2 --retry-connrefused https://api.example.com/health
Получайте HTTP-статус и тело отдельно.
status=$(curl -s -o /tmp/body.txt -w "%{http_code}" https://example.com/health)
echo "Status: $status"
cat /tmp/body.txt
-w Опция (write-out) предоставляет доступ к полезным метрикам, таким как время, размер и протокол.
Мера производительности
curl -o /dev/null -s -w "dns:%{time_namelookup} connect:%{time_connect} ttfb:%{time_starttransfer} total:%{time_total}\n" https://example.com
Загрузить несколько файлов
# Brace expansion (if server path structure matches)
curl -O https://example.com/logs/2024-12-{01..31}.log
Для обработки больших объемов данных или параллельной обработки рассмотрите возможность использования GNU Parallel или xargs с curl.
Устранение ошибок curl
- Проблемы с подключением: Используйте
-vи проверьте переменные DNS, брандмауэра и прокси-сервера (http_proxy,https_proxy). - Ошибки SSL: Установите
ca-certificatesпроверьте системное время или используйте--cacert. - Таймауты: Увеличим
--max-timeили установить--connect-timeout. - HTTP 4xx/5xx: Диагностика
-Iзаголовки, проверка аутентификации и полезной нагрузки, включение-v. - Ограничения по ставкам: Добавить откат с
--retryи соблюдать квоты API.
curl против wget: когда что использовать?
- завиток: Идеально подходит для API, пользовательских заголовков, аутентификации, детализированных протоколов и точного управления. Многофункциональный. запросить особенности.
- получить: Отлично подходит для рекурсивной загрузки веб-сайтов и зеркалирования. Мощный. скачать Особенности, упрощенные для массовой выборки данных.
- На серверах многие администраторы устанавливают обе программы. Для тестирования и автоматизации REST-запросов обычно первым выбором является curl.
Рекомендации по обеспечению безопасности при использовании curl
- Избегайте сохранения секретов в истории командной оболочки; используйте переменные окружения или
.netrc(ограничить права доступа до 600). - Не полагайся на
-kВ рабочей среде: исправить цепочки доверия сертификатов. - Проверяйте входные данные, если создаете скрипты, которые интерполируют URL-адреса или заголовки.
- Используйте токены API с минимальными привилегиями и регулярно их обновляйте.
- Маскировать токены в логах CI и отдавать предпочтение
--silentс явной обработкой ошибок.
Примеры реального использования серверов Linux
- Медицинские осмотры: запрос
/healthконечные точки в модулях cron или systemd. - Хуки развертывания: Уведомлять веб-хуки (Slack, Git, CI) после релизов.
- Проверка резервной копии: После загрузки проверьте URL-адреса объектного хранилища или CDN.
- Проверка SSL: Перед запуском в эксплуатацию подтвердите цепочки сертификатов и срок их действия на тестовой среде.
- Тестирование контента: Получите заголовки для подтверждения состояния кэша (например,
Cache-Control,ETag).
At YouStable, Наши manageИнженеры хостинга ежедневно используют curl для проверки доступности, подтверждения HTTPS на новых доменах и проверки интеграции API. Если вы предпочитаете сосредоточиться на своем приложении, пока мы занимаемся диагностикой и производительностью на уровне сервера, наши managed планы могут помочь.
Часто задаваемые вопросы (FAQ)
Для чего используется curl в Linux?
curl используется для передачи данных по URL-адресам. Типичные задачи включают загрузку файлов, тестирование и отладку HTTP/HTTPS-запросов, отправку заголовков, аутентификацию с API, загрузку файлов и автоматизацию сетевых задач в скриптах или конвейерах CI/CD.
Как отправить заголовки с помощью curl?
Использовать -H флаг. Пример: curl -H "Accept: application/json" -H "Authorization: Bearer <TOKEN>" https://api.example.com/v1/dataДобавьте один -H заголовком.
Как отправить POST-запрос с помощью curl?
Используйте -X POST с --data or -F Для форм. Для JSON: curl -X POST -H "Content-Type: application/json" --data '{"id":1}' https://api.example.comДля загрузки файлов: curl -F "file=@/path/to/file.txt" https://api.example.com/upload.
Как мне отслеживать перенаправления в curl?
Использовать -L опции: curl -L http://example.comЭто полезно, когда сайт перенаправляет с HTTP на HTTPS или использует канонические правила перенаправления.
Как исправить ошибки SSL-сертификата при использовании curl?
Установите или обновите ca-certificatesУбедитесь, что системное время установлено правильно, или укажите пользовательский центр сертификации. --cacert, избежать -k за исключением временного тестирования; вместо этого исправьте цепочку сертификатов для обеспечения безопасности на уровне, пригодном для использования в производственной среде.
Заключение
В Linux команда curl — это... Незаменимый инструмент для разработчиков, системных администраторов и владельцев сайтов. С помощью нескольких основных функций вы можете скачивать файлы, тестировать API и многое другое. manage заголовки и надежная автоматизация рабочих процессов. Сохраните приведенные выше примеры в закладках и интегрируйте curl в свой повседневный набор инструментов, чтобы ускорить диагностику и задачи развертывания.