logo

Comanda Curl în Linux cu exemple

Comanda Linux curl este folosită pentru a descărca sau încărca date pe un server prin protocoale acceptate, cum ar fi HTTP, FTP, IMAP, SFTP, TFTP, IMAP, POP3, SCP etc. Este un utilitar la distanță, așa că funcționează fără interacțiunea utilizatorului.

Transferul de date dintr-un loc în altul este una dintre sarcinile vitale și cele mai utilizate ale unui sistem informatic. Cu toate acestea, există multe instrumente GUI disponibile pentru transferul de date. Dar, când lucrezi pe linia de comandă, devine puțin complicat. Utilitarul curl ne permite să transferăm date prin linia de comandă.

Curl este un instrument de linie de comandă pentru a obține și trimite date, cum ar fi fișiere cu sintaxa URL. Acceptă toate protocoalele care sunt acceptate de libcurl deoarece folosește libcurl. Curl oferă suport pentru HTTPS și implementează verificarea certificatului SSL atunci când un protocol securizat este menționat în mod implicit, cum ar fi HTTPS. Curl va aduce certificatul de server la distanță și va verifica certificatul CA pentru a salva valabilitatea serverului de la distanță de a garanta că serverul la distanță este cel pe care îl solicită să fie atunci când curl se conectează la un server la distanță prin HTTPS.

Există multe opțiuni pentru a defini un certificat CA, cum ar fi --capath și --cacert . Opțiunea, adică --cacert, poate fi utilizată pentru a specifica locația fișierului depozitului de certificate CA. Dacă un fișier de certificat CA nu este disponibil pe platforma Windows, curl va căuta numele fișierului certificat CA „curl-ca-bundle.crt” în secvența de mai jos:

  • Director în care este prezent programul curl.
  • Director de lucru curent.
  • Director de sistem (Windows).
  • Director (Windows).
  • Directoarele sunt menționate în variabilele de mediu %PATH%.

Curl va da un mesaj de eroare atunci când serverul de la distanță utilizează un certificat autosemnat sau când certificatul de server la distanță nu este semnat printr-un CA menționat în fișierul de certificare CA. Opțiunea --insecure sau -k poate fi utilizată pentru a omite verificarea certificatului. Certificatul CA la distanță poate fi inclus alternativ în fișierul de stocare a certificatelor CA dacă serverul la distanță este valid.

Curl oferă o mulțime de trucuri utile, cum ar fi reluarea transferului de fișiere, cookie-uri, conexiuni SSL, postare HTTP, încărcare FTP, autentificarea utilizatorilor, suport proxy și multe altele. Curl este mecanizat de libcurl pentru fiecare aspect legat de transfer.

Ce este libcurl?

libcurl este o bibliotecă de transfer URL gratuită pe partea clientului. Acceptă SMB, SMTP, SCP, RTMP, RTSP, POP3, MQTT, LDAP, Kerberos, IMAP, HTTPS, tunelul proxy HTTP, HTTP PUT, HTTP POST, HTTP/1, Gopher, FTPS, FTP, DICT și cookie-uri. Biblioteca acceptă, de asemenea, autentificare utilizator plus parolă, proxy, certificate LDAPS, HTTPS, încărcare bazată pe formular HTTP, încărcare FTP, reluare transfer de fișiere, TFTP, Telnet, SFTP și schema URL a fișierelor.

libcurl este compact. Acesta creează și funcționează în mod identic pe mai multe platforme, inclusiv 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 și AIX.

Biblioteca libcurl este compatibilă cu IPv6, sigură pentru fire și gratuită. Legăturile sunt, de asemenea, disponibile pentru peste 50 de limbi, inclusiv Python, PHP, Java și C/C++.
Biblioteca libcurl acceptă SChannel, gskit pe IBM i, NSS, mbed TLS, GnuTLS pe ​​Windows, Secure Trasport pe iOS și macOS, TLS/SSL prin OpenSSL, rustls, BearSSL, wolfSSL, AmiSSL, libressl și Boringssl.

Sintaxă:

Sintaxa de bază pentru utilizarea curl este următoarea:

 curl [options] [URL...] 

Din sintaxa de mai sus,

URL:

Sintaxa URL este o adresă URL generală dependentă de protocol. Putem specifica mai multe adrese URL, după cum urmează:

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

Opțiuni:

Comanda curl acceptă următoarele opțiuni de linie de comandă:

--abstract-unix-socket : Este folosit pentru a se conecta prin intermediul unui socket de domeniu abstract Unix în loc de o rețea.

--anyauth: Este folosit pentru a comanda curl pentru autentificarea metodei în sine pentru utilizarea celei mai sigure metode. Acest utilitar este un utilitar opțional „--basic, --digest, --ntlm, and negotiate”, care este folosit pentru a seta o anumită metodă de autentificare.

-a, --anexează: Este folosit pentru a încărca fișiere. Acesta adaugă fișierul în loc să îl suprascrie. Dacă fișierul dat nu există pe server, acesta va crea unul.

pothineni berbec

--de bază: Specifică utilizarea autentificării de bază HTTP. Este opțiunea implicită a comenzii curl. Este util pentru depășirea setărilor anterioare.

--cacert : Este specificat pentru utilizarea anumitor fișiere de certificat pentru a verifica peer-ul. Fișierele pot avea mai multe certificate CA. Formatul standard pentru certificate este PEM, deci toate certificatele trebuie să fie în el.

--capath: Este specificat pentru utilizarea anumitor director pentru a verifica peer-ul. Putem specifica mai multe căi separându-le prin două puncte (:), cum ar fi „cale: cale2: cale3”. Formatul standard pentru certificate este PEM, deci toate certificatele trebuie să fie în el.

--cert-status: Este folosit pentru a verifica starea certificatului de server. Utilizează Cererea de stare a certificatului sau TLS de capsare OCSP.

--tip-cert: Specifică tipul de certificat curl furnizat. Aceste certificate pot fi în format PEM, DER și ENG. Valoarea implicită este PEM. Dacă este specificat de mai multe ori, ultima valoare va fi luată de curl.

-E, --cert : Este specificat pentru utilizarea fișierului certificat client atunci când obțineți un fișier prin oricare dintre protocolul bazat pe SSL, cum ar fi HTTPS, FTPS etc.

--cifre: Este folosit pentru a selecta cifrurile de utilizat în conexiune.

--compressed-ssh: Este folosit pentru a activa compresia SSH încorporată. Această opțiune va lua drept cerere din partea serverului, astfel încât serverul o poate accepta sau nu.

--comprimat: Este folosit pentru a solicita un răspuns comprimat folosind algoritmii curl și salvează documentul necomprimat. Această opțiune va trimite un raport pentru curl de codificare neacceptat.

-K, --config: Este folosit pentru a descrie un fișier text pentru citirea argumentelor curl. Curl va folosi argumentele liniei de comandă din fișierul text.

--connect-timeout : Este folosit pentru a specifica timpul maxim în secunde pentru expirarea conexiunii curl.

--conectează la : Este folosit pentru a crea o cerere către perechea dată de gazdă și port; în caz contrar, se va conecta la următoarea pereche. Această opțiune este un instrument util pentru a face cereri directe la un anumit server.

-C, --continuare-la: Este folosit pentru a continua sau a relua un transfer de fișier anterior la offset-ul dat.

-c, --cookie-jar : Este folosit pentru a specifica un anumit fișier în care dorim să scriem toate cookie-urile după o operațiune cu succes.

-b, --cookie: Este folosit pentru a transmite date către serverul HTTP din antetul Cookie.

--create-dirs: Este folosit pentru conjuncție cu '-o? opțiunea, va crea ierarhia de director local necesară.

--crlf (FTP SMTP): Este folosit pentru a converti LF în CRLF în încărcare. Este un instrument util pentru MVS (OS/390).

--crlfile: Este folosit pentru a specifica (în format PEM) o listă de revocare a certificatelor.

--data-ascii : Este un alias pentru ?-d? opțiune.

--delegație : Este folosit pentru a seta LEVEL pentru a confirma serverului ceea ce este permis să delege atunci când vine vorba de acreditările utilizatorului.

--digera: Este folosit pentru a activa autentificarea HTTP Digest.

-q, --disable: Dacă este folosit ca prim argument, va ignora fișierul de configurare curlrc.

--dns-interface : Este folosit pentru a confirma serverul pentru a trimite cererile DNS de ieșire.

--dns-server: Este folosit pentru a specifica serverele DNS în loc de serverele implicite.

-f, --fail: Este folosit pentru a face curl-ul să eșueze în tăcere la erorile de server.

-F, --form: Este folosit pentru a emula un formular completat trimis de utilizator.

-P, --ftp-port : Este folosit pentru a inversa rolurile implicite de ascultător atunci când vă conectați cu FTP.

--ftp-ssl-ccc-mode : Este folosit pentru a seta modul CCC.

-G, --get: Este folosit pentru a specifica datele cu ?-d? opțiunea de utilizat într-o solicitare HTTP GET în loc de cerere POST.

-h, --ajutor: Este folosit pentru a afișa manualul de ajutor, având o scurtă descriere a opțiunilor de utilizare și asistență.

-0, --http1.0: Este specificat pentru utilizarea versiunii HTTP 1.0.

--ignore-content-length: Este folosit pentru a ignora antetul Content-Length.

-eu includ: Este folosit pentru a include antetele răspunsurilor HTTP.

-4, --ipv4: Este folosit pentru a rezolva numele în adrese IPv4.

-6, --ipv6: Este folosit pentru a rezolva numele în adrese IPv6.

Protocoale de curl

Curl acceptă mai multe protocoale:

    DICT:Ne permite să căutăm cuvinte doar cu dicționare.FTP (S):Curl acceptă protocolul FTP folosind o mulțime de pârghii și modificări. Cu sau fără TLS.FIŞIER:Ne permite să scriem și să citim fișierul local. Curl nu permite accesul de la distanță fișier://URL, dar va funcționa atunci când este activ pe Microsoft Windows cu abordarea UNC nativă.GOPHER (S):Preia fișierele.HTTP (S):Curl acceptă HTTP folosind numeroase variante și opțiuni. Poate vorbi versiunile HTTP 0.9, 1.0, 1.1, 2 și 3, în funcție de linia de comandă precisă și de opțiunile de compilare.IMAP (S):Curl descarcă e-mailuri pentru noi cu protocolul de citire a e-mailurilor. Cu sau fără TLS.LDAP (S):Curl poate implementa căutarea în director pentru noi cu sau fără utilizarea TLS.MQTT:Curl acceptă versiunea 3 a MQTT. Descărcarea pe MQTT este aceeași ca 'Abonati-va' la orice subiect, iar postarea/încărcarea este la fel ca 'publica' pe orice subiect. Peste TLS, MQTT nu este acceptat.POP3 (S):Descărcarea printr-un server pop3 reprezintă primirea de e-mail fără sau cu TLS.RTMP (S):RTMP sau Realtime Messaging Protocol este folosit în principal pentru streaming media pe server.RTSP:Curl acceptă descărcări 1.0 ale RTSP.SCP:Curl acceptă versiunea de transfer SCP cu două scp.SFTP:Curl acceptă SFTP peste versiunea 2 de SSH.IMM (S):Curl acceptă prima versiune de SMB pentru descărcare și încărcare.SMTP (S):Încărcarea conținutului pe orice server SMTP înseamnă transferul unui e-mail fără sau cu TLS.TELNET:Informarea curl pentru a aduce o adresă URL telnet începe o sesiune interactivă în care transferă ceea ce citește prin stdin și rezultă ceea ce îl transferă serverul.TFTP:Curl poate implementa încărcări și descărcări TFTP.

Instalarea comenzii curl

Comanda curl vine cu majoritatea Linux distribuţiile. Dar, dacă sistemul nu poartă bucla în mod implicit. Trebuie să îl instalați manual. Pentru a instala curl, executați următoarele comenzi:

Actualizați sistemul executând următoarele comenzi:

 sudo apt update sudo apt upgrade 

Acum, instalați utilitarul curl executând comanda de mai jos:

 sudo apt install curl 

Verificați instalarea executând comanda de mai jos:

 curl -version 

Comanda de mai sus va afișa versiunea instalată a comenzii curl.

Preluați conținutul adresei URL specificate

Pentru a prelua conținutul oricărei adrese URL specifice, executați comanda curl, urmată de adresa URL. Luați în considerare comanda de mai jos:

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

Comanda de mai sus va prelua datele paginii paginii specificate. Luați în considerare imaginea de mai jos a rezultatului:

Comanda Linux Curl

Din rezultatul de mai sus, putem vedea că datele de pagină ale adresei URL date sunt preluate. Pentru a opri execuția, apăsați tastele CTRL+C.

Salvați datele într-un fișier specific

Pentru a salva datele într-un anumit fișier, treceți opțiunea „-o” urmată de director, numele fișierului și adresa URL, după cum urmează:

 curl -o / 

Luați în considerare comanda de mai jos:

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

Comanda de mai sus va salva datele paginii în fișierul „linux.html” din directorul „/home/javatpoint/Documents/”. Luați în considerare rezultatul de mai jos:

Comanda Linux Curl

Din comanda de mai sus, putem vedea cantitatea totală de date descărcate, datele primite, timpul mediu și alte statistici despre date.

Pentru a verifica datele descărcate, deschideți fișierul executând comanda cat

 cd Documents cat linux.html 

Luați în considerare imaginea de mai jos a ieșirii:

Comanda Linux Curl

Descărcați un fișier de pe web

Una dintre utilizările interesante și fascinante ale curl este că putem descărca un fișier de pe web. Pentru a descărca un fișier de pe web, copiați linkul de descărcare și inserați-l cu comanda curl. Putem transmite și alte argumente pentru a-l face mai specific. De exemplu, descărcați cea mai recentă versiune de ubuntu, copiați link de descărcare a ubuntu de pe site-ul său oficial și lipiți-l cu comanda curl după cum urmează:

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

Comanda de mai sus va descărca Ubuntu 20.04 în directorul specificat. Furnizați extensia de fișier adecvată; în caz contrar, va descărca fișierul într-un alt format. Luați în considerare rezultatul de mai jos:

Comanda Linux Curl

Din rezultatul de mai sus, fișierul ubuntu.iso este descărcat. Putem vedea timpul de descărcare, dimensiunea fișierului, viteza de descărcare și alte statistici. Pentru a opri execuția, apăsați oricând tastele CTRL+D.

Reluați descărcările întrerupte

Este posibil să existe șansa ca descărcările să fie întrerupte dintr-un motiv oarecare. Putem relua descărcările folosind comanda curl. Pentru a relua fișierul întrerupt, treceți opțiunea „-C” cu comanda curl după cum urmează:

 curl -C 

Comanda de mai sus va relua descărcarea adresei URL specificate.

Descărcați mai multe fișiere

Pentru a descărca mai multe fișiere, specificați mai multe adrese URL separate prin spațiu, după cum urmează:

 curl -O 

Comanda de mai sus va descărca datele de la ambele adrese URL, respectiv.

Interogați anteturile HTTP

Antetele HTTP conțin informații suplimentare; permite serverului web să descarce aceste informații. Pentru a interoga anteturile HTTP de pe un site web, executați comanda cu opțiunea „-I” după cum urmează:

 curl -I www.javatpoint.com 

Comanda de mai sus va produce rezultatul de mai jos:

Comanda Linux Curl