logo

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

Командата curl на Linux се използва за изтегляне или качване на данни на сървър чрез поддържани протоколи като HTTP, FTP, IMAP, SFTP, TFTP, IMAP, POP3, SCP и др. Това е отдалечена помощна програма, така че работи без намеса на потребителя.

Прехвърлянето на данни от едно място на друго е една от жизненоважните и най-използвани задачи на компютърната система. Въпреки това има много GUI инструменти за прехвърляне на данни. Но когато работите на командния ред, става малко сложно. Помощната програма curl ни позволява да прехвърляме данни чрез командния ред.

Curl е инструмент на командния ред за получаване и изпращане на данни като файлове с URL синтаксис. Той поддържа всички протоколи, които се поддържат от libcurl, защото използва libcurl. Curl осигурява своята поддръжка за HTTPS и прилага проверка на SSL сертификат, когато по подразбиране се споменава защитен протокол, като HTTPS. Curl ще донесе сертификата на отдалечения сървър и ще провери сертификата на CA, за да запази валидността на отдалечения сървър от гарантиране, че отдалеченият сървър е този, който иска да бъде, когато curl се свързва с отдалечен сървър чрез HTTPS.

Има много опции за дефиниране на CA сертификат, като --капат и --cacert . Опцията, т.е. --cacert, може да се използва за указване на местоположението на файла на хранилището на CA сертификати. Ако CA сертификат файл не е наличен в платформата на Windows, curl ще търси 'curl-ca-bundle.crt' CA сертификат име на файл в следната последователност:

  • Директория, в която присъства програмата curl.
  • Текуща работна директория.
  • Системна директория (Windows).
  • Директория (Windows).
  • Директориите са споменати в променливите на средата %PATH%.

Curl ще даде съобщение за грешка, когато отдалеченият сървър използва самоподписан сертификат или когато сертификатът на отдалечения сървър не е подписан чрез CA, споменат във файла на CA сертификат. Опцията --insecure или -k може да се използва за пропускане на проверката на сертификата. Сертификатът на отдалечения CA може алтернативно да бъде включен във файла за съхранение на сертификат на CA, ако отдалеченият сървър е валиден.

Curl предоставя набор от полезни трикове като възобновяване на прехвърлянето на файлове, бисквитки, 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 и бисквитки. Библиотеката също така поддържа удостоверяване с потребител плюс парола, прокси сървъри, 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, --добавете: Използва се за качване на файлове. Той добавя файла, вместо да го презаписва. Ако дадения файл не съществува на сървъра, той ще създаде такъв.

поле за предупреждение на javascript

--основен: Той определя използването на основно HTTP удостоверяване. Това е опцията по подразбиране на командата curl. Полезно е за отмяна на предишните настройки.

--cacert: Посочено е за използване на конкретния файл със сертификат за проверка на партньора. Файловете може да имат няколко CA сертификата. Стандартният формат за сертификатите е PEM, така че всички сертификати трябва да са в него.

--capath: Посочено е за използване на конкретната директория за проверка на партньора. Можем да посочим множество пътища, като ги разделим с двоеточие (:), като например „път: път2:път3“. Стандартният формат за сертификатите е PEM, така че всички сертификати трябва да са в него.

--cert-статус: Използва се за проверка на състоянието на сертификата на сървъра. Той използва Certificate Status Request или OCSP телбод TLS.

--тип-сертификат: Той указва предоставения тип curl сертификат. Тези сертификати могат да бъдат във формат PEM, DER и ENG. Стойността по подразбиране е PEM. Ако е указано няколко пъти, последната стойност ще бъде взета от къдренето.

-E, --серт: Посочено е за използване на файла със сертификат на клиента при получаване на файл чрез който и да е SSL-базиран протокол като HTTPS, FTPS и др.

--шифри: Използва се за избор на шифри, които да се използват във връзката.

--компресиран-ssh: Използва се за активиране на вградена SSH компресия. Тази опция ще приеме като заявка от сървъра, така че сървърът може или не може да я приеме.

--компресиран: Използва се за изискване на компресиран отговор с помощта на curl алгоритмите и запазва некомпресирания документ. Тази опция ще изпрати отчет за неподдържано кодиране curl.

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

--connect-timeout: Използва се за определяне на максималното време в секунди за прекъсване на връзката с къдрици.

--свързване към: Използва се за създаване на заявка към дадена двойка хост и порт; в противен случай ще се свърже със следващата двойка. Тази опция е удобен инструмент за отправяне на директни заявки към конкретен сървър.

-C, --continue-at: Използва се за продължаване или възобновяване на предишен файлов трансфер при даденото отместване.

-c, --cookie-буркан: Използва се за указване на конкретен файл, в който искаме да запишем всички бисквитки след успешна операция.

-b, --бисквитка: Използва се за препращане на данни към HTTP сървъра в заглавката на бисквитката.

--create-dirs: Използва се за връзка с '-o? опция, ще създаде необходимата йерархия на локални директории.

--crlf (FTP SMTP): Използва се за конвертиране на LF в CRLF при качване. Това е удобен инструмент за MVS (OS/390).

--crlfile: Използва се за указване (в PEM формат) със списък на анулираните сертификати.

--data-ascii: Това е псевдоним за ?-d? опция.

--делегиране: Използва се за задаване на LEVEL за потвърждаване на сървъра какво е позволено да делегира, когато става въпрос за потребителски идентификационни данни.

--дайджест: Използва се за активиране на HTTP Digest удостоверяване.

-q, --деактивиране: Ако се използва като първи аргумент, той ще игнорира конфигурационния файл curlrc.

--dns-интерфейс: Използва се за потвърждаване на сървъра за изпращане на изходящи DNS заявки.

--dns-сървъри: Използва се за указване на DNS сървърите вместо сървърите по подразбиране.

-f, --fail: Използва се, за да направи curl тихо да се провали при грешки на сървъра.

-F, --форма: Използва се за емулиране на попълнен формуляр, изпратен от потребителя.

-P, --ftp-порт: Използва се за обръщане на ролите на слушател по подразбиране при свързване с FTP.

--ftp-ssl-ccc-mode: Използва се за настройка на режим CCC.

-G, --получете: Използва се за указване на данни с ?-d? опция за използване в HTTP GET заявка вместо POST заявка.

-h, --помощ: Използва се за показване на помощното ръководство с кратко описание на опциите за използване и поддръжка.

-0, --http1.0: Той е определен за използване на HTTP версия 1.0.

--ignore-content-length: Използва се за игнориране на заглавката Content-Length.

-i, --включва: Използва се за включване на заглавките на 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, като използва множество варианти и опции. Може да говори 0.9, 1.0, 1.1, 2 и 3 HTTP версии в зависимост от точния команден ред и опциите за изграждане.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 да донесе telnet URL започва интерактивна сесия, в която прехвърля това, което чете през stdin и води до това, което сървърът го прехвърля.TFTP:Curl може да реализира TFTP качвания и изтегляния.

Инсталиране на командата curl

Командата curl идва с повечето от Linux разпределения. Но, ако системата не носи къдрицата по подразбиране. Трябва да го инсталирате ръчно. За да инсталирате curl, изпълнете следните команди:

Актуализирайте системата, като изпълните следните команди:

 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 команда