Hvordan bruke Curl Command i Linux

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.

AlternativBeskrivelse
-ufor å laste ned filer fra en FTP-server
-Cfor å gjenoppta en avbrutt nedlasting
-ofor å lagre resultatet av krølle kommando med et forhåndsdefinert filnavn
-JEGfor å få HTTP-hodene til en definert URL
-Ofor å lagre resultatet av krølle kommando med det opprinnelige filnavnet
--libcurlfor å 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.