logo

Команда Curl у Linux із прикладами

Команда Linux curl використовується для завантаження або завантаження даних на сервер через підтримувані протоколи, такі як HTTP, FTP, IMAP, SFTP, TFTP, IMAP, POP3, SCP тощо. Це віддалена утиліта, тому вона працює без участі користувача.

Передача даних з одного місця в інше є одним із життєво важливих і найчастіше використовуваних завдань комп’ютерної системи. Однак для передачі даних доступно багато інструментів графічного інтерфейсу. Але під час роботи в командному рядку це стає дещо складніше. Утиліта curl дозволяє передавати дані через командний рядок.

Curl — це інструмент командного рядка для отримання та надсилання даних, наприклад файлів із синтаксисом URL. Він підтримує всі протоколи, які підтримує libcurl, оскільки він використовує libcurl. Curl забезпечує підтримку HTTPS і реалізує перевірку сертифіката SSL, коли безпечний протокол згадується за замовчуванням, наприклад HTTPS. Curl надасть сертифікат віддаленого сервера та перевірить сертифікат ЦС, щоб зберегти дійсність віддаленого сервера від гарантії, що віддалений сервер є тим, який він запитує, коли curl посилається на віддалений сервер через HTTPS.

Існує багато варіантів визначення сертифіката ЦС, наприклад --капат і --cacert . Параметр, тобто --cacert, можна використовувати для визначення розташування файлу сховища сертифікатів ЦС. Якщо файл сертифіката ЦС недоступний на платформі Windows, curl шукатиме назву файлу сертифіката ЦС 'curl-ca-bundle.crt' у наведеній нижче послідовності:

  • Каталог, в якому присутня програма curl.
  • Поточний робочий каталог.
  • Системний каталог (Windows).
  • Каталог (Windows).
  • Каталоги згадуються у змінних середовища %PATH%.

Curl видасть повідомлення про помилку, коли віддалений сервер використовує самопідписаний сертифікат або якщо сертифікат віддаленого сервера не підписано через ЦС, згаданий у файлі сертифіката ЦС. Параметр --insecure або -k можна використати для пропуску перевірки сертифіката. Сертифікат віддаленого ЦС можна альтернативно включити у файл сховища сертифікатів ЦС, якщо віддалений сервер дійсний.

Curl надає низку корисних трюків, як-от відновлення передачі файлів, файли cookie, з’єднання SSL, повідомлення HTTP, завантаження FTP, автентифікація користувача, підтримка проксі тощо. Curl механізовано libcurl для кожного аспекту, пов’язаного з передачею.

Що таке libcurl?

libcurl — це безкоштовна бібліотека передачі URL на стороні клієнта. Він підтримує SMB, SMTP, SCP, RTMP, RTSP, POP3, MQTT, LDAP, Kerberos, IMAP, HTTPS, тунелювання HTTP-проксі, HTTP PUT, HTTP POST, HTTP/1, Gopher, FTPS, FTP, DICT і файли cookie. Бібліотека також підтримує автентифікацію користувача з паролем, проксі-сервери, LDAPS, сертифікати HTTPS, завантаження на основі форми HTTP, завантаження FTP, відновлення передачі файлів, TFTP, Telnet, SFTP і схему URL-адрес файлів.

libcurl компактний. Він однаково створює та працює на кількох платформах, включаючи Microsoft Windows, UnixWare, Ultrix, Tru64, Symbian, Solaris, RISC OS, QNX Neutrino, OS/2, OpenBSD, NetWare, NetBSD, macOS, Linux, IRIX, iOS, HURD, HP -UX, FreeBSD, DOS, Darwin, OpenVMS, BlackBerry 10, BlackBerry Tablet OS, BeOS, Android, AmigaOS і AIX.

Бібліотека libcurl сумісна з IPv6, потоково безпечна та безкоштовна. Прив’язки також доступні для понад 50 мов, включаючи Python, PHP, Java та C/C++.
Бібліотека libcurl підтримує SChannel, gskit на IBM i, NSS, mbed TLS, GnuTLS на Windows, Secure Trasport на iOS і macOS, TLS/SSL через OpenSSL, rustls, BearSSL, wolfSSL, AmiSSL, libressl і Boringssl.

Синтаксис:

Основний синтаксис використання curl такий:

 curl [options] [URL...] 

З наведеного вище синтаксису,

URL:

Синтаксис URL – це загальна URL-адреса, яка залежить від протоколу. Ми можемо вказати кілька URL-адрес наступним чином:

 http://site.{one,two,three}.com 

Опції:

Команда curl підтримує такі параметри командного рядка:

--abstract-unix-socket : Він використовується для підключення через абстрактний доменний сокет Unix замість мережі.

--anyauth: Він використовується для команди curl для автентифікації самого методу для використання найбільш безпечного методу. Ця утиліта є додатковою утилітою '--basic, --digest, --ntlm і negotiate', яка використовується для встановлення певного методу автентифікації.

-a, --додавання: Він використовується для завантаження файлів. Він додає файл, а не перезаписує його. Якщо даного файлу немає на сервері, його буде створено.

для кожного машинопису

--основний: Він визначає використання базової автентифікації HTTP. Це типовий параметр команди curl. Це корисно для перевизначення попередніх налаштувань.

--cacert: Це вказано для використання конкретного файлу сертифіката для перевірки однорангового вузла. Файли можуть мати кілька сертифікатів ЦС. Стандартним форматом для сертифікатів є PEM, тому всі сертифікати мають бути в ньому.

--capath: Це вказано для використання конкретного каталогу для перевірки однорангового вузла. Ми можемо вказати кілька шляхів, розділяючи їх двокрапкою (:), наприклад «шлях: шлях2:шлях3». Стандартним форматом для сертифікатів є PEM, тому всі сертифікати мають бути в ньому.

--cert-status: Він використовується для перевірки статусу сертифіката сервера. Він використовує запит статусу сертифіката або TLS зшивання OCSP.

--cert-type: Він визначає наданий тип сертифіката curl. Ці сертифікати можуть бути у форматі PEM, DER та ENG. Стандартним значенням є PEM. Якщо його вказано кілька разів, останнє значення буде прийнято завитком.

-E, --cert : Це вказано для використання файлу сертифіката клієнта під час отримання файлу через будь-який протокол на основі SSL, наприклад HTTPS, FTPS тощо.

--шифри: Він використовується для вибору шифрів для використання у з’єднанні.

--compressed-ssh: Він використовується для ввімкнення вбудованого стиснення SSH. Цей параметр сприйматиметься як запит сервера, тому сервер може його прийняти або не прийняти.

--стиснутий: Він використовується для запиту стиснутої відповіді за допомогою алгоритмів curl і зберігає нестиснений документ. Цей параметр надішле звіт про непідтримуване кодування curl.

-K, --config : Він використовується для опису текстового файлу для читання аргументів curl. Curl використовуватиме аргументи командного рядка з текстового файлу.

--connect-timeout: Він використовується для вказівки максимального часу очікування з’єднання curl у секундах.

--connect-to: Він використовується для створення запиту до вказаної пари хоста та порту; інакше він підключиться до наступної пари. Ця опція є зручним інструментом для здійснення прямих запитів на певному сервері.

-C, --continue-at : Він використовується для продовження або відновлення попередньої передачі файлу з заданим зміщенням.

-c, --cookie-jar : Він використовується для визначення конкретного файлу, у який ми хочемо записати всі файли cookie після успішної операції.

-b, --cookie : Він використовується для пересилання даних на сервер HTTP в заголовку Cookie.

--create-dirs: Він використовується для поєднання з '-o? Це створить необхідну ієрархію локальних каталогів.

--crlf (FTP SMTP): Він використовується для перетворення LF у CRLF під час завантаження. Це зручний інструмент для MVS (OS/390).

--crlfile: Він використовується для вказівки (у форматі PEM) списку відкликаних сертифікатів.

--data-ascii: Це псевдонім для ?-d? варіант.

--делегація: Він використовується для встановлення РІВНЯ, щоб підтвердити серверу, що йому дозволено делегувати, коли йдеться про облікові дані користувача.

--дайджест: Він використовується для ввімкнення автентифікації HTTP Digest.

-q, --вимкнути: Якщо використовується як перший аргумент, він ігноруватиме конфігураційний файл curlrc.

--dns-інтерфейс: Він використовується для підтвердження сервера для надсилання вихідних запитів DNS.

--dns-сервери: Він використовується для визначення DNS-серверів замість серверів за замовчуванням.

-f, --fail: Він використовується для того, щоб завиток мовчазно завершував роботу через помилки сервера.

-F, --form : Він використовується для емуляції заповненої форми, надісланої користувачем.

-P, --ftp-порт: Він використовується для зміни ролей слухача за замовчуванням під час підключення через FTP.

--ftp-ssl-ccc-mode : Використовується для встановлення режиму CCC.

-G, --отримати: Він використовується для визначення даних за допомогою ?-d? параметр для використання в запиті HTTP GET замість запиту POST.

-h, --help: Використовується для показу довідкового посібника з коротким описом використання та параметрів підтримки.

-0, --http1.0: Вказано для використання HTTP версії 1.0.

--ignore-content-length: Він використовується для ігнорування заголовка Content-Length.

-i, --include: Він використовується для включення заголовків відповідей HTTP.

-4, --ipv4: Він використовується для вирішення імен на адреси IPv4.

-6, --ipv6: Він використовується для вирішення імен на IPv6-адреси.

Протоколи керла

Curl підтримує кілька протоколів:

    DICT:Це дозволяє нам шукати слова лише за допомогою словників.FTP (S):Curl підтримує протокол FTP за допомогою багатьох важелів і налаштувань. З або без TLS.ФАЙЛ:Це дозволяє нам записувати та читати локальний файл. Curl не дозволяє отримати віддалений доступ до file://URL, але він працюватиме, коли активний у Microsoft Windows із рідним підходом UNC.ГОФЕР (S):Він отримує файли.HTTP (S):Curl підтримує HTTP за допомогою численних варіацій і параметрів. Він може працювати з версіями HTTP 0.9, 1.0, 1.1, 2 і 3 залежно від точного командного рядка та параметрів збірки.IMAP (S):Curl завантажує електронні листи для нас за допомогою протоколу читання пошти. З або без TLS.LDAP (S):Curl може реалізувати пошук каталогу за допомогою або без використання TLS.MQTT:Curl підтримує 3 версію MQTT. Завантаження на MQTT відбувається так само, як 'підписатися' до будь-якої теми, а публікація/завантаження те саме, що 'публікувати' на будь-яку тему. Через TLS MQTT не підтримується.POP3 (S):Завантаження через сервер pop3 означає отримання пошти без або з TLS.RTMP (S):RTMP або протокол обміну повідомленнями в реальному часі в основному використовується для потокового мультимедіа на сервері.RTSP:Curl підтримує завантаження 1.0 RTSP.SCP:Curl підтримує версію SCP для передачі двох scp.SFTP:Curl підтримує SFTP через 2 версію SSH.SMB (S):Curl підтримує 1 версію SMB для завантаження та вивантаження.SMTP (S):Завантаження вмісту на будь-який SMTP-сервер означає передачу електронного листа без або з TLS.TELNET:Інформування curl про надання URL-адреси telnet починає інтерактивний сеанс, під час якого він передає те, що він читає, через стандартний вхід і призводить до того, що це передає сервер.TFTP:Curl може здійснювати завантаження та завантаження TFTP.

Встановлення команди curl

Команда curl постачається з більшістю Linux розподіли. Але, якщо система не несе локон за замовчуванням. Його потрібно встановити вручну. Щоб встановити завиток, виконайте наступні команди:

Оновіть систему, виконавши такі команди:

 sudo apt update sudo apt upgrade 

Тепер інсталюйте утиліту curl, виконавши команду нижче:

 sudo apt install curl 

Перевірте встановлення, виконавши команду нижче:

 curl -version 

Наведена вище команда відобразить встановлену версію команди curl.

Отримати вміст вказаної URL-адреси

Щоб отримати вміст будь-якої конкретної URL-адреси, виконайте команду curl, а потім URL-адресу. Розглянемо наведену нижче команду:

 curl https://www.javatpoint.com/linux-tutorial 

Наведена вище команда отримає дані сторінки вказаної сторінки. Розгляньте наведений нижче знімок результату:

Команда Linux Curl

З наведених вище виводів ми бачимо, що дані сторінки за вказаною URL-адресою вибираються. Щоб зупинити виконання, натисніть клавіші CTRL+C.

Збереження даних у певному файлі

Щоб зберегти дані в певному файлі, передайте параметр «-o», а потім каталог, ім’я файлу та URL-адресу таким чином:

 curl -o / 

Розглянемо наведену нижче команду:

 curl -o /home/javatpoint/Documents/linux.html https://www.javatpoint.com/linux-tutorial 

Наведена вище команда збереже дані сторінки у файлі «linux.html» у каталозі «/home/javatpoint/Documents/». Розглянемо наведений нижче результат:

Команда Linux Curl

За допомогою наведеної вище команди ми можемо побачити загальну кількість завантажених даних, отриманих даних, середній час та деякі інші статистичні дані щодо даних.

Щоб перевірити завантажені дані, відкрийте файл, виконавши команду cat

 cd Documents cat linux.html 

Розглянемо наведений нижче знімок виводу:

Команда Linux Curl

Завантажте файл з Інтернету

Одним із цікавих і захоплюючих застосувань curl є те, що ми можемо завантажити файл з Інтернету. Щоб завантажити файл з Інтернету, скопіюйте посилання для завантаження та вставте його за допомогою команди curl. Ми також можемо передати інші аргументи, щоб зробити це більш конкретним. Наприклад, завантажте останню версію ubuntu, скопіюйте посилання для завантаження ubuntu з офіційного веб-сайту та вставте його за допомогою команди curl наступним чином:

 curl -o /home/javatpoint/Documents/ubuntu20.04.iso https://ubuntu.com/download/desktop/thank-you?version=20.04&architecture=amd64 

Наведена вище команда завантажить Ubuntu 20.04 у вказаний каталог. Укажіть належне розширення файлу; інакше він завантажить файл в іншому форматі. Розглянемо наведений нижче результат:

Команда Linux Curl

З наведеного вище результату завантажується файл ubuntu.iso. Ми можемо бачити час завантаження, розмір файлу, швидкість завантаження та іншу статистику. Щоб зупинити виконання, будь-коли натисніть клавіші CTRL+D.

Відновити перервані завантаження

Можливо, завантаження можуть бути перервані з якоїсь причини. Ми можемо відновити завантаження за допомогою команди curl. Щоб відновити перерваний файл, передайте параметр '-C' команді curl наступним чином:

 curl -C 

Наведена вище команда відновить завантаження вказаної URL-адреси.

Завантажити декілька файлів

Щоб завантажити кілька файлів, укажіть кілька URL-адрес, розділених пробілом, як показано нижче:

 curl -O 

Наведена вище команда завантажить дані з обох URL-адрес відповідно.

HTTP-заголовки запитів

Заголовки HTTP містять додаткову інформацію; це дозволяє веб-серверу завантажувати цю інформацію. Щоб запитати HTTP-заголовки з веб-сайту, виконайте команду з параметром «-I» таким чином:

 curl -I www.javatpoint.com 

Наведена вище команда створить наведені нижче результати:

Команда Linux Curl