Команда CURL в Linux: изучаем на примерах

Быть инженером по информационным технологиям включает в себя различные задачи, такие как проверка сетевого подключения, загрузка файлов или настройка аутентификации. Обычно для выполнения этих задач требуются различные инструменты. Но не в случае с cURL. Утилита cURL для Linux помогает с большинством вещей, которые нужны инженеру по информационным технологиям.

В этом руководстве вы узнаете о каждой возможности командной строки, которую предоставляет cURL.

Продолжайте читать и повышайте свои навыки с cURL!

Предварительные требования

В этом руководстве представлены пошаговые демонстрации. Чтобы следовать за ними, убедитесь, что у вас есть следующее:

  • Машина с Ubuntu – в этом руководстве используется Ubuntu 18.04 с установленным Apache.
  • A Windows XP+ PC – This tutorial uses Windows 10 Enterprise edition.
  • A user account on the remote Linux SSH host with sudo permissions.

Установка cURL для Linux (Ubuntu)

Как и любой другой инструмент, перед тем как воспользоваться cURL, вы должны установить его на свою машину. Вы можете установить cURL на любую операционную систему на базе *nix, но он наиболее популярен на Ubuntu.

cURL – это утилита командной строки, которая позволяет выполнять множество задач, в том числе:

  • Показать состояние различных сетевых конфигураций на компьютерах под управлением Windows или серверах с Linux
  • Передача данных на серверы или от серверов
  • Поддерживает несколько протоколов, таких как HTTP, FTP, IMAP, POP3, SCP и SFTP.

Чтобы установить cURL на вашем компьютере с Ubuntu:

1. Подключитесь к своему хосту Ubuntu с помощью вашего любимого SSH-клиента.

2. Выполните следующие команды, которые не выводят результат, но создают каталог с именем ~/install_curl_demo и переходят в этот каталог. Этот каталог будет содержать все ресурсы, которые вы создадите в этом руководстве.

mkdir ~/install_curl_demo
cd ~/install_curl_demo

3. Затем выполните команду apt update для обновления индекса пакетов вашей системы.

Эта команда гарантирует, что менеджер пакетов apt сможет найти правильный источник при загрузке зависимых пакетов.

sudo apt update 
Updating the Ubuntu machine with the latest packages

4. Теперь выполните команду apt install ниже, чтобы установить cURL на вашем компьютере.

sudo apt install curl
Installing cURL on the Ubuntu machine

5. Наконец, выполните команду ниже, чтобы проверить установленную версию cURL на вашем компьютере. Это гарантирует успешную установку cURL.

curl --version
Checking cURL’s version installed

Аутентификация веб-сайтов

Различные протоколы, которые поддерживает curl, такие как FILE, FTP, HTTP, HTTPS, POP3, SCP, SFTP, TELNET и т. д., и вам не нужно взаимодействовать с пользователем.

Если вам нужно аутентифицироваться на веб-сайте с использованием команды curl, вам нужно будет указать имя пользователя и пароль в самом URL. Но если вы укажете только имя пользователя, cURL запросит пароль.

Запустите следующую команду curl, заменив [email protected]:password своим именем пользователя и паролем, а URL веб-сайта своим, чтобы выполнить аутентификацию.


curl -u [email protected]:password --basic <https://wordpress.com/posts/automateinfra.com> 
Authenticating user with password

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

Загрузка файлов или пакетов может быть частью вашей повседневной работы в качестве администратора. Если это так, то cURL обязательно вам поможет. Команда curl, дополненная опциями -O или -o, позволяет вам загружать файлы, сохраняя оригинальное имя или устанавливая другое.

Запустите следующие команды для загрузки пакета NGINX с оригинальным именем (-O) как (*nginx-1.20.2.tar.gz*) и с другим именем (-o) как *mytar.gz*.

# Загружает пакет NGINX с оригинальным именем nginx-1.20.2.tar.gz
curl -O <http://nginx.org/download/nginx-1.20.2.tar.gz>
# Загружает пакет NGINX с новым именем mytar.gz
curl -o mytar.gz <http://nginx.org/download/nginx-1.20.2.tar.gz>
Downloading the NGINX package

Теперь выполните следующую команду для загрузки пакета NGINX с именем mytar2.gz. Но на этот раз вы увидите только индикатор выполнения, а не множество деталей в выводе.

curl -# -o mytar.gz <http://nginx.org/download/nginx-1.20.2.tar.gz>
Downloading the NGINX package but only showing a progress bar

Наконец, выполните команду ls ниже, чтобы перечислить все файлы в текущем каталоге.

ls

Ниже вы можете проверить, что файлы nginx-1.20.2.tar.gz, mytar.gz и mytar2.gz существуют.

Verifying downloaded NGINX packages

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

Быстрозагружаемые веб-сайты всегда идеальны, и у cURL есть способ проверить, насколько быстро пользователь может подключиться к вашему веб-сайту. Как? Установив время ожидания подключения, когда команда curl пытается подключиться к веб-сайту в определенный промежуток времени.

Установка времени ожидания подключения позволяет определить, как долго сервер отвечает на запрос данных, который вы делаете.

Запустите нижеприведенную команду, чтобы попытаться подключиться к сайту adamtheautomator.com в течение 20 секунд, прежде чем запрос откажется по тайм-ауту.

curl --connect-timeout 20 -I adamtheautomator.com

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

Connecting to a website with a connection timeout

Получение данных с использованием запроса GET

Вы видели, что установка времени ожидания подключения предоставляет информацию о веб-сайте в разделе «Установка времени ожидания подключения». Но если этой информации недостаточно, рассмотрите отправку запроса GET.

Выполните нижеприведенную команду curl, чтобы использовать HTTP GET-запрос (–get) и извлечь данные с веб-сайта https://adamtheautomator.com.

curl --get <https://adamtheautomator.com>

Ниже вы можете видеть фактический источник веб-сайта adamtheautomator.com.

Retrieving data using the Get request

Отправка POST-запроса

Вместо получения данных вы также можете отправлять данные, отправляя POST-запрос с помощью команды curl. Параметр -d позволяет отправлять указанные данные в POST-запросе на HTTP-сервер, как это делает браузер, когда пользователь заполняет форму HTML.

Запустите следующую команду curl, чтобы отправить POST-запрос на сайт ptsv2.com.

curl -d "name=curl" <https://ptsv2.com/t/hello>
Sending the POST request on a website

Теперь перейдите по адресу https://reqbin.com/ в вашем веб-браузере, чтобы проверить, был ли POST-запрос успешным.

Ниже вы заметите, что статус показывает (200 (OK), что означает успешную отправку запроса.

Verifying the POST request

Поиск определений слов

Знали ли вы, что вы можете использовать cURL как словарь? Да! cURL позволяет искать определения слов с использованием протокола DICT. Многие термины, связанные с информационными технологиями, можно искать с использованием протокола DICT, такие как часы, ubuntu, RDP и т. д.

Синтаксис команды curl с использованием протокола DICT следующий:

curl [protocol:[dictionary_URL]:[word]

Запустите каждую из следующих команд для поиска определений слов в словаре, доступном на общедоступном веб-сайте dict.org.

# Поиск определения слова ubuntu
curl dict://dict.org/d:ubuntu
# Поиск определения слова clock
curl dict://dict.org/d:clock

Как вы можете видеть ниже, первый поиск определения слова ubuntu не смог найти соответствующего ответа и вернул нет совпадений. Но второй вернул несколько определений для слова часы.

Searching the word definition

Тестирование протокола HTTP/2 веб-сайта

Команда curl безусловно подходит для загрузки, выгрузки и аутентификации веб-сайтов. Но еще одна вещь, делающая curl отличным инструментом, это то, что вы можете проверить, поддерживает ли определенный URL новый протокол HTTP/2.

Запустите следующую команду curl, чтобы проверить, поддерживает ли веб-сайт https://adamtheautomator.com/ протокол HTTPS (–http2).

curl -I --http2 -s <https://adamtheautomator.com/> | grep HTTP

Вы увидите ответ HTTP/2 200 в выводе, подобный приведенному ниже, что означает использование сайтом протокола HTTP2.

Testing Website HTTP2 protocol using Curl Command

Вывод

cURL, будучи бесплатным инструментом, обладает множеством функций. И в этом руководстве вы познакомились с различными примерами использования cURL в Linux. Будь то загрузка файлов, аутентификация веб-сайтов, отправка запросов POST или GET и т. д., cURL вас не разочарует.

Почему бы не расширить эти новые знания? Возможно, научиться передавать файлы и выполнять команды и сценарии с помощью команды curl? Или открыть для себя команды API cURL?

Source:
https://adamtheautomator.com/curl-linux/