Команда Curl в Linux с примерами

Примеры команд Linux Curl

curl — это утилита командной строки для передачи данных с сервера или на сервер, работающая без взаимодействия с пользователем. С помощью curl вы можете загружать и выгружать данные, используя один из поддерживаемых протоколов, включая HTTP, HTTPS, SCP , SFTP и FTP . curl предоставляет ряд возможностей, позволяющих возобновлять передачу данных, ограничивать пропускную способность, поддерживать прокси-серверы, аутентификацию пользователей и многое другое.

В этом уроке мы покажем вам, как использовать инструмент завивки, с помощью практических примеров и подробных объяснений наиболее распространенных вариантов завивки.

Установка Curl

Пакет curl сегодня предустановлен в большинстве дистрибутивов Linux.

Чтобы проверить, установлен ли пакет Curl в вашей системе, откройте консоль, введите curl и нажмите Enter. Если curl установлен, система выведет curl: try 'curl --help' or 'curl --manual' for more information . В противном случае вы увидите сообщение «curl command not found» ( curl command not found .

Если curl не установлен, вы можете легко установить его с помощью менеджера пакетов вашего дистрибутива.

Установка Curl в Ubuntu и Debian

 sudo apt update sudo apt install curl

Установка Curl на CentOS и Fedora

 sudo yum install curl

Как использовать Curl

Синтаксис команды curl следующий:

 curl [ options ] [ URL... ]

В простейшем виде, при вызове без каких-либо параметров, curl выводит указанный ресурс на стандартный вывод.

Например, чтобы получить домашнюю страницу example.com вам нужно выполнить:

 curl example.com

Команда выведет исходный код домашней страницы example.com в окно терминала.

Если протокол не указан, curl попытается угадать, какой протокол вы хотите использовать, и по умолчанию будет использоваться HTTP .

Сохранить вывод в файл

Чтобы сохранить результат команды curl , используйте опцию -o или -O .

Строчная -o сохраняет файл с предопределенным именем, которое в примере ниже — vue-v2.6.10.js :

 curl -o vue-v2.6.10.js https://cdn.jsdelivr.net/npm/vue/dist/vue.js

Прописная буква -O сохраняет файл под исходным именем:

 curl -O https://cdn.jsdelivr.net/npm/vue/dist/vue.js

Загрузить несколько файлов

Чтобы загрузить несколько файлов одновременно, используйте несколько опций -O , а затем URL-адрес файла, который вы хотите загрузить.

В следующем примере мы загружаем файлы ISO Arch Linux и Debian:

 curl -O http://mirrors.edge.kernel.org/archlinux/iso/2018.06.01/archlinux-2018.06.01-x86_64.iso  -O https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-9.4.0-amd64-netinst.iso

Возобновить загрузку

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

Например, если вы загружаете файл ISO Ubuntu 18.04 с помощью следующей команды:

 curl -O http://releases.ubuntu.com/18.04/ubuntu-18.04-live-server-amd64.iso

и внезапно ваше соединение прервется, вы можете возобновить загрузку с помощью:

 curl -C - -O http://releases.ubuntu.com/18.04/ubuntu-18.04-live-server-amd64.iso

Получить HTTP-заголовки URL-адреса

HTTP-заголовки представляют собой пары «ключ-значение», разделённые двоеточиями, содержащие такую информацию, как пользовательский агент, тип контента и кодировка. Заголовки передаются между клиентом и сервером вместе с запросом или ответом.

Используйте опцию -I , чтобы получить только HTTP-заголовки указанного ресурса:

 curl -I --http2 https://www.ubuntu.com/ 
curl получает http-заголовки

Проверьте, поддерживает ли веб-сайт HTTP/2

Чтобы проверить, поддерживает ли конкретный URL новый протокол HTTP/2 , извлеките заголовки HTTP с помощью -I вместе с опцией --http2 :

 curl -I --http2 -s https://linuxgazette.ru/ | grep HTTP

Опция -s заставляет curl работать в тихом режиме, скрывая индикатор прогресса и сообщения об ошибках.

Если удаленный сервер поддерживает HTTP/2, curl выведет HTTP/2.0 200 :

 HTTP/2 200

В противном случае ответ будет HTTP/1.1 200 :

 HTTP/1.1 200 OK

Если у вас версия curl 7.47.0 или более новая, вам не нужно использовать опцию --http2 , поскольку HTTP/2 включен по умолчанию для всех HTTPS-подключений.

Следуйте перенаправлениям

По умолчанию curl не отслеживает заголовки HTTP Location.

Если вы попытаетесь получить версию google.com без www, вы заметите, что вместо получения исходного кода страницы вы будете перенаправлены на версию с www:

 curl google.com 
curl follow перенаправления

Опция -L указывает curl следовать любому перенаправлению, пока не будет достигнут конечный пункт назначения:

 curl -L google.com

Изменить User-Agent

Иногда при загрузке файла удаленный сервер может быть настроен на блокировку Curl User-Agent или на возврат различного содержимого в зависимости от устройства и браузера посетителя.

В подобных ситуациях для эмуляции другого браузера используйте опцию -A .

Например, для эмуляции Firefox 60 можно использовать:

 curl -A "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0" https://getfedora.org/

Укажите максимальную скорость передачи

Опция --limit-rate позволяет ограничить скорость передачи данных. Значение может быть выражено в байтах, килобайтах (с суффиксом k , мегабайтах (с суффиксом m ) и гигабайтах (с суффиксом g .

В следующем примере curl загрузит двоичный файл Go и ограничит скорость загрузки до 1 МБ:

 curl --limit-rate 1m -O https://dl.google.com/go/go1.10.3.linux-amd64.tar.gz

Эта опция полезна для предотвращения использования curl всей доступной полосы пропускания.

Передача файлов по FTP

Чтобы получить доступ к защищенному FTP-серверу с помощью curl , используйте опцию -u и укажите имя пользователя и пароль, как показано ниже:

 curl -u FTP_USERNAME:FTP_PASSWORD ftp://ftp.example.com/

После входа в систему команда выводит список всех файлов и каталогов в домашнем каталоге пользователя.

Вы можете загрузить один файл с FTP-сервера, используя следующий синтаксис:

 curl -u FTP_USERNAME:FTP_PASSWORD ftp://ftp.example.com/file.tar.gz

Чтобы загрузить файл на FTP-сервер, используйте опцию -T а затем имя файла, который вы хотите загрузить:

 curl -T newfile.tar.gz -u FTP_USERNAME:FTP_PASSWORD ftp://ftp.example.com/

Отправить куки

Иногда вам может потребоваться сделать HTTP-запрос с определенными cookie-файлами для доступа к удаленному ресурсу или для отладки проблемы.

По умолчанию при запросе ресурса с помощью curl никакие файлы cookie не отправляются и не сохраняются.

Чтобы отправить файлы cookie на сервер, используйте параметр -b , за которым укажите имя файла, содержащего файлы cookie, или строку.

Например, чтобы загрузить rpm-файл Oracle Java JDK jdk-10.0.2_linux-x64_bin.rpm вам необходимо передать cookie-файл с именем oraclelicense со значением a :

 curl -L -b "oraclelicense=a" -O http://download.oracle.com/otn-pub/java/jdk/10.0.2+13/19aef61b38124481863b1413dce1855f/jdk-10.0.2_linux-x64_bin.rpm

Использование прокси

curl поддерживает различные типы прокси-серверов, включая HTTP, HTTPS и SOCKS. Для передачи данных через прокси-сервер используйте опцию -x ( --proxy ), а затем URL-адрес прокси-сервера.

Следующая команда загружает указанный ресурс, используя прокси-сервер на порту 192.168.44.1 8888 :

 curl -x 192.168.44.1:8888 http://linux.com/

Если прокси-сервер требует аутентификации, используйте опцию -U ( --proxy-user ), а затем имя пользователя и пароль, разделенные двоеточием ( user:password ):

 curl -U username:password -x 192.168.44.1:8888 http://linux.com/

Заключение

curl — это инструмент командной строки, позволяющий передавать данные с удалённого хоста или на него. Он полезен для устранения неполадок, загрузки файлов и многого другого.

Примеры, показанные в этом руководстве, просты, но демонстрируют наиболее используемые параметры curl и призваны помочь вам понять, как работает команда curl .

Более подробную информацию о curl можно найти на странице документации Curl .

Если у вас есть вопросы или пожелания, не стесняйтесь оставлять комментарии.

curl -терминал

Связанные руководства

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *