En omfattende guide som forklarer bruken av curl-kommandoen for å hente nettsider og laste ned filer rett fra terminalen din
De krølle
kommando er enda et interessant kommandolinjeverktøy som Linux har å tilby deg. krølle
kommandoen lar brukeren hente filer fra serveren.
krølle
er et populært valg blant applikasjonsutviklere og hyppige Linux-brukere på grunn av støtten for en rekke protokoller som RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, HTTP, HTTPS, FTP, FTPS, IMAP, IMAPS, DICT, FILE, GOPHER, LDAP, LDAPS, POP3, POP3S, etc.
krølle
kommandoen gjør mye mer enn bare å hente nettsidene for deg. Å kjenne til alternativene som er tilgjengelige med denne kommandoen, gjør den mer allsidig for din bruk. La oss dykke ned i veiledningen for å få et godt grep om bruken av krølle
kommando ved å bruke noen korte eksempler.
Installasjon
Før du bruker krølle
kommando, sjekk om den allerede er installert på systemet ditt. Bruk kommandoen curl --versjon
for å sjekke om krølle
er installert.
I tilfelle hvis krølle
ikke er installert, bruk følgende trinn.
På Ubuntu og Debian-baserte systemer, bruk:
sudo apt-get oppdatering
sudo apt-get install curl
På RHEL, CentOs og Fedora distros, bruk:
sudo yum install curl
Bruk nå curl --versjon
kommandoen for å sikre at den er riktig installert.
curl --versjon
Produksjon:
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/13. 0 librtmp/2.3 Utgivelsesdato: 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 Funksjoner: AsynchDNS IDN SLMOSv6DNS IDN SLMOS VNTB IDN SLMOSSVNTB IDN libz TLS-SRP HTTP2 UnixSockets HTTPS-proxy PSL gaurav@ubuntu:~$
Nå er vi klare til å bruke krølle
kommando.
Alternativer tilgjengelig med CURL-kommandoen
La oss først ta et blikk på noen av de fremtredende alternativene som er tilgjengelige med krølle
kommando.
Alternativ | Beskrivelse |
-u | for å laste ned filer fra en FTP-server |
-C | for å gjenoppta en avbrutt nedlasting |
-o | for å lagre resultatet av krølle kommando med et forhåndsdefinert filnavn |
-JEG | for å få HTTP-hodene til en definert URL |
-O | for å lagre resultatet av krølle kommando med det opprinnelige filnavnet |
--libcurl | for å sende ut C-kildekoden som bruker libcurl for det angitte alternativet |
-x | å bruke en proxy for å få tilgang til URL-en |
-# | for å vise fremdriftslinjen for å vise nedlastingsstatus |
Henter en nettside med CURL
De krølle
kommando, når den brukes uten valg, henter innholdet i URL-en som er spesifisert i kommandoen.
Syntaks:
krølle [URL]
Eksempel:
krølle //allthings.how
Produksjon:
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!viktig;posisjon:absolutt!viktig;top:0!viktig;venstre:0!viktig;høyre:0!viktig;bunn:0!viktig;margin:0!viktig;display:blokk!viktig} 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{posisjon:fast;bakgrunnsfarge: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 [last-mer] [last-mer-knapp], forsterker-liste[last-mer] [last-mer-slutt], forsterker-liste[last-mer] [last-mer-mislykket], forsterker-liste[last -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;padding:0!important;overflow:hidden!important;width:100%!important}amp-historie[frittstående]{bakgrunn- 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)!viktig }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]{visibility:hidden} amp-script[nodom]{posisjon:fast!viktig;top:0!viktig;bredde:1px!viktig;høyde:1px!viktig;overflyt:skjult!viktig;synlighet:skjult}
Her hentes innholdet på nettsiden direkte til din terminal som kildekode.
Du kan bruke alternativer -o
og -O
med krølle
kommando for å lagre dette innholdet i en fil.
Når -o
alternativet brukes, lagres innholdet i URL-en i din nåværende katalog med et brukerdefinert filnavn.
Syntaks:
curl -o [brukerdefinert_filnavn] [URL]
Eksempel:
gaurav@ubuntu:~/workspace$ curl -o ath.html //allthings.how % Totalt % Mottatt % Xferd Gjennomsnittlig hastighet Tid Tid Tid Gjeldende Last Last opp Totalt brukt venstre hastighet 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 eksemplet lagres innholdet fra URL-en 'allthings.how' som en HTML-fil kalt ath.html i min nåværende arbeidskatalog. Når jeg åpner denne HTML-filen, blir jeg omdirigert til nettsiden som er lagret.
Laster ned filer med kommandoen CURL
Bruker -O
alternativet med curl-kommandoen lagrer også innholdet eller nettsiden eller en nedlastbar pakke som en fil, men lagrer denne filen med det opprinnelige navnet.
La oss se dette gjennom et eksempel:
Eksempel:
Her har jeg brukt krølle
kommando med -O
mulighet for å laste ned en Ubuntu-pakke kalt '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 % Totalt % Mottatt % Xferd Gjennomsnittlig hastighet Tid Tid Tid Gjeldende nedlastingsopplasting Totalt brukt venstre hastighet 100 613k 100 613k 0 0 220k 0 0:00:02 0:00:02 --:--:-- 220k gaurav@ubuntu:~/workspace$
Produksjon:
trinity@ubuntu:~/workspace$ ls ath.html cherrytree_0.37.6-1.1_all.deb trinity@ubuntu:~/workspace$
Så, pakken er nå lastet ned og lagret i gjeldende arbeidskatalog (CWD) med det opprinnelige navnet.
Vise en fremdriftslinje mens du laster ned en fil
Det er enda en estetisk modifikasjon tilgjengelig mens du bruker krølle
kommando for å laste ned en fil. Du kan se fremdriften for filnedlastingen din i form av en fremdriftslinje på terminalen din. Du trenger bare å legge til -#
alternativet med kommandoen for å laste ned en fil.
La oss se et eksempel på denne tilpasningen.
Syntaks:
krøll -# -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$
Produksjon:
gaurav@ubuntu:~/workspace$ ls ath.html cherrytree_0.37.6-1.1_all.deb emacs-defaults_47.0.tar.xz gaurav@ubuntu:~/workspace$
I denne utgangen kan du se at jeg har lastet ned en pakke som heter 'emacs-defaults_47.0.tar.xz' i min CWD og fremdriftslinjen vises i terminalen mens nedlastingen pågikk.
Gjenopptar avbrutt nedlasting i CURL
Mange ganger kan det oppstå en situasjon der du må laste ned filer av større størrelse. Noen ganger på grunn av noen årsaker som strømbrudd eller nettverksfeil, kan nedlastingen avbrytes midt i prosessen uten å laste ned hele filen. Selv om du trykker Ctrl+C
i terminalen blir prosessen avbrutt.
De krølle
kommandoen når den brukes med -C
alternativet gjenopptar den avbrutte nedlastingen.
Syntaks:
krøll -C - -O [URL]
Eksempel:
I denne illustrasjonen har jeg prøvd å laste ned Ubuntu 20.04 ISO-bilde fra Ubuntu-nettstedet.
gaurav@ubuntu:~/workspace$ curl -O //releases.ubuntu.com/20.04.1/ubuntu-20.04.1-desktop-amd64.iso?_ga=2.212264532.1184373179.1600250702-% Rest14094 % Avsl.194094 % Opps140940 % avs. Tid Tid Tid Gjeldende nedlasting Last opp Totalt brukt venstre hastighet 0 2656M 0 1744k 0 0 87038 0 8:53:17 0:00:20 8:52:57 77726^C
Her avbrøt jeg med vilje nedlastingsprosessen ved Ctrl+C
.
Nå skal jeg bruke -C
alternativet med krølle
kommandoen for å gjenoppta den avbrutte nedlastingen fra samme kildenettsted.
Produksjon:
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øring 1602-461409 overføring 1602-46109 overføring 1602-46109 byteposisjon 1851392 % Totalt % Mottatt % Xferd Gjennomsnittlig hastighet Tid Tid Tid Gjeldende Last opp Totalt brukt Venstrehastighet 0 2654M 0 20,2M 0 0 57940 0 13:20:35 0:06:06 13:14:29 9:14:29
Nedlastingen er hentet fra der den ble avbrutt.
Laster ned filer fra en FTP-server ved å bruke CURL
Det er ganske enkelt med krølle
kommandoen for å laste ned en fil fra FTP-serveren ved å bruke -u
alternativ. Du må legge inn brukernavn og passord i kommandoen før du skriver inn URL.
Syntaks:
curl -u [brukernavn]:[passord] [URL]
For illustrasjonen vil jeg bruke en offentlig FTP på nettet.
Eksempel:
gaurav@ubuntu:~/workspace$ curl -O -u [email protected]:eUj8GeW55SvYaswqUyDSm5v6N ftp://ftp.dlptest.com/16-Sep-20-16-0-0.csv % Total % Mottatt % Xferd Gjennomsnittlig Hastighet Tid Tid Tid Gjeldende Last opp Last opp Totalt brukt Venstre Hastighet 100 390 100 390 0 0 93 0 0:00:04 0:00:04 --:--:-- 93 gaurav@ubuntu:~/workspace$
Her har jeg lastet ned en fil som heter '16-sep-20-16-0-0.csv' fra denne ftp-serveren og lagret den med sitt opprinnelige navn i min CWD. Jeg sjekker den nedlastede filen ved å bruke 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. september 11:45 ath.html gaurav@ubuntu:~/workspace$
Laste ned flere filer sammen med CURL
Laste ned flere filer samtidig ved å bruke krølle
kommando er en veldig enkel oppgave. Du bruker bare -O
alternativet med krølle
kommando som ligner på måten vi har utført i blokkene ovenfor.
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 % Mottatt % Xferd Gjennomsnittlig hastighet Tid Tid Tid Gjeldende nedlasting Totalt brukt venstre hastighet 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 eksemplet har jeg lastet ned to forskjellige pakker fra Ubuntu-depotet.
Produksjon:
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 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.29.ache. orig.tar.gz -rw-r--r-- 1 gaurav gaurav 204429 16. september 11:45 ath.html gaurav@ubuntu:~/workspace$
De to pakkene lastes ned samtidig ved å bruke curl-kommandoen.
Henter HTTP-hoder til en URL med CURL
HTTP-header-felt for en hvilken som helst URL inneholder nyttig informasjon som brukeragent, innholdstype, koding osv. Disse headerfilene gir også informasjon om objektet som sendes i meldingsteksten. Detaljer om forespørselen og svaret er også hentet fra disse HTTP-hodene.
Du kan bruke krølle
kommando med -JEG
alternativet for å få disse HTTP-hodene til en URL.
Syntaks:
curl -I [URL]
Eksempel:
gaurav@ubuntu:~/workspace$ curl -I www.firefox.com HTTP/1.1 200 OK Content-Type: text/html; charset=ISO-8859-1 P3P: CP="Dette er ikke en P3P-policy! Se g.co/p3phelp for mer informasjon." Dato: ons, 16. september 2020 11:17:00 GMT Server: gws X-XSS-beskyttelse: 0 X-Frame-alternativer: SAMEORIGIN Overføringskoding: chunked Utløper: ons, 16. september 2020 11:17:00 GMT Cache Kontroll: privat Set-Cookie: 1P_JAR=2020-09-16-11; utløper=fre, 16. oktober 2020 11:17:00 GMT; bane=/; domain=.google.com; Sikre Set-Cookie: NID = 204 = SpeHTVXkKYwe6uaKYLsPWmCA0A-sGb94c9jpbw067e7uhyeJnkap6TFEIESztwLOEst7KcDSBLgGrokh1EM2IZi2VPVzllH0tsvCu-QbKiunPoPJ6dD7oAnB7rxu30rAiO630vYm6SG1zbmGgxNEiB-adXp24h7iEoSq9WsjrGg; utløper=tors, 18-mars-2021 11:17:00 GMT; bane=/; domain=.google.com; HttpOnly gaurav@ubuntu:~/workspace$
I dette eksemplet har jeg hentet HTTP-hodene til 'www.firefox.com‘.
Henter C-kildekode ved hjelp av CURL
Ved hjelp av krølle
kommando med --libcurl
alternativet kan hente C-kildekoden. Dette har ingen vesentlig nytte for lekmenn, men kan vise seg å være svært nyttig for systemprogrammerere, sikkerhetsanalytikere og applikasjonsutviklere.
Syntaks:
curl [URL] > filnavn --libcurl [kode_filnavn]
Eksempel:
I dette eksemplet har jeg hentet innholdet i URL-en alt. hvordan og lagret den 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
Produksjon:
gaurav@ubuntu:~/workspace$ curl //www.allthings.how > gy_ath.html --libcurl source.c % Totalt % Mottatt % Xferd Gjennomsnittlig hastighet Tid Tid Tid Gjeldende Last opp Last opp Totalt brukt venstre hastighet 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 gaurav@ubuntu:~/workspace$
La oss nå sjekke de nedlastede filene.
gaurav@ubuntu:~/workspace$ ls -al totalt 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$
De kilde.c filen inneholder kildekoden. Dette kan vises på terminalen ved hjelp av katt
kommando. Jeg har lagt inn noen få linjer fra utgangen i blokken nedenfor.
C sourcegaurav@ubuntu:~/workspace$ cat source.c /********* Eksempelkode generert av curl-kommandolinjeverktøyet ********** * Alle curl_easy_setopt()-alternativer er dokumentert 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);
Bruke en proxy i CURL for å få tilgang til en URL
Som diskutert i innledningen, krølle
kommandoen støtter et bredt spekter av protokoller som FTP, SMTP, HTTPS, SOCKS osv. Noen ganger blir det viktig å bruke en proxy-server for å overføre filer når du ønsker å øke hastigheten på overføringen og også beskytte identiteten din. krølle
kommandoen kan enkelt brukes til å overføre filer over proxy-serveren ved å legge til -x
mulighet til det.
Eksempel:
curl -x [proxy_address]:[port] [URL]
I eksemplet ovenfor har jeg antatt at proxyen din ikke krever noen autentisering. Hvis proxyen krever autentisering for å starte overføringen, kan du bruke følgende kommando.
curl -u [brukernavn]:[passord] -x [proxy_address]:[port] [URL]
Ved å bruke denne enkle metoden kan vi overføre filer via en proxy-server med opsjon -x
brukes med krølle
kommando.
Konklusjon
I denne korte opplæringen lærte vi hvordan krølle
kommando viser seg å være nyttig for å laste ned innhold direkte fra terminalen din. Vi lærte også om de forskjellige alternativene som er tilgjengelige med denne kommandoen som kan brukes til forskjellige oppgaver.