Cum să utilizați comanda Curl în Linux

Un ghid amplu care explică utilizarea comenzii curl pentru a prelua pagini web și a descărca fișiere direct de pe terminalul dvs

The răsuci comanda este încă un utilitar interesant pe linie de comandă pe care Linux-ul ți-l oferă. răsuci comanda permite utilizatorului să preia fișiere de pe server.

răsuci este o alegere populară a dezvoltatorilor de aplicații și a utilizatorilor frecventi de Linux datorită suportului pentru o serie de protocoale precum RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, HTTP, HTTPS, FTP, FTPS, IMAP, IMAPS, DICT, FILE, GOPHER, LDAP, LDAPS, POP3, POP3S etc.

răsuci comanda face mult mai mult decât preluarea paginilor web pentru tine. Cunoașterea opțiunilor disponibile cu această comandă o face mai versatilă pentru utilizarea dvs. Să ne aprofundăm în tutorial pentru a înțelege bine utilizarea răsuci comanda folosind câteva exemple scurte.

Instalare

Înainte de a utiliza răsuci comanda, verificați dacă este deja instalat pe sistemul dvs. Utilizați comanda curl --versiune pentru a verifica dacă răsuci este instalat.

În cazul în care răsuci nu este instalat, urmați pașii următori.

Pe sistemele bazate pe Ubuntu și Debian, utilizare:

sudo apt-get update
sudo apt-get install curl

Pe distribuțiile RHEL, CentOs și Fedora, utilizare:

sudo yum install curl

Acum folosiți curl --versiune comanda pentru a vă asigura că este instalat corect.

curl --versiune

Ieșire:

curl 7.58.0 (x86_64-pc-linux-gnu) libcurl/7.58.0 OpenSSL/1.1.1 zlib/1.2.11 libidn2/2.0.4 libpsl/0.19.1 (+libidn2/2.0.4) nghttp2/1.30. 0 librtmp/2.3 Data lansării: 2018-01-24 Protocoale: fișier dict ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp smb smbs smtp smtps telnet tftp Caracteristici: Asynchfile IDSSN-IPVLM6 KERSLB SPLNT_6 libz TLS-SRP HTTP2 UnixSockets HTTPS-proxy PSL gaurav@ubuntu:~$ 

Acum suntem gata să folosim răsuci comanda.

Opțiuni disponibile cu comanda CURL

Să aruncăm mai întâi o privire la unele dintre opțiunile proeminente disponibile cu răsuci comanda.

OpțiuneDescriere
-upentru a descărca fișiere de pe un server FTP
-Cpentru a relua o descărcare întreruptă
-opentru a salva rezultatul răsuci comandă cu un nume de fișier predefinit
-Eupentru a obține antetele HTTP ale unei adrese URL definite
-Opentru a salva rezultatul răsuci comanda cu numele fișierului original
--libcurlpentru a scoate codul sursă C care utilizează libcurl pentru opțiunea specificată
-Xpentru a utiliza un proxy pentru a accesa adresa URL
-#pentru a afișa bara de progres pentru a afișa starea descărcării

Preluarea unei pagini web folosind CURL

The răsuci comanda, când este utilizată fără nicio opțiune, preia conținutul URL-ului specificat în comandă.

Sintaxă:

curl [URL]

Exemplu:

curl //toate lucrurile.cum

Ieșire:

gaurav@ubuntu:~$ curl //allthings.how html{overflow-x:hidden!important}html.i-amphtml-fie{height:100%!important;width:100%!important}html:not([amp4ads ]),html:not([amp4ads]) body{height:auto!important}html:not([amp4ads]) body{margin:0!important}body{-webkit-text-size-adjust:100%;- moz-text-size-adjust:100%;-ms-text-size-adjust:100%;text-size-adjust:100%}html.i-amphtml-singledoc.i-amphtml-embedded{-ms-touch -action:pan-y;touch-action:pan-y}html.i-amphtml-fie>body,html.i-amphtml-singledoc>body{overflow:visible!important}html.i-amphtml-fie:not (.i-amphtml-inabox)>body,html.i-amphtml-singledoc:not(.i-amphtml-inabox)>body{position:relative!important}html.i-amphtml-webview>body{overflow-x :hidden!important;overflow-y:visible!important;min-height:100vh!important}html.i-amphtml-ios-embed-legacy>body{overflow-x:hidden!important;overflow-y:auto!important ;poziție:absolut!important}html.i-amphtml-ios-embed{overflow-y:auto!important;position:static}#i-amphtml-wrapper{overflow-x:hidden!important;peste flow-y:auto!important;poziție:absolut!important;sus:0!important;stânga:0!important;dreapta:0!important;jos:0!important;marja:0!important;afișare:bloc!important} html.i-amphtml-ios-embed.i-amphtml-ios-overscroll,html.i-amphtml-ios-embed.i-amphtml-ios-overscroll>#i-amphtml-wrapper{-webkit-overflow-scrolling: atingere!important}#i-amphtml-wrapper>corp{poziție:relativ!important;border-top:1px solid transparent!important}#i-amphtml-wrapper+corp{vizibilitate:vizibil}#i-amphtml-wrapper+corp .i-amphtml-lightbox-element,#i-amphtml-wrapper+body[i-amphtml-lightbox]{visibility:hidden}#i-amphtml-wrapper+body[i-amphtml-lightbox] .i-amphtml-lightbox -element{vizibility:visible}#i-amphtml-wrapper.i-amphtml-scroll-disabled,.i-amphtml-scroll-disabled{overflow-x:hidden!important;overflow-y:hidden!important}amp-instagram {padding:54px 0px 0px!important;background-color:#fff}amp-iframe iframe{box-sizing:border-box!important}[amp-access][amp-access-hide]{display:none}[abonamente -dialog],body:not(.i-amphtml-s ubs-ready) [subscriptions-action],body:not(.i-amphtml-subs-ready) [subscriptions-section]{display:none!important}amp-experiment,amp-live-list>[update]{display :none}.i-amphtml-jank-meter{position:fixed;background-color:rgba(232,72,95,0.5);bottom:0;right:0;color:#fff;font-size:16px; z-index:1000;padding:5px}amp-list[resizable-children]>.i-amphtml-loading-container.amp-hidden{display:none!important}amp-list [fetch-error],amp-list [încărcare-mai mult] [încărcare-mai-mai-button],ampli-list[încărcare-mai-mai] [încărcare-mai-mai-end],amp-list[încărcare-mai-mai] [încărcare-mai-mai-eșuat],amp-list[încărcare -mai mult] [încărcare-mai-încărcare]{display:none}amp-list[diffable] div[role=list]{display:block}amp-story-page,amp-story[autonom]{min-height:1px !important;display:bloc!important;înălțime:100%!important;marja:0!important;padding:0!important;depășire:ascuns!important;lățime:100%!important}amp-story[autonom]{background- color:#202125!important;position:relative!important}amp-story-page{background-color:#757575}amp-story .amp-active>div,amp-story .i-amphtm l-loader-background{display:none!important}amp-story-page:not(:first-of-type):not([distanța]):not([activ]){transform:translateY(1000vh)!important }amp-autocomplete{position:relative!important;display:inline-block!important}amp-autocomplete>input,amp-autocomplete>textarea{padding:0.5rem;border:1px solid rgba(0,0,0,0.33) }.i-amphtml-autocomplete-results,amp-autocomplete>input,amp-autocomplete>textarea{font-size:1rem;line-height:1.5rem}[amp-fx^=fly-in]{vizibility:hidden} amp-script[nodom]{poziție:fix!important;sus:0!important;lățime:1px!important;înălțime:1px!important;depășire:ascuns!important;vizibilitate:ascuns} 

Aici, conținutul paginii web este preluat direct pe terminalul dvs. ca cod sursă.

Puteți folosi opțiuni -o și -O cu răsuci comandă pentru a stoca acest conținut într-un fișier.

Când -o este utilizată opțiunea, conținutul URL-ului este salvat în directorul curent cu un nume de fișier definit de utilizator.

Sintaxă:

curl -o [nume fișier definit de utilizator] [URL]

Exemplu:

gaurav@ubuntu:~/workspace$ curl -o ath.html //allthings.how % Total % primit % Xferd Viteză medie Timp Timp Timp Descărcare curent Încărcare Total cheltuit Viteză stânga 100 199k 100 199k 0 0 58743 0 0:00:03 0:00:03 --:--:-- 58743 gaurav@ubuntu:~/workspace$ ls ath.html gaurav@ubuntu:~/workspace$ 

În acest exemplu, conținutul de la adresa URL „allthings.how” este salvat ca fișier HTML denumit ath.html în directorul meu de lucru actual. La deschiderea acestui fișier HTML, voi fi redirecționat către pagina web care este salvată.

Descărcarea fișierelor folosind comanda CURL

Folosind -O opțiunea cu comanda curl salvează, de asemenea, conținutul sau pagina web sau un pachet descărcabil ca fișier, dar salvează acest fișier cu numele său original.

Să vedem asta printr-un exemplu:

Exemplu:

Aici am folosit răsuci comanda cu -O opțiunea de a descărca un pachet Ubuntu numit „cherrytree_0.37.6-1.1_all.deb' din depozitul de pachete Ubuntu.

gaurav@ubuntu:~/workspace$ curl -O //kr.archive.ubuntu.com/ubuntu/pool/universe/c/cherrytree/cherrytree_0.37.6-1.1_all.deb % Total % primit % Xferd Viteză medie Timp Timp Descărcare curentă Încărcare Total cheltuit Viteză stânga 100 613k 100 613k 0 0 220k 0 0:00:02 0:00:02 --:--:-- 220k gaurav@ubuntu:~/workspace$

Ieșire:

trinity@ubuntu:~/workspace$ ls ath.html cherrytree_0.37.6-1.1_all.deb trinity@ubuntu:~/workspace$

Deci, pachetul este acum descărcat și salvat în directorul de lucru curent (CWD) cu numele său original.

Afișarea unei bare de progres în timp ce descărcați un fișier

Există încă o modificare estetică disponibilă în timpul utilizării răsuci comanda pentru a descărca un fișier. Puteți vedea progresul descărcării fișierului sub forma unei bare de progres pe terminalul dvs. Trebuie doar să atașați -# opțiunea cu comanda dvs. pentru a descărca un fișier.

Să vedem un exemplu al acestei modificări.

Sintaxă:

curl -# -O [URL]

Exemplu:

gaurav@ubuntu:~/workspace$ curl -# -O //archive.ubuntu.com/ubuntu/pool/main/e/emacs-defaults/emacs-defaults_47.0.tar.xz ####### #################################################################### #################################################################### ################################# 100,0% gaurav@ubuntu:~/workspace$ 

Ieșire:

gaurav@ubuntu:~/workspace$ ls ath.html cherrytree_0.37.6-1.1_all.deb emacs-defaults_47.0.tar.xz gaurav@ubuntu:~/workspace$ 

În această ieșire, puteți observa că am descărcat un pachet numit „emacs-defaults_47.0.tar.xz„ în CWD-ul meu și bara de progres este afișată în terminal în timp ce descărcarea era în curs.

Se reia descărcarea întreruptă în CURL

De multe ori, poate apărea o situație în care trebuie să descărcați fișiere de dimensiuni mai mari. Uneori, din cauza unor motive cum ar fi întreruperea alimentării sau a rețelei, descărcarea se poate întrerupe la mijlocul procesului fără a descărca fișierul complet. Chiar dacă apăsați Ctrl+C în terminal, procesul este întrerupt.

The răsuci comanda atunci când este utilizată cu -C opțiunea reia descărcarea întreruptă.

Sintaxă:

curl -C - -O [URL]

Exemplu:

În această ilustrație, am încercat să descarc imaginea ISO Ubuntu 20.04 de pe site-ul web Ubuntu.

gaurav@ubuntu:~/workspace$ curl -O //releases.ubuntu.com/20.04.1/ubuntu-20.04.1-desktop-amd64.iso?_ga=2.212264532.1184373179.16002509094911150090941115009094111500909411500909411500909411509094 Timp Timp Timp Descărcare curent Încărcare Total cheltuit Viteză rămasă 0 2656M 0 1744k 0 0 87038 0 8:53:17 0:00:20 8:52:57 77726^C

Aici, am întrerupt în mod deliberat procesul de descărcare prin Ctrl+C.

Acum voi folosi -C opțiunea cu răsuci comandă pentru a relua descărcarea întreruptă de pe același site web sursă.

Ieșire:

gaurav@ubuntu:~/workspace$ curl -C - -O //releases.ubuntu.com/20.04.1/ubuntu-20.04.1-desktop-amd64.iso?_ga=2.212264532.1184373179.1600024.1609179.1600024.150906 poziție octet 1851392 % Total % primit % Xferd Viteză medie Timp Timp Descărcare curent Încărcare Total consumat Viteză stânga 0 2654M 0 20.2M 0 0 57940 0 13:20:35 0:06:06 13:14:29 98278

Descărcarea a fost preluată de unde a fost anulată.

Descărcarea fișierelor de pe un server FTP utilizând CURL

Este destul de ușor cu răsuci comandă pentru a descărca un fișier de pe serverul FTP folosind -u opțiune. Trebuie să introduceți numele de utilizator și parola în comandă înainte de a introduce adresa URL.

Sintaxă:

curl -u [nume utilizator]:[parolă] [URL]

Pentru ilustrare, voi folosi un FTP public online.

Exemplu:

gaurav@ubuntu:~/workspace$ curl -O -u [email protected]:eUj8GeW55SvYaswqUyDSm5v6N ftp://ftp.dlptest.com/16-Sep-20-16-0-0.csv % Total % Media primită % Xferd Viteză Timp Timp Timp Descărcare curent Încărcare Total cheltuit Viteză rămasă 100 390 100 390 0 0 93 0 0:00:04 0:00:04 --:--:-- 93 gaurav@ubuntu:~/workspace$

Aici, am descărcat un fișier numit „16-Sep-20-16-0-0.csv’ de pe acest server ftp și l-am salvat cu numele său original în CWD-ul meu. Voi verifica fișierul descărcat folosind ls comanda.

gaurav@ubuntu:~/workspace$ ls -al total 1092 drwxrwxr-x 3 gaurav gaurav 4096 Sep 16 16:15 . drwxr-xr-x 87 gaurav gaurav 266240 Sep 16 10:22 .. -rw-r--r-- 1 gaurav gaurav 390 Sep 16 16:15 16-Sep-20-16-0-0.csv -rw- r--r-- 1 gaurav gaurav 204429 Sep 16 11:45 ath.html gaurav@ubuntu:~/workspace$

Descărcarea mai multor fișiere împreună folosind CURL

Descărcarea mai multor fișiere simultan folosind răsuci comanda este o sarcină foarte simplă. Doar folosești -O opțiunea cu răsuci comandă similară în modul în care am efectuat-o în blocurile de mai sus.

Sintaxă:

curl -O [URL-1] -O [URL-2] -O[URL-n]

Exemplu:

gaurav@ubuntu:~/workspace$ curl -O //archive.ubuntu.com/ubuntu/pool/universe/a/aegean/aegean_0.15.2+dfsg-1.debian.tar.xz -O //archive.ubuntu. com/ubuntu/pool/main/a/apache2/apache2_2.4.29.orig.tar.gz % Total % primit % Xferd Viteză medie Timp Timp Timp Descărcare curent Încărcare Total cheltuit Viteză rămasă 100 63500 100 63500 0 0 55458 0 0:00 :01 0:00:01 --:--:-- 55458 100 8436k 100 8436k 0 0 123k 0 0:01:08 0:01:08 --:--:-- 127k gaurav@ubuntu:~/workspace $ 

În acest exemplu, am descărcat două pachete diferite din depozitul Ubuntu.

Ieșire:

gaurav@ubuntu:~/workspace$ ls -al total 9596 drwxrwxr-x 3 gaurav gaurav 4096 Sep 16 16:28 . drwxr-xr-x 87 gaurav gaurav 266240 Sep 16 10:22 .. -rw-r--r-- 1 gaurav gaurav 390 Sep 16 16:15 16-Sep-20-16-0-0.csv -rw- r--r-- 1 gaurav gaurav 63500 Sep 16 16:28 aegean_0.15.2+dfsg-1.debian.tar.xz -rw-r--r-- 1 gaurav gaurav 8638793 Sep 16 16:29 apache2_2.4. orig.tar.gz -rw-r--r-- 1 gaurav gaurav 204429 Sep 16 11:45 ath.html gaurav@ubuntu:~/workspace$ 

Cele două pachete sunt descărcate în același timp folosind comanda curl.

Preluarea antetelor HTTP ale unei adrese URL cu CURL

Câmpurile Antete HTTP ale oricărei adrese URL conțin informații utile, cum ar fi agent de utilizator, tip de conținut, codificare etc. Aceste fișiere de antet oferă, de asemenea, informații despre obiectul trimis în corpul mesajului. Detalii despre cerere și răspuns sunt obținute și din aceste antete HTTP.

Poți să folosești răsuci comanda cu -Eu opțiunea de a obține aceste antete HTTP ale unei adrese URL.

Sintaxă:

curl -I [URL]

Exemplu:

gaurav@ubuntu:~/workspace$ curl -I www.firefox.com HTTP/1.1 200 OK Content-Type: text/html; charset=ISO-8859-1 P3P: CP="Aceasta nu este o politică P3P! Consultați g.co/p3phelp pentru mai multe informații." Data: miercuri, 16 septembrie 2020 11:17:00 GMT Server: gws X-XSS-Protecție: 0 X-Frame-Opțiuni: SAMEORIGIN Transfer-Encoding: chunked Expiră: miercuri, 16 septembrie 2020 11:17:00 GMT Cache- Control: Set-Cookie privat: 1P_JAR=2020-09-16-11; expiră=vineri, 16-oct-2020 11:17:00 GMT; cale=/; domain=.google.com; Secure Set-Cookie: NID = 204 = SpeHTVXkKYwe6uaKYLsPWmCA0A-sGb94c9jpbw067e7uhyeJnkap6TFEIESztwLOEst7KcDSBLgGrokh1EM2IZi2VPVzllH0tsvCu-QbKiunPoPJ6dD7oAnB7rxu30rAiO630vYm6SG1zbmGgxNEiB-adXp24h7iEoSq9WsjrGg; expiră=joi, 18-mar-2021 11:17:00 GMT; cale=/; domain=.google.com; HttpOnly gaurav@ubuntu:~/workspace$

În acest exemplu, am preluat anteturile HTTP ale „www.firefox.com‘.

Preluarea codului sursă C folosind CURL

Folosind răsuci comanda cu --libcurl opțiunea poate prelua codul sursă C. Acest lucru nu are o utilitate semnificativă pentru utilizatorii profani, dar se poate dovedi a fi foarte util pentru programatorii de sistem, analiștii de securitate și dezvoltatorii de aplicații.

Sintaxă:

curl [URL] > filename --libcurl [code_filename]

Exemplu:

În acest exemplu, am preluat conținutul adresei URL toate lucrurile.cum și l-a stocat într-un fișier numit gy_ath.html. Codul sursă C este stocat separat în sursa.c fişier.

curl //www.allthings.how > gy_ath.html --libcurl source.c 

Ieșire:

gaurav@ubuntu:~/workspace$ curl //www.allthings.how > gy_ath.html --libcurl source.c % Total % primit % Xferd Viteză medie Timp Timp Timp Descărcare curent Încărcare Total cheltuit Viteză stânga 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 gaurav@ubuntu:~/workspace$

Să verificăm acum fișierele descărcate.

gaurav@ubuntu:~/workspace$ ls -al total 404 drwxrwxr-x 3 gaurav gaurav 4096 Sep 16 17:08 . drwxr-xr-x 87 gaurav gaurav 266240 Sep 16 10:22 .. -rw-r--r-- 1 gaurav gaurav 0 Sep 16 17:13 gy_ath.html -rw-r--r-- 1 gaurav gaurav 1535 16 sept 17:13 source.c gaurav@ubuntu:~/workspace$

The sursa.c fișierul conține codul sursă. Acest lucru poate fi afișat pe terminal folosind pisică comanda. Am pus câteva linii de la ieșire în blocul de mai jos.

C sourcegaurav@ubuntu:~/workspace$ cat source.c /********* Exemplu de cod generat de instrumentul de linie de comandă curl ********** * Toate opțiunile curl_easy_setopt() sunt documentate la: * //curl.haxx.se/libcurl/c/curl_easy_setopt.html ******************************** ****************************************/ #include int main(int argc, char *argv[]) { CURLcode ret; CURL *hnd; hnd = curl_easy_init(); curl_easy_setopt(hnd, CURLOPT_BUFFERSIZE, 102400L); curl_easy_setopt(hnd, CURLOPT_URL, "//www.allthings.how"); curl_easy_setopt(hnd, CURLOPT_USERAGENT, "curl/7.58.0"); curl_easy_setopt(hnd, CURLOPT_MAXREDIRS, 50L);

Utilizarea unui proxy în CURL pentru a accesa o adresă URL

După cum sa discutat în introducere, răsuci comanda acceptă o gamă largă de protocoale, cum ar fi FTP, SMTP, HTTPS, SOCKS etc. Uneori, folosirea unui server proxy pentru transferul fișierelor devine importantă atunci când doriți să îmbunătățiți viteza transferului și, de asemenea, să vă protejați identitatea. răsuci comanda poate fi utilizată cu ușurință pentru a transfera fișiere pe serverul proxy prin adăugarea -X opțiune la acesta.

Exemplu:

curl -x [adresa_proxy]:[port] [URL]

În exemplul de mai sus, am presupus că proxy-ul dvs. nu necesită autentificare. În cazul în care proxy-ul necesită autentificare pentru a începe transferul, puteți utiliza următoarea comandă.

curl -u [nume utilizator]:[parolă] -x [adresă_proxy]:[port] [URL]

Folosind această metodă simplă, putem transfera fișiere printr-un server proxy cu opțiune -X folosit cu răsuci comanda.

Concluzie

În acest scurt tutorial, am învățat cum răsuci comanda se dovedește a fi utilă în descărcarea conținutului direct de pe terminalul dvs. Am aflat, de asemenea, despre diferitele opțiuni disponibile cu această comandă pentru a fi utilizată pentru diferite sarcini.