Командата 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 поддържа няколко протокола:
Инсталиране на командата 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
Горната команда ще извлече данните за страницата на посочената страница. Помислете за снимката по-долу на изхода:
От горния резултат можем да видим, че данните за страницата на дадения 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/“. Помислете за резултата по-долу:
От горната команда можем да видим общото количество изтеглени данни, получени данни, средно време и някои други статистически данни за данните.
За да проверите изтеглените данни, отворете файла, като изпълните командата cat
cd Documents cat linux.html
Разгледайте следната снимка на изхода:
Изтегляне на файл от мрежата
Едно от интересните и завладяващи приложения на 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 в посочената директория. Осигурете правилното файлово разширение; в противен случай ще изтегли файла в различен формат. Помислете за резултата по-долу:
От горния резултат файлът ubuntu.iso се изтегля. Можем да видим времето за изтегляне, размера на файла, скоростта на изтегляне и други статистически данни. За да спрете изпълнението, по всяко време натиснете клавишите CTRL+D.
Възобновете прекъснатите изтегляния
Възможно е изтеглянията да бъдат прекъснати по някаква причина. Можем да възобновим изтеглянията, като използваме командата curl. За да възобновите прекъснатия файл, подайте опцията '-C' с команда curl, както следва:
curl -C
Горната команда ще възобнови изтеглянето на посочения URL адрес.
Изтегляне на множество файлове
За да изтеглите няколко файла, посочете няколко URL адреса, разделени с интервал, както следва:
curl -O
Горната команда ще изтегли данните от двата URL адреса, съответно.
HTTP заглавки на заявки
HTTP заглавките съдържат допълнителна информация; позволява на уеб сървъра да изтегли тази информация. За да направите заявка за HTTP заглавките от уебсайт, изпълнете командата с опцията „-I“, както следва:
curl -I www.javatpoint.com
Горната команда ще произведе изхода по-долу: