En omfattende guide, der forklarer brugen af curl-kommandoen til at hente websider og downloade filer direkte fra din terminal
Det krølle
kommando er endnu et interessant kommandolinjeværktøj, som Linux har at tilbyde dig. krølle
kommandoen giver brugeren mulighed for at hente filer fra serveren.
krølle
er et populært valg blandt applikationsudviklere og hyppige Linux-brugere på grund af dets understøttelse af en række protokoller som RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, HTTP, HTTPS, FTP, FTPS, IMAP, IMAPS, DICT, FILE, GOPHER, LDAP, LDAPS, POP3, POP3S osv.
krølle
kommando gør meget mere end blot at hente websiderne for dig. At kende de tilgængelige muligheder med denne kommando gør den mere alsidig til din brug. Lad os dykke ned i selvstudiet for at få et godt indblik i brugen af krølle
kommando ved hjælp af nogle korte eksempler.
Installation
Før du bruger krølle
kommando, skal du kontrollere, om den allerede er installeret på dit system. Brug kommandoen krølle --version
for at tjekke om krølle
er installeret.
I tilfælde af hvis krølle
ikke er installeret, skal du bruge følgende trin.
På Ubuntu- og Debian-baserede systemer, brug:
sudo apt-get opdatering
sudo apt-get install curl
På RHEL, CentOs og Fedora distros, brug:
sudo yum install curl
Brug nu krølle --version
kommando for at sikre, at den er korrekt installeret.
krølle --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 Udgivelsesdato: 2018-01-24 Protokoller: dict-fil ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp smb smbs smtp smtps telnet tftp Funktioner: SPLMosvDNS-Lyd. libz TLS-SRP HTTP2 UnixSockets HTTPS-proxy PSL gaurav@ubuntu:~$
Nu er vi klar til at bruge krølle
kommando.
Muligheder tilgængelige med CURL-kommandoen
Lad os først få et blik på nogle af de fremtrædende muligheder, der er tilgængelige med krølle
kommando.
Mulighed | Beskrivelse |
-u | at downloade filer fra en FTP-server |
-C | for at genoptage en afbrudt download |
-o | for at gemme resultatet af krølle kommando med et foruddefineret filnavn |
-JEG | for at få HTTP-headerne til en defineret URL |
-O | for at gemme resultatet af krølle kommando med det originale filnavn |
--libcurl | at udlæse den C-kildekode, der bruger libcurl for den angivne mulighed |
-x | at bruge en proxy til at få adgang til URL'en |
-# | for at vise statuslinjen for at vise downloadstatus |
Hentning af en webside ved hjælp af CURL
Det krølle
kommando, når den bruges uden nogen valgmulighed, henter indholdet af den URL, der er angivet i kommandoen.
Syntaks:
krølle [URL]
Eksempel:
krølle //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!important;position:absolut!important;top:0!important;venstre:0!important;højre:0!important;bund:0!important;margin:0!important;display:block!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: 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}[subscriptions -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 [indlæs-mere] [indlæs-mere-knap], forstærker-liste[indlæs-mere] [indlæs-mere-ende], forstærker-liste[indlæs-mere] [indlæs-mere-mislykkedes], forstærker-liste[indlæs -more] [load-more-loading]{display:none}amp-list[diffable] div[role=list]{display:block}amp-story-page,amp-story[standalone]{min-height:1px !important;display:block!important;height:100%!important;margin:0!important;polstring:0!important;overflow:hidden!important;width:100%!important}amp-story[standalone]{baggrund- color:#202125!important;position:relative!important}amp-story-page{background-color:#757575}amp-story .amp-active>div,amp-story .i-amphtm l-loader-baggrund{display:none!important}amp-story-page:not(:first-of-type):not([distance]):not([active]){transform:translateY(1000vh)!important }amp-autocomplete{position:relative!important;display:inline-block!important}amp-autocomplete>input,amp-autocomplete>tekstområde{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}
Her hentes indholdet af websiden direkte til din terminal som kildekode.
Du kan bruge muligheder -o
og -O
med krølle
kommando til at gemme dette indhold i en fil.
Hvornår -o
bruges, gemmes indholdet af URL'en i din nuværende mappe med et brugerdefineret filnavn.
Syntaks:
curl -o [brugerdefineret_filnavn] [URL]
Eksempel:
gaurav@ubuntu:~/workspace$ curl -o ath.html //allthings.how % Total % Modtaget % Xferd Gennemsnitlig hastighed Tid Tid Tid Aktuel Dload Upload Samlet brugt venstre hastighed 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 dette eksempel er indholdet fra URL'en 'allthings.how' gemt som en HTML-fil ved navn ath.html i min nuværende arbejdsmappe. Når jeg åbner denne HTML-fil, bliver jeg omdirigeret til den webside, der er gemt.
Downloader filer med kommandoen CURL
Bruger -O
mulighed med curl-kommandoen gemmer også indholdet eller websiden eller en pakke, der kan downloades, som en fil, men gemmer denne fil med dets originale navn.
Lad os se dette gennem et eksempel:
Eksempel:
Her har jeg brugt krølle
kommando med -O
mulighed for at downloade en Ubuntu-pakke med navnet 'cherrytree_0.37.6-1.1_all.deb' fra Ubuntu-pakkelageret.
gaurav@ubuntu:~/workspace$ curl -O //kr.archive.ubuntu.com/ubuntu/pool/universe/c/cherrytree/cherrytree_0.37.6-1.1_all.deb % Total % Modtaget % Xferd Gennemsnitlig hastighed Tid Tid Tid Tid Aktuel overførsel af upload Samlet brugt venstre hastighed 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å pakken er nu downloadet og gemt i den aktuelle arbejdsmappe (CWD) med dets originale navn.
Viser en statuslinje under download af en fil
Der er endnu en æstetisk modifikation tilgængelig, mens du bruger krølle
kommando for at downloade en fil. Du kan se status for din fildownload i form af en statuslinje på din terminal. Du skal blot tilføje -#
mulighed med din kommando for at downloade en fil.
Lad os se et eksempel på denne tweak.
Syntaks:
krølle -# -O [URL]
Eksempel:
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 dette output kan du se, at jeg har downloadet en pakke med navnet 'emacs-defaults_47.0.tar.xz' i min CWD, og statuslinjen vises i terminalen, mens downloadingen var i gang.
Genoptager afbrudt download i CURL
Mange gange kan der opstå en situation, hvor du skal downloade filer af større størrelse. Nogle gange på grund af nogle årsager som strømsvigt eller netværksfejl kan download afbrydes midt i processen uden at downloade hele filen. Også selvom du trykker på Ctrl+C
i terminalen bliver processen afbrudt.
Det krølle
kommando, når den bruges sammen med -C
mulighed genoptager den afbrudte download.
Syntaks:
krølle -C - -O [URL]
Eksempel:
I denne illustration har jeg forsøgt at downloade Ubuntu 20.04 ISO-billede fra Ubuntu-webstedet.
gaurav@ubuntu:~/workspace$ curl -O //releases.ubuntu.com/20.04.1/ubuntu-20.04.1-desktop-amd64.iso?_ga=2.212264532.1184373179.1600250709.1600250704 % Reced1404 % Rec14094 % Rec14094 % Rec14094 %16002509209 Tid Tid Tid Aktuel overførsel Upload Samlet brugt venstre hastighed 0 2656M 0 1744k 0 0 87038 0 8:53:17 0:00:20 8:52:57 77726^C
Her afbrød jeg bevidst downloadprocessen ved Ctrl+C
.
Nu vil jeg bruge -C
mulighed med krølle
kommando for at genoptage den afbrudte download fra det samme kildewebsted.
Produktion:
gaurav@ubuntu:~/workspace$ curl -C - -O //releases.ubuntu.com/20.04.1/ubuntu-20.04.1-desktop-amd64.iso?_ga=2.212264532.1184373179.1602025109 overførsel 1602-461409 fra 1602-46109160202509. byte position 1851392 % Total % Modtaget % Xferd Gennemsnitlig hastighed Tid Tid Tid Aktuel overførsel Upload Samlet brugt venstre hastighed 0 2654M 0 20,2M 0 0 57940 0 13:20:35 0:06:06 13:14:29 982:29
Downloaden er blevet hentet fra det sted, hvor den blev afbrudt.
Download af filer fra en FTP-server ved hjælp af CURL
Det er ret nemt med krølle
kommando for at downloade en fil fra FTP-serveren ved hjælp af -u
mulighed. Du skal indtaste brugernavn og adgangskode i kommandoen, før du indtaster URL'en.
Syntaks:
curl -u [brugernavn]:[adgangskode] [URL]
Til illustrationen vil jeg bruge en online offentlig FTP.
Eksempel:
gaurav@ubuntu:~/workspace$ curl -O -u [email protected]:eUj8GeW55SvYaswqUyDSm5v6N ftp://ftp.dlptest.com/16-Sep-20-16-0-0.csv % Total % Modtaget % Xferd Gennemsnit Hastighed Tid Tid Tid Aktuel Dload Upload Samlet brugt Venstre Hastighed 100 390 100 390 0 0 93 0 0:00:04 0:00:04 --:--:-- 93 gaurav@ubuntu:~/workspace$
Her har jeg downloadet en fil med navnet '16-sep-20-16-0-0.csv' fra denne ftp-server og gemte den med dets originale navn i min CWD. Jeg tjekker den downloadede fil ved hjælp af ls
kommando.
gaurav@ubuntu:~/workspace$ ls -al i alt 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 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$
Download af flere filer sammen ved hjælp af CURL
Download af flere filer på én gang ved hjælp af krølle
kommando er en meget enkel opgave. Du bruger bare -O
mulighed med krølle
kommando lignende på den måde, vi har udført i ovenstående blokke.
Syntaks:
curl -O [URL-1] -O [URL-2] -O[URL-n]
Eksempel:
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 % Modtaget % Xferd Gennemsnitlig hastighed Tid Tid Tid Aktuel overførsel Upload Samlet brugt venstre hastighed 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 dette eksempel har jeg downloadet to forskellige pakker fra Ubuntu-depotet.
Produktion:
gaurav@ubuntu:~/workspace$ ls -al i alt 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 gaurav 390 sep 16 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 ap.22.ache. orig.tar.gz -rw-r--r-- 1 gaurav gaurav 204429 16. sep 11:45 ath.html gaurav@ubuntu:~/workspace$
De to pakker downloades på samme tid ved hjælp af curl-kommandoen.
Henter HTTP-headere af en URL med CURL
HTTP-headers-felter for enhver URL indeholder nyttige oplysninger som brugeragent, indholdstype, kodning osv. Disse header-filer giver også information om det objekt, der sendes i meddelelsesteksten. Detaljer om anmodningen og svaret fås også fra disse HTTP-headere.
Du kan bruge krølle
kommando med -JEG
mulighed for at få disse HTTP-headere af en URL.
Syntaks:
krølle -I [URL]
Eksempel:
gaurav@ubuntu:~/workspace$ curl -I www.firefox.com HTTP/1.1 200 OK Indholdstype: text/html; charset=ISO-8859-1 P3P: CP="Dette er ikke en P3P-politik! Se g.co/p3phelp for mere info." Dato: ons, 16. sep. 2020 11:17:00 GMT Server: gws X-XSS-beskyttelse: 0 X-Frame-indstillinger: SAMEORIGIN Overførselskodning: chunked Udløber: ons, 16. sep. 2020 11:17:00 GMT Cache Kontrol: privat Set-Cookie: 1P_JAR=2020-09-16-11; udløber=fre, 16-okt-2020 11:17:00 GMT; sti=/; domæne=.google.com; Secure Set-Cookie: NID = 204 = SpeHTVXkKYwe6uaKYLsPWmCA0A-sGb94c9jpbw067e7uhyeJnkap6TFEIESztwLOEst7KcDSBLgGrokh1EM2IZi2VPVzllH0tsvCu-QbKiunPoPJ6dD7oAnB7rxu30rAiO630vYm6SG1zbmGgxNEiB-adXp24h7iEoSq9WsjrGg; udløber=tors, 18-mar-2021 11:17:00 GMT; sti=/; domæne=.google.com; HttpOnly gaurav@ubuntu:~/workspace$
I dette eksempel har jeg hentet HTTP-headerne af 'www.firefox.com‘.
Henter C-kildekode ved hjælp af CURL
Ved brug af krølle
kommando med --libcurl
mulighed kan hente C-kildekoden. Dette har ingen væsentlig brug for lægmandsbrugere, men kan vise sig at være meget nyttigt for systemprogrammører, sikkerhedsanalytikere og applikationsudviklere.
Syntaks:
curl [URL] > filnavn --libcurl [kode_filnavn]
Eksempel:
I dette eksempel har jeg hentet indholdet af URL'en alting.hvordan og gemte det i en fil med navnet gy_ath.html. C-kildekoden er separat lagret i kilde.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 % Total % Modtaget % Xferd Gennemsnitlig hastighed Tid Tid Tid Aktuel overførsel Upload Samlet brugt venstre hastighed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 gaurav@ubuntu:~/workspace$
Lad os nu tjekke de downloadede filer.
gaurav@ubuntu:~/workspace$ ls -al i alt 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 sep 16 17:13 gy_ath.html -rw-r--r-- 1 gaurav gaurav 153 16. sep 17:13 source.c gaurav@ubuntu:~/workspace$
Det kilde.c filen indeholder kildekoden. Dette kan vises på terminalen ved hjælp af kat
kommando. Jeg har sat et par linjer fra outputtet i nedenstående givne blok.
C sourcegaurav@ubuntu:~/workspace$ cat source.c /********* Eksempelkode genereret af curl-kommandolinjeværktøjet ********** * Alle curl_easy_setopt()-indstillinger er dokumenteret på: * //curl.haxx.se/libcurl/c/curl_easy_setopt.html *********************************** ****************************************/ #include int main(int argc, char *argv[]) { CURLcode ret; KRULLE *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);
Brug af en proxy i CURL for at få adgang til en URL
Som diskuteret i indledningen er krølle
kommandoen understøtter en lang række protokoller som FTP, SMTP, HTTPS, SOCKS osv. Nogle gange bliver det vigtigt at bruge en proxyserver til overførsel af filer, når du ønsker at øge hastigheden på din overførsel og også beskytte din identitet. krølle
kommandoen kan nemt bruges til at overføre filer over proxyserveren ved at tilføje -x
mulighed for det.
Eksempel:
curl -x [proxy_address]:[port] [URL]
I ovenstående eksempel har jeg antaget, at din proxy ikke kræver nogen godkendelse. Hvis proxyen kræver godkendelse for at starte overførslen, kan du bruge følgende kommando.
curl -u [brugernavn]:[adgangskode] -x [proxy_adresse]:[port] [URL]
Ved hjælp af denne enkle metode kan vi overføre filer via en proxyserver med mulighed -x
bruges sammen med krølle
kommando.
Konklusion
I denne korte tutorial lærte vi hvordan krølle
kommando viser sig at være nyttig til at downloade indhold direkte fra din terminal. Vi lærte også om de forskellige muligheder, der er tilgængelige med denne kommando, der kan bruges til forskellige opgaver.