En omfattande guide som förklarar användningen av curl-kommandot för att hämta webbsidor och ladda ner filer direkt från din terminal
De ringla
kommando är ytterligare ett intressant kommandoradsverktyg som Linux har att erbjuda dig. ringla
kommandot låter användaren hämta filer från servern.
ringla
är ett populärt val bland applikationsutvecklare och frekventa Linux-användare på grund av dess stöd för ett antal protokoll som RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, HTTP, HTTPS, FTP, FTPS, IMAP, IMAPS, DICT, FILE, GOPHER, LDAP, LDAPS, POP3, POP3S, etc.
ringla
kommandot gör mycket mer än att bara hämta webbsidorna åt dig. Att känna till de tillgängliga alternativen med detta kommando gör det mer mångsidigt för din användning. Låt oss dyka in i handledningen för att få ett bra grepp om användningen av ringla
kommandot med några korta exempel.
Installation
Innan du använder ringla
kommandot, kontrollera om det redan är installerat på ditt system. Använd kommandot curl --version
för att kontrollera om ringla
är installerad.
I fall om ringla
inte är installerat, använd följande steg.
På Ubuntu- och Debianbaserade system, använda sig av:
sudo apt-get uppdatering
sudo apt-get install curl
På RHEL, CentOs och Fedora distros, använda sig av:
sudo yum install curl
Använd nu curl --version
kommandot för att se till att det är korrekt installerat.
curl --version
Produktion:
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) ng.http2/1.30 0 librtmp/2.3 Utgivningsdatum: 2018-01-24 Protokoll: dict-fil ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp smb smbs smtp smtps telnet tftp Funktioner: AsynchDNS IDN_SPMsVNTB IDN_SPLMossnt-filne-Idn_sml libz TLS-SRP HTTP2 UnixSockets HTTPS-proxy PSL gaurav@ubuntu:~$
Nu är vi redo att använda ringla
kommando.
Alternativ tillgängliga med kommandot CURL
Låt oss först ta en titt på några av de framträdande alternativen som finns tillgängliga med ringla
kommando.
Alternativ | Beskrivning |
-u | för att ladda ner filer från en FTP-server |
-C | för att återuppta en avbruten nedladdning |
-o | för att spara resultatet av ringla kommando med ett fördefinierat filnamn |
-Jag | för att hämta HTTP-rubriker för en definierad URL |
-O | för att spara resultatet av ringla kommandot med det ursprungliga filnamnet |
--libcurl | för att mata ut C-källkoden som använder libcurl för det angivna alternativet |
-x | att använda en proxy för att komma åt URL:en |
-# | för att visa förloppsindikatorn för att visa nedladdningsstatus |
Hämta en webbsida med CURL
De ringla
kommando, när det används utan något alternativ, hämtar innehållet i den URL som anges i kommandot.
Syntax:
curl [URL]
Exempel:
curl //allthings.how
Produktion:
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!viktigt;position:absolut!viktigt;top:0!viktigt;vänster:0!viktigt;höger:0!viktigt;botten:0!viktigt;marginal:0!viktigt;display:block!viktigt} 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}[prenumerationer -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 [ladda-mer] [ladda-mer-knapp],förstärkare-lista[ladda-mer] [ladda-mer-slut],förstärkare-lista[ladda-mer] [ladda-mer-misslyckades],förstärkare-lista[ladda -more] [load-more-loading]{display:none}amp-list[diffable] div[role=list]{display:block}amp-story-page,amp-story[fristående]{min-height:1px !important;display:block!important;height:100%!important;margin:0!important;padding:0!important;overflow:hidden!important;width:100%!important}amp-story[fristående]{bakgrund- 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([distance]):not([active]){transform:translateY(1000vh)!viktigt }amp-autocomplete{position:relative!important;display:inline-block!important}amp-autocomplete>ingång,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}
Här hämtas webbsidans innehåll direkt till din terminal som källkod.
Du kan använda alternativ -o
och -O
med ringla
kommando för att lagra detta innehåll i en fil.
När -o
alternativet används, sparas innehållet i URL:en i din nuvarande katalog med ett användardefinierat filnamn.
Syntax:
curl -o [användardefinierat_filnamn] [URL]
Exempel:
gaurav@ubuntu:~/workspace$ curl -o ath.html //allthings.how % Totalt % Mottaget % Xferd Medelhastighet Tid Tid Tid Aktuell Ladda uppladdning Totalt förbrukad vänsterhastighet 100 199k 100 199k 0 0 58743 0 0:00:03 0:00:03 --:--:-- 58743 gaurav@ubuntu:~/workspace$ ls ath.html gaurav@ubuntu:~/workspace$
I det här exemplet sparas innehållet från URL:en 'allthings.how' som en HTML-fil med namnet ath.html i min nuvarande arbetskatalog. När jag öppnar den här HTML-filen omdirigeras jag till webbsidan som sparas.
Ladda ner filer med kommandot CURL
Använda -O
alternativet med curl-kommandot sparar också innehållet eller webbsidan eller ett nedladdningsbart paket som en fil men sparar denna fil med sitt ursprungliga namn.
Låt oss se detta genom ett exempel:
Exempel:
Här har jag använt ringla
kommando med -O
möjlighet att ladda ner ett Ubuntu-paket med namnet 'cherrytree_0.37.6-1.1_all.deb' från Ubuntu-paketförrådet.
gaurav@ubuntu:~/workspace$ curl -O //kr.archive.ubuntu.com/ubuntu/pool/universe/c/cherrytree/cherrytree_0.37.6-1.1_all.deb % Totalt % Mottaget % Xferd Medelhastighet Tid Tid Tid Tid Aktuell uppladdningsuppladdning Totalt förbrukad vänsterhastighet 100 613k 100 613k 0 0 220k 0 0:00:02 0:00:02 --:--:-- 220k gaurav@ubuntu:~/workspace$
Produktion:
trinity@ubuntu:~/workspace$ ls ath.html cherrytree_0.37.6-1.1_all.deb trinity@ubuntu:~/workspace$
Så, paketet är nu nedladdat och sparat i den aktuella arbetskatalogen (CWD) med dess ursprungliga namn.
Visar en förloppsindikator när en fil laddas ner
Det finns ytterligare en estetisk modifiering tillgänglig när du använder ringla
kommando för att ladda ner en fil. Du kan se förloppet för din filnedladdning i form av en förloppsindikator på din terminal. Du behöver bara lägga till -#
alternativet med ditt kommando för att ladda ner en fil.
Låt oss se ett exempel på denna tweak.
Syntax:
curl -# -O [URL]
Exempel:
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$
Produktion:
gaurav@ubuntu:~/workspace$ ls ath.html cherrytree_0.37.6-1.1_all.deb emacs-defaults_47.0.tar.xz gaurav@ubuntu:~/workspace$
I den här utgången kan du se att jag har laddat ner ett paket som heter 'emacs-defaults_47.0.tar.xz' i min CWD och förloppsindikatorn visas i terminalen medan nedladdningen pågick.
Återupptar avbruten nedladdning i CURL
Många gånger kan det uppstå en situation där du måste ladda ner filer av större storlek. Ibland på grund av vissa orsaker som strömavbrott eller nätverksfel kan nedladdningen avbrytas mitt i processen utan att ladda ner hela filen. Även om du trycker på Ctrl+C
i terminalen avbryts processen.
De ringla
kommando när det används med -C
alternativet återupptar den avbrutna nedladdningen.
Syntax:
curl -C - -O [URL]
Exempel:
I den här illustrationen har jag försökt ladda ner Ubuntu 20.04 ISO-bild från Ubuntus webbplats.
gaurav@ubuntu:~/workspace$ curl -O //releases.ubuntu.com/20.04.1/ubuntu-20.04.1-desktop-amd64.iso?_ga=2.212264532.1184373179.1600250702-% Reced1404 % Reced14094 % Reced14094 % Reced14095 % Reced1 Tid Tid Tid Aktuell Ladda upp Ladda upp Totalt använd vänster hastighet 0 2656M 0 1744k 0 0 87038 0 8:53:17 0:00:20 8:52:57 77726^C
Här avbröt jag medvetet nedladdningsprocessen genom att Ctrl+C
.
Nu ska jag använda -C
alternativet med ringla
kommandot för att återuppta den avbrutna nedladdningen från samma källwebbplats.
Produktion:
gaurav@ubuntu:~/workspace$ curl -C - -O //releases.ubuntu.com/20.04.1/ubuntu-20.04.1-desktop-amd64.iso?_ga=2.212264532.1184373179.160202509 överföring 4602-461409 Res**461409 överföring byte position 1851392 % Totalt % Mottaget % Xferd Genomsnittlig hastighet Tid Tid Tid Aktuell Ladda uppladdning Totalt förbrukad vänsterhastighet 0 2654M 0 20,2M 0 0 57940 0 13:20:35 0:06:06 13:14:29 9:14:29
Nedladdningen har hämtats där den avbröts.
Ladda ner filer från en FTP-server med CURL
Det är ganska enkelt med ringla
kommandot för att ladda ner en fil från FTP-servern med hjälp av -u
alternativ. Du måste ange användarnamn och lösenord i kommandot innan du anger URL:en.
Syntax:
curl -u [användarnamn]:[lösenord] [URL]
Som illustration kommer jag att använda en offentlig FTP online.
Exempel:
gaurav@ubuntu:~/workspace$ curl -O -u [email protected]:eUj8GeW55SvYaswqUyDSm5v6N ftp://ftp.dlptest.com/16-Sep-20-16-0-0.csv % Totalt % Mottaget % Xferd Average Hastighet Tid Tid Tid Aktuell Ladda Uppladdning Totalt förbrukad vänster Hastighet 100 390 100 390 0 0 93 0 0:00:04 0:00:04 --:--:-- 93 gaurav@ubuntu:~/workspace$
Här har jag laddat ner en fil som heter '16-sep-20-16-0-0.csv' från denna ftp-server och sparade den med sitt ursprungliga namn i min CWD. Jag kontrollerar den nedladdade filen med hjälp av ls
kommando.
gaurav@ubuntu:~/workspace$ ls -al totalt 1092 drwxrwxr-x 3 gaurav gaurav 4096 16 sep 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 16 sep 11:45 ath.html gaurav@ubuntu:~/workspace$
Ladda ner flera filer tillsammans med CURL
Ladda ner flera filer samtidigt med hjälp av ringla
kommando är en mycket enkel uppgift. Du använder bara -O
alternativet med ringla
kommando liknande det sätt vi har utfört i ovanstående block.
Syntax:
curl -O [URL-1] -O [URL-2] -O[URL-n]
Exempel:
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 % Totalt % Mottaget % Xferd Medelhastighet Tid Tid Tid Aktuell Ladda uppladdning Totalt förbrukad vänsterhastighet 100 63500 100 63500 0 0 55458 0 :01 0:00:01 --:--:-- 55458 100 8436k 100 8436k 0 0 123k 0 0:01:08 0:01:08 --:--:-- 127k gaurav@ubuntu:~/workspace $
I det här exemplet har jag laddat ner två olika paket från Ubuntu-förvaret.
Produktion:
gaurav@ubuntu:~/workspace$ ls -al totalt 9596 drwxrwxr-x 3 gaurav gaurav 4096 16 sep 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 ap.29 ap.29.ache. orig.tar.gz -rw-r--r-- 1 gaurav gaurav 204429 16 sep 11:45 ath.html gaurav@ubuntu:~/workspace$
De två paketen laddas ner samtidigt med curl-kommandot.
Hämtar HTTP-rubriker för en URL med CURL
HTTP Headers-fält för alla URL-adresser innehåller användbar information som användaragent, innehållstyp, kodning, etc. Dessa rubrikfiler ger också information om objektet som skickas i meddelandetexten. Detaljer om begäran och svaret erhålls också från dessa HTTP-rubriker.
Du kan använda ringla
kommando med -Jag
alternativet för att få dessa HTTP-rubriker för en URL.
Syntax:
curl -I [URL]
Exempel:
gaurav@ubuntu:~/workspace$ curl -I www.firefox.com HTTP/1.1 200 OK Content-Type: text/html; charset=ISO-8859-1 P3P: CP="Detta är inte en P3P-policy! Se g.co/p3phelp för mer information." Datum: ons, 16 sep 2020 11:17:00 GMT Server: gws X-XSS-skydd: 0 X-Frame-Alternativ: SAMEORIGIN Överföringskodning: chunked Upphör att gälla: ons, 16 sep 2020 11:17:00 GMT Cache Kontroll: privat Set-Cookie: 1P_JAR=2020-09-16-11; expires=fre, 16-okt-2020 11:17:00 GMT; sökväg=/; domain=.google.com; Secure Set-Cookie: NID = 204 = SpeHTVXkKYwe6uaKYLsPWmCA0A-sGb94c9jpbw067e7uhyeJnkap6TFEIESztwLOEst7KcDSBLgGrokh1EM2IZi2VPVzllH0tsvCu-QbKiunPoPJ6dD7oAnB7rxu30rAiO630vYm6SG1zbmGgxNEiB-adXp24h7iEoSq9WsjrGg; expires=Tor, 18-Mar-2021 11:17:00 GMT; sökväg=/; domain=.google.com; HttpOnly gaurav@ubuntu:~/workspace$
I det här exemplet har jag hämtat HTTP-huvudena för 'www.firefox.com‘.
Hämtar C-källkod med CURL
Använder sig av ringla
kommandot med --libcurl
alternativet kan hämta C-källkoden. Detta har ingen större användning för lekmännen men kan visa sig vara till stor hjälp för systemprogrammerare, säkerhetsanalytiker och applikationsutvecklare.
Syntax:
curl [URL] > filnamn --libcurl [kodfilnamn]
Exempel:
I det här exemplet har jag hämtat innehållet i webbadressen allting.hur och lagrade den i en fil med namnet gy_ath.html. C-källkoden lagras separat i källa.c fil.
curl //www.allthings.how > gy_ath.html --libcurl source.c
Produktion:
gaurav@ubuntu:~/workspace$ curl //www.allthings.how > gy_ath.html --libcurl source.c % Totalt % Mottaget % Xferd Medelhastighet Tid Tid Tid Aktuell Ladda Uppladdning Totalt förbrukad vänsterhastighet 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 gaurav@ubuntu:~/workspace$
Låt oss nu kontrollera de nedladdade filerna.
gaurav@ubuntu:~/workspace$ ls -al totalt 404 drwxrwxr-x 3 gaurav gaurav 4096 16 sep 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 153 16 sep 17:13 source.c gaurav@ubuntu:~/workspace$
De källa.c filen innehåller källkoden. Detta kan visas på terminalen med hjälp av katt
kommando. Jag har lagt några rader från utgången i nedanstående block.
C sourcegaurav@ubuntu:~/workspace$ cat source.c /********* Exempelkod som genereras av kommandoradsverktyget curl ********** * Alla alternativ för curl_easy_setopt() är dokumenterade på: * //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);
Använda en proxy i CURL för att komma åt en URL
Som diskuterats i inledningen är ringla
kommandot stöder ett brett utbud av protokoll som FTP, SMTP, HTTPS, SOCKS etc. Ibland blir det viktigt att använda en proxyserver för att överföra filer när du vill öka hastigheten på din överföring och även skydda din identitet. ringla
kommandot kan enkelt användas för att överföra filer över proxyservern genom att lägga till -x
alternativet till det.
Exempel:
curl -x [proxyadress]:[port] [URL]
I exemplet ovan har jag antagit att din proxy inte kräver någon autentisering. Om proxyn kräver autentisering för att starta överföringen kan du använda följande kommando.
curl -u [användarnamn]:[lösenord] -x [proxyadress]:[port] [URL]
Med denna enkla metod kan vi överföra filer via en proxyserver med option -x
används med ringla
kommando.
Slutsats
I den här korta handledningen lärde vi oss hur ringla
kommandot visar sig vara användbart för att ladda ner innehåll direkt från din terminal. Vi lärde oss också om de olika alternativen som är tillgängliga med detta kommando för att användas för olika uppgifter.