Kako uporabljati ukaz Curl v Linuxu

Obsežen vodnik, ki razlaga uporabo ukaza curl za pridobivanje spletnih strani in prenos datotek neposredno iz vašega terminala

The curl command je še en zanimiv pripomoček ukazne vrstice, ki vam ga ponuja Linux. curl ukaz omogoča uporabniku, da pridobi datoteke s strežnika.

curl je priljubljena izbira razvijalcev aplikacij in pogostih uporabnikov Linuxa zaradi podpore za številne protokole, kot so RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, HTTP, HTTPS, FTP, FTPS, IMAP, IMAPS, DICT, FILE, GOPHER, LDAP, LDAPS, POP3, POP3S itd.

curl ukaz naredi veliko več kot le pridobivanje spletnih strani namesto vas. Poznavanje možnosti, ki so na voljo s tem ukazom, ga naredi bolj vsestransko za vašo uporabo. Poglobimo se v vadnico, da dobro razumemo uporabo curl ukaz z nekaj kratkimi primeri.

Namestitev

Pred uporabo curl ukaz, preverite, ali je že nameščen v vašem sistemu. Uporabite ukaz curl --različica preveriti, če curl je nameščen.

V primeru če curl ni nameščen, uporabite naslednje korake.

V sistemih, ki temeljijo na Ubuntu in Debianu, uporaba:

sudo apt-pridobi posodobitev
sudo apt-get install curl

V distribucijah RHEL, CentOs in Fedora, uporaba:

sudo yum namestite curl

Zdaj uporabite curl --različica ukaz, da se prepričate, da je pravilno nameščen.

curl --različica

Izhod:

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.1) ng02/ 0 librtmp/2.3 Datum izdaje: 24.01.2018 Protokoli: dict datoteka ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp smb smbs smtp smtps telnet tftp telnet tftp Lastnosti: AsynchNTBSLNtp IDN AsynchNTBSLNLM SPErge IPBSS6NT. libz TLS-SRP HTTP2 UnixSockets HTTPS-proxy PSL gaurav@ubuntu:~$ 

Zdaj smo pripravljeni za uporabo curl ukaz.

Možnosti, ki so na voljo z ukazom CURL

Najprej si oglejmo nekaj pomembnih možnosti, ki so na voljo z curl ukaz.

MožnostOpis
-uza prenos datotek s strežnika FTP
-Cza nadaljevanje prekinjenega prenosa
-oda shranite rezultat curl ukaz z vnaprej določenim imenom datoteke
-JAZda dobite glave HTTP določenega URL-ja
-Oda shranite rezultat curl ukaz z izvirnim imenom datoteke
--libcurlza izpis izvorne kode C, ki jo uporablja libcurl za določeno možnost
-xza uporabo proxyja za dostop do URL-ja
-#za prikaz vrstice napredka za prikaz stanja prenosa

Pridobivanje spletne strani z uporabo CURL

The curl ukaz, kadar se uporablja brez možnosti, pridobi vsebino URL-ja, določenega v ukazu.

sintaksa:

curl [URL]

Primer:

curl //allthings.how

Izhod:

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 ;position:absolute!important}html.i-amphtml-ios-embed{overflow-y:auto!important;position:static}#i-amphtml-wrapper{overflow-x:hidden!important;over flow-y:auto!pomembno;položaj:absolutno!pomembno;vrh:0!pomembno;levo:0!pomembno;desno:0!pomembno;spodaj:0!pomembno;rob:0!pomembno;prikaz:blok!pomembno} html.i-amphtml-ios-embed.i-amphtml-ios-overscroll,html.i-amphtml-ios-embed.i-amphtml-ios-overscroll>#i-amphtml-wrapper{-webkit-overflow-scrolling: touch!important}#i-amphtml-wrapper>body{position:relative!important;border-top:1px solid transparent!important}#i-amphtml-wrapper+body{visibility:visible}#i-amphtml-wrapper+body .i-amphtml-lightbox-element,#i-amphtml-wrapper+body[i-amphtml-lightbox]{visibility:hidden}#i-amphtml-wrapper+body[i-amphtml-lightbox] .i-amphtml-lightbox -element{visibility: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}[naročnine -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;desno: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 [naloži-več] [gumb za nalaganje več], seznam ojačev[naloži-več] [naloži-več-konec], seznam ojačev[naloži-več] [naloži-več-neuspešno], seznam ojačev[naloži -več] [load-more-loading]{display:none}amp-list[diffable] div[role=list]{display:block}amp-story-page,amp-story[samostojno]{min-height:1px !pomembno;zaslon:blok!pomembno;višina:100%!pomembno;margin:0!pomembno;padding:0!pomembno;preliv:hidden!important;width:100%!pomembno}amp-story[samostojno]{background- barva:#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([distance]):not([active]){transform:translateY(1000vh)!important }amp-samodokončanje{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]{visibility:hidden} amp-script[nodom]{position:fixed!important;top:0!important;width:1px!important;height:1px!important;overflow:hidden!important;visibility:hidden} 

Tukaj se vsebina spletne strani prenese neposredno na vaš terminal kot izvorna koda.

Uporabite lahko možnosti -o in -O z curl ukaz za shranjevanje te vsebine v datoteko.

Kdaj -o če se uporabi možnost, se vsebina URL-ja shrani v vaš trenutni imenik z uporabniško določenim imenom datoteke.

sintaksa:

curl -o [userdefined_filename] [URL]

Primer:

gaurav@ubuntu:~/workspace$ curl -o ath.html //allthings.how % Skupno % prejetih % Xferd Povprečna Hitrost Čas Čas Čas Trenutni prenos Prenos Skupna porabljena Leva Hitrost 100 199k 100 199k 0 0 58743 0 0:00:03 0:00:03 --:--:-- 58743 gaurav@ubuntu:~/workspace$ ls ath.html gaurav@ubuntu:~/workspace$ 

V tem primeru je vsebina iz URL-ja 'allthings.how' shranjena kot datoteka HTML z imenom ath.html v mojem trenutnem delovnem imeniku. Ko odprem to datoteko HTML, bom preusmerjen na spletno stran, ki je shranjena.

Prenos datotek z ukazom CURL

Uporabljati -O možnost z ukazom curl shrani tudi vsebino ali spletno stran ali naložljiv paket kot datoteko, vendar to datoteko shrani z izvirnim imenom.

Poglejmo si to skozi primer:

Primer:

Tukaj sem uporabil curl ukaz z -O možnost prenosa paketa Ubuntu z imenom 'cherrytree_0.37.6-1.1_all.deb« iz skladišča paketov Ubuntu.

gaurav@ubuntu:~/workspace$ curl -O //kr.archive.ubuntu.com/ubuntu/pool/universe/c/cherrytree/cherrytree_0.37.6-1.1_all.deb % Skupni % prejetih % Xferd Povprečna hitrost Čas Čas Čas Trenutni prenos Prenos Skupna porabljena preostala hitrost 100 613k 100 613k 0 0 220k 0 0:00:02 0:00:02 --:--:-- 220k gaurav@ubuntu:~/workspace$

Izhod:

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

Tako je paket zdaj prenesen in shranjen v trenutni delovni imenik (CWD) s svojim izvirnim imenom.

Prikaz vrstice napredka med prenosom datoteke

Med uporabo je na voljo še ena estetska modifikacija curl ukaz za prenos datoteke. Potek prenosa datoteke si lahko ogledate v obliki vrstice napredka na vašem terminalu. Samo dodati morate -# možnost z vašim ukazom za prenos datoteke.

Oglejmo si primer te nastavitve.

sintaksa:

curl -# -O [URL]

Primer:

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$ 

Izhod:

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

V tem izpisu lahko opazite, da sem prenesel paket z imenom 'emacs-defaults_47.0.tar.xz« v mojem CWD in vrstica napredka je prikazana v terminalu, medtem ko je bil prenos v teku.

Nadaljevanje prekinjenega prenosa v CURL

Velikokrat se lahko zgodi, da boste morali prenesti datoteke večje velikosti. Včasih se lahko zaradi nekaterih razlogov, kot sta izpad električne energije ali okvara omrežja, prenos prekine med postopkom, ne da bi prenesli celotno datoteko. Tudi če pritisnete Ctrl+C v terminalu se postopek prekine.

The curl ukaz, ko se uporablja z -C možnost nadaljuje prekinjen prenos.

sintaksa:

curl -C - -O [URL]

Primer:

Na tej ilustraciji sem poskušal prenesti sliko Ubuntu 20.04 ISO s spletnega mesta Ubuntu.

gaurav@ubuntu:~/workspace$ curl -O //releases.ubuntu.com/20.04.1/ubuntu-20.04.1-desktop-amd64.iso?_ga=2.212264532.1184373179.160025072.1184373179.160025072.160025072.1600250725 %1600250725 %1600250725 %250920 %250925 %14092000000% Čas Čas Čas Trenutni prenos Nalaganje Skupna porabljena leva hitrost 0 2656M 0 1744k 0 0 87038 0 8:53:17 0:00:20 8:52:57 77726^C

Tukaj sem namerno prekinil postopek prenosa Ctrl+C.

Zdaj bom uporabil -C možnost z curl ukaz za nadaljevanje prekinjenega prenosa z istega izvornega spletnega mesta.

Izhod:

gaurav@ubuntu:~/workspace$ curl -C - -O //releases.ubuntu.com/20.04.1/ubuntu-20.04.1-desktop-amd64.iso?_ga=2.212264532.1184373179.1600240 Resming** od 160264532.1184373179.1602-1750 položaj bajta 1851392 % Skupni % prejeti % Xferd Povprečna Hitrost Čas Čas Čas Trenutni Dload Nalaganje Skupna porabljena Leva Hitrost 0 2654M 0 20,2M 0 0 57940 0 13:20:35 0:06:06 13:14:28

Prenos je bil prevzet od mesta, kjer je bil prekinjen.

Prenos datotek s strežnika FTP s pomočjo CURL

Z curl ukaz za prenos datoteke s strežnika FTP z uporabo -u možnost. Preden vnesete URL, morate v ukaz vnesti uporabniško ime in geslo.

sintaksa:

curl -u [uporabniško ime]:[geslo] [URL]

Za ilustracijo bom uporabil spletni javni FTP.

Primer:

gaurav@ubuntu:~/workspace$ curl -O -u [email protected]:eUj8GeW55SvYaswqUyDSm5v6N ftp://ftp.dlptest.com/16-Sep-20-16-0-0.csv % Skupni % prejetih % Xfer Hitrost Čas Čas Čas Trenutni prenos Nalaganje Skupna porabljena preostala hitrost 100 390 100 390 0 0 93 0 0:00:04 0:00:04 --:--:-- 93 gaurav@ubuntu:~/workspace$

Tukaj sem prenesel datoteko z imenom '16-Sep-20-16-0-0.csv' s tega ftp strežnika in ga shranil z izvirnim imenom v moj CWD. Preneseno datoteko bom preveril z ls ukaz.

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

Prenos več datotek skupaj z uporabo CURL

Prenos več datotek hkrati z uporabo curl ukaz je zelo preprosta naloga. Uporabljate samo -O možnost z curl ukaz, podoben na način, kot smo ga izvedli v zgornjih blokih.

sintaksa:

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

Primer:

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 % Skupni % prejeti % Xferd Povprečna hitrost Čas Čas Trenutni Dload Nalaganje Skupna porabljena Leva Hitrost 100 63500 100 63500 0 0 05 0 0 0 5 :01 0:00:01 --:--:-- 55458 100 8436k 100 8436k 0 0 123k 0 0:01:08 0:01:08 --:--:-- 127k gaurav@ubuntu:~/workspace $ 

V tem primeru sem prenesel dva različna paketa iz skladišča Ubuntu.

Izhod:

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

Oba paketa se preneseta hkrati z ukazom curl.

Pridobivanje glav HTTP URL-ja s CURL

Polja glave HTTP katerega koli URL-ja vsebujejo uporabne informacije, kot so uporabniški agent, vrsta vsebine, kodiranje itd. Te datoteke z glavo zagotavljajo tudi informacije o predmetu, poslanem v telesu sporočila. Podrobnosti o zahtevi in ​​odgovoru so prav tako pridobljene iz teh glav HTTP.

Lahko uporabiš curl ukaz z -JAZ možnost za pridobitev teh glav HTTP URL-ja.

sintaksa:

curl -I [URL]

Primer:

gaurav@ubuntu:~/workspace$ curl -I www.firefox.com HTTP/1.1 200 OK Vrsta vsebine: besedilo/html; charset=ISO-8859-1 P3P: CP="To ni pravilnik P3P! Za več informacij glejte g.co/p3phelp." Datum: sreda, 16. september 2020 11:17:00 GMT Strežnik: gws X-XSS-Protection: 0 X-Frame-Možnosti: SAMEORIGIN Transfer-Encoding: chunked Poteče: sre, 16. september 2020 11:17:00 GMT Cache- Nadzor: zasebni Set-Cookie: 1P_JAR=2020-09-16-11; expires=Pe, 16. oktober 2020 11:17:00 GMT; pot=/; domain=.google.com; Secure Set-Cookie: NID = 204 = SpeHTVXkKYwe6uaKYLsPWmCA0A-sGb94c9jpbw067e7uhyeJnkap6TFEIESztwLOEst7KcDSBLgGrokh1EM2IZi2VPVzllH0tsvCu-QbKiunPoPJ6dD7oAnB7rxu30rAiO630vYm6SG1zbmGgxNEiB-adXp24h7iEoSq9WsjrGg; expires=čet, 18. marec 2021 11:17:00 GMT; pot=/; domain=.google.com; HttpSamo gaurav@ubuntu:~/workspace$

V tem primeru sem pridobil glave HTTP za 'www.firefox.com‘.

Pridobivanje C-izvorne kode z uporabo CURL

Uporaba curl ukaz z --libcurl možnost lahko pridobi izvorno kodo C. To nima pomembne koristi za laične uporabnike, vendar se lahko izkaže za zelo koristno za sistemske programerje, varnostne analitike in razvijalce aplikacij.

sintaksa:

curl [URL] > ime datoteke --libcurl [ime_datoteke]

Primer:

V tem primeru sem pridobil vsebino URL-ja vse stvari.kako in ga shranil v datoteko z imenom gy_ath.html. Izvorna koda C je ločeno shranjena v vir.c mapa.

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

Izhod:

gaurav@ubuntu:~/workspace$ curl //www.allthings.how > gy_ath.html --libcurl source.c % Skupni % prejetih % Xferd Povprečna hitrost Čas Čas Čas Trenutni prenos Nalaganje Skupna porabljena Leva hitrost 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 gaurav@ubuntu:~/workspace$

Zdaj pa preverimo prenesene datoteke.

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

The vir.c datoteka vsebuje izvorno kodo. To je mogoče prikazati na terminalu s pomočjo mačka ukaz. V spodnji blok sem dal nekaj vrstic iz izhoda.

C sourcegaurav@ubuntu:~/workspace$ cat source.c /********* Vzorčna koda, ki jo je ustvarilo orodje ukazne vrstice curl ********** * Vse možnosti curl_easy_setopt() so dokumentirane na: * //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);

Uporaba proxyja v CURL za dostop do URL-ja

Kot je bilo razloženo v uvodu, curl ukaz podpira širok nabor protokolov, kot so FTP, SMTP, HTTPS, SOCKS itd. Včasih postane uporaba proxy strežnika za prenos datotek pomembna, če želite povečati hitrost prenosa in zaščititi svojo identiteto. curl ukaz je mogoče enostavno uporabiti za prenos datotek prek strežnika proxy tako, da dodate datoteko -x možnost za to.

Primer:

curl -x [naslov_proxy]:[vrata] [URL]

V zgornjem primeru sem domneval, da vaš proxy ne zahteva preverjanja pristnosti. V primeru, da proxy zahteva avtentikacijo za začetek prenosa, lahko uporabite naslednji ukaz.

curl -u [uporabniško ime]:[geslo] -x [naslov_proxy]:[vrata] [URL]

S to preprosto metodo lahko prenašamo datoteke preko proxy strežnika z možnostjo -x uporablja z curl ukaz.

Zaključek

V tej kratki vadnici smo se naučili, kako curl ukaz se izkaže za koristen pri prenosu vsebine neposredno z vašega terminala. Spoznali smo tudi različne možnosti, ki so na voljo s tem ukazom za različna opravila.