Как передавать файлы на сервер и с сервера с помощью команды Curl

12 set 2022 4 min di lettura
Как передавать файлы на сервер и с сервера с помощью команды Curl
Indice dei contenuti

Введение

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

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

Установить завиток

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

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

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

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

sudo apt update
sudo apt install curl

Установите Curl на CentOS и Fedora.

sudo yum install 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)

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

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

curl -I --http2 https://www.ubuntu.com/

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

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

curl -I --http2 -s https://noviello.it/| 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.

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

curl google.com

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

curl -L google.com

Изменить пользовательский агент

Иногда при загрузке файла удаленный сервер может быть настроен на блокировку 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

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

Передача файлов через 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- файл jdk-10.0.2_linux-x64_bin.rpm Oracle Java JDK, вам нужно передать файл 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.

Support us with a

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.