Curl Command gebruiken in Linux

Een uitgebreide gids met uitleg over het gebruik van de curl-opdracht om webpagina's op te halen en bestanden rechtstreeks vanaf uw terminal te downloaden

De krullen command is nog een interessant hulpprogramma voor de opdrachtregel dat Linux je te bieden heeft. krullen opdracht stelt de gebruiker in staat om bestanden van de server op te halen.

krullen is een populaire keuze van applicatieontwikkelaars en frequente Linux-gebruikers vanwege de ondersteuning voor een aantal protocollen zoals RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, HTTP, HTTPS, FTP, FTPS, IMAP, IMAPS, DICT, BESTAND, GOPHER, LDAP, LDAPS, POP3, POP3S, enz.

krullen command doet veel meer dan alleen de webpagina's voor u ophalen. Als u de beschikbare opties met deze opdracht kent, is deze veelzijdiger voor uw gebruik. Laten we in de tutorial duiken om een ​​goed begrip te krijgen van het gebruik van de krullen commando aan de hand van enkele korte voorbeelden.

Installatie

Voordat u de krullen commando, controleer of het al op uw systeem is geïnstalleerd. Gebruik het commando krul --versie om te controleren of krullen is geinstalleerd.

In het geval dat krullen niet is geïnstalleerd, gebruikt u de volgende stappen.

Op op Ubuntu en Debian gebaseerde systemen, gebruiken:

sudo apt-get update
sudo apt-get install curl

Op RHEL-, CentOs- en Fedora-distributies, gebruiken:

sudo yum install curl

Gebruik nu de krul --versie commando om ervoor te zorgen dat het correct is geïnstalleerd.

krul --versie

Uitgang:

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/1.30. 0 librtmp/2.3 Release-datum: 2018-01-24 Protocollen: dict-bestand ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp smb smbs smtp smtps telnet tftp Kenmerken: AsynchDNS IDN IPv6 Groot bestand GSS-APIWB SSL libz TLS-SRP HTTP2 UnixSockets HTTPS-proxy PSL gaurav@ubuntu:~$ 

Nu zijn we klaar om de krullen opdracht.

Opties beschikbaar met CURL-opdracht

Laten we eerst eens kijken naar enkele van de prominente opties die beschikbaar zijn met de krullen opdracht.

OptieBeschrijving
-ubestanden downloaden van een FTP-server
-Com een ​​onderbroken download te hervatten
-Oom het resultaat van de . op te slaan krullen commando met een vooraf gedefinieerde bestandsnaam
-Iom de HTTP-headers van een gedefinieerde URL te krijgen
-Oom het resultaat van de . op te slaan krullen commando met de originele bestandsnaam
--libcurlom de C-broncode uit te voeren die gebruikmaakt van libcurl voor de opgegeven optie:
-xeen proxy gebruiken om toegang te krijgen tot de URL
-#om de voortgangsbalk weer te geven om de downloadstatus weer te geven

Een webpagina ophalen met CURL

De krullen commando, wanneer gebruikt zonder enige optie, haalt de inhoud op van de URL die in het commando is gespecificeerd.

Syntaxis:

krul [URL]

Voorbeeld:

curl //allthings.how

Uitgang:

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{marge: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:absoluut!belangrijk}html.i-amphtml-ios-embed{overflow-y:auto!important;position:static}#i-amphtml-wrapper{overflow-x:hidden!important;over flow-y:auto!belangrijk;positie:absoluut!belangrijk;boven:0!belangrijk;links:0!belangrijk;rechts:0!belangrijk;onder:0!belangrijk;marge:0!belangrijk;display:blok!belangrijk} 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 transparant!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}[abonnementen -dialoog],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 [load-more] [load-more-button],amp-list[load-more] [load-more-end],amp-list[load-more] [load-more-failed],amp-list[load -more] [load-more-loading]{display:none}amp-list[diffable] div[role=list]{display:block}amp-story-page,amp-story[standalone]{min-height:1px !belangrijk;weergave:blok!belangrijk;hoogte:100%!belangrijk;marge:0!belangrijk;vulling:0!belangrijk;overloop:verborgen!belangrijk;breedte:100%!belangrijk}amp-verhaal[standalone]{achtergrond- color:#202125!important;position:relative!important}amp-story-pagina{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-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]{positie:vast!belangrijk;top:0!belangrijk;breedte:1px!belangrijk;hoogte:1px!belangrijk;overloop:verborgen!belangrijk;zichtbaarheid:verborgen} 

Hier wordt de inhoud van de webpagina als broncode rechtstreeks naar uw terminal opgehaald.

U kunt opties gebruiken -O en -O met de krullen commando om deze inhoud in een bestand op te slaan.

Wanneer -O optie wordt gebruikt, wordt de inhoud van de URL opgeslagen in uw huidige map met een door de gebruiker gedefinieerde bestandsnaam.

Syntaxis:

curl -o [userdefined_filename] [URL]

Voorbeeld:

gaurav@ubuntu:~/workspace$ curl -o ath.html //allthings.how % Totaal % Ontvangen % Xferd Gemiddelde snelheid Tijd Tijd Tijd Huidige Dload Uploaden Totaal uitgegeven resterende snelheid 100 199k 100 199k 0 0 58743 0 0:00:03 0:00:03 --:--:-- 58743 gaurav@ubuntu:~/workspace$ ls ath.html gaurav@ubuntu:~/workspace$ 

In dit voorbeeld wordt de inhoud van de URL 'allthings.how' opgeslagen als een HTML-bestand met de naam ath.html in mijn huidige werkmap. Bij het openen van dit HTML-bestand word ik doorgestuurd naar de webpagina die is opgeslagen.

Bestanden downloaden met de opdracht CURL

De ... gebruiken -O optie met de curl-opdracht slaat ook de inhoud of webpagina of een downloadbaar pakket op als een bestand, maar slaat dit bestand op met zijn oorspronkelijke naam.

Laten we dit aan de hand van een voorbeeld bekijken:

Voorbeeld:

Hier heb ik de . gebruikt krullen commando met -O optie om een ​​Ubuntu-pakket met de naam 'cherrytree_0.37.6-1.1_all.deb' uit de Ubuntu-pakketrepository.

gaurav@ubuntu:~/workspace$ curl -O //kr.archive.ubuntu.com/ubuntu/pool/universe/c/cherrytree/cherrytree_0.37.6-1.1_all.deb % Totaal % Ontvangen % Xferd Gemiddelde snelheid Tijd Tijd Tijd Huidige upload-upload Totaal uitgegeven resterende snelheid 100 613k 100 613k 0 0 220k 0 0:00:02 0:00:02 --:--:-- 220k gaurav@ubuntu:~/workspace$

Uitgang:

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

Het pakket is nu dus gedownload en opgeslagen in de huidige werkmap (CWD) met zijn oorspronkelijke naam.

Een voortgangsbalk weergeven tijdens het downloaden van een bestand

Er is nog een esthetische aanpassing beschikbaar tijdens het gebruik van de: krullen opdracht om een ​​bestand te downloaden. U kunt de voortgang van uw bestandsdownload in de vorm van een voortgangsbalk op uw terminal bekijken. U hoeft alleen de toe te voegen -# optie met uw opdracht om een ​​bestand te downloaden.

Laten we een voorbeeld van deze tweak bekijken.

Syntaxis:

krul -# -O [URL]

Voorbeeld:

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$ 

Uitgang:

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

In deze uitvoer kunt u zien dat ik een pakket heb gedownload met de naam 'emacs-defaults_47.0.tar.xz' in mijn CWD en de voortgangsbalk wordt weergegeven in de terminal terwijl het downloaden bezig was.

Onderbroken download hervatten in CURL

Vaak kan zich een situatie voordoen waarin u bestanden van een groter formaat moet downloaden. Soms kan het downloaden vanwege een aantal redenen, zoals stroomuitval of netwerkstoring, halverwege worden afgebroken zonder het volledige bestand te downloaden. Zelfs als je op drukt Ctrl+C in de terminal wordt het proces afgebroken.

De krullen commando bij gebruik met de -C optie hervat de onderbroken download.

Syntaxis:

krul -C - -O [URL]

Voorbeeld:

In deze illustratie heb ik geprobeerd de Ubuntu 20.04 ISO-afbeelding te downloaden van de Ubuntu-website.

gaurav@ubuntu:~/workspace$ curl -O //releases.ubuntu.com/20.04.1/ubuntu-20.04.1-desktop-amd64.iso?_ga=2.212264532.1184373179.1600250922-1570904140.1591164974 % Totaal % Ontvangen % Xferd Gemiddelde snelheid Tijd Tijd Tijd Huidige Dload Uploaden Totaal bestede resterende snelheid 0 2656M 0 1744k 0 0 87038 0 8:53:17 0:00:20 8:52:57 77726^C

Hier heb ik het downloadproces opzettelijk afgebroken door: Ctrl+C.

Nu gebruik ik de -C optie met de krullen commando om de onderbroken download van dezelfde bronwebsite te hervatten.

Uitgang:

gaurav@ubuntu:~/workspace$ curl -C - -O //releases.ubuntu.com/20.04.1/ubuntu-20.04.1-desktop-amd64.iso?_ga=2.212264532.1184373179.1600250922-1570904140.1591164974 ** Overdracht hervatten van byte positie 1851392 % Totaal % Ontvangen % Xferd Gemiddelde Snelheid Tijd Tijd Tijd Huidige Dload Uploaden Totaal bestede links Snelheid 0 2654M 0 20.2M 0 0 57940 0 13:20:35 0:06:06 13:14:29 98278

De download is opgehaald vanaf het punt waar deze is afgebroken.

Bestanden downloaden van een FTP-server met CURL

Het is vrij eenvoudig met de krullen commando om een ​​bestand van de FTP-server te downloaden met behulp van de -u optie. U moet de gebruikersnaam en het wachtwoord in de opdracht invoeren voordat u de URL invoert.

Syntaxis:

curl -u [gebruikersnaam]:[wachtwoord] [URL]

Ter illustratie gebruik ik een online openbare FTP.

Voorbeeld:

gaurav@ubuntu:~/workspace$ curl -O -u [email protected]:eUj8GeW55SvYaswqUyDSm5v6N ftp://ftp.dlptest.com/16-Sep-20-16-0-0.csv % Totaal % Ontvangen % Xferd Gemiddeld Snelheid Tijd Tijd Tijd Huidige download upload Totaal bestede resterende snelheid 100 390 100 390 0 0 93 0 0:00:04 0:00:04 --:--:-- 93 gaurav@ubuntu:~/workspace$

Hier heb ik een bestand gedownload met de naam '16-sep-20-16-0-0.csv’ van deze ftp-server en bewaarde het met zijn originele naam in mijn CWD. Ik controleer het gedownloade bestand met de ls opdracht.

gaurav@ubuntu:~/workspace$ ls -al totaal 1092 drwxrwxr-x 3 gaurav gaurav 4096 Sep 16 16:15 . drwxr-xr-x 87 gaurav gaurav 266240 16 sep 10:22 .. -rw-r--r-- 1 gaurav 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$

Meerdere bestanden tegelijk downloaden met CURL

Meerdere bestanden tegelijk downloaden met de krullen commando is een zeer eenvoudige taak. Je gebruikt gewoon de -O optie met de krullen commando vergelijkbaar in de manier waarop we hebben uitgevoerd in de bovenstaande blokken.

Syntaxis:

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

Voorbeeld:

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 % Totaal % Ontvangen % Xferd Gemiddelde snelheid Tijd Tijd Tijd Huidige download Dload Totaal bestede resterende snelheid 100 63500 100 63500 0 0 55458 0 0:00 :01 0:00:01 --:--:-- 55458 100 8436k 100 8436k 0 0 123k 0 0:01:08 0:01:08 --:--:-- 127k gaurav@ubuntu:~/werkruimte $ 

In dit voorbeeld heb ik twee verschillende pakketten gedownload van de Ubuntu-repository.

Uitgang:

gaurav@ubuntu:~/workspace$ ls -al totaal 9596 drwxrwxr-x 3 gaurav gaurav 4096 Sep 16 16:28 . drwxr-xr-x 87 gaurav gaurav 266240 16 sep 10:22 .. -rw-r--r-- 1 gaurav 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_2.4.29. orig.tar.gz -rw-r--r-- 1 gaurav gaurav 204429 16 sep 11:45 ath.html gaurav@ubuntu:~/workspace$ 

De twee pakketten worden tegelijkertijd gedownload met behulp van het curl-commando.

HTTP-headers van een URL ophalen met CURL

HTTP-headersvelden van elke URL bevatten nuttige informatie zoals user-agent, inhoudstype, codering, enz. Deze header-bestanden bieden ook informatie over het object dat in de berichttekst wordt verzonden. Details over de aanvraag en het antwoord worden ook verkregen uit deze HTTP-headers.

Je kunt gebruiken krullen commando met -I optie om deze HTTP-headers van een URL te krijgen.

Syntaxis:

krul -I [URL]

Voorbeeld:

gaurav@ubuntu:~/workspace$ curl -I www.firefox.com HTTP/1.1 200 OK Inhoudstype: tekst/html; charset=ISO-8859-1 P3P: CP="Dit is geen P3P-beleid! Zie g.co/p3phelp voor meer info." Datum: wo, 16 sep 2020 11:17:00 GMT Server: gws X-XSS-Protection: 0 X-Frame-Options: SAMEORIGIN Transfer-Encoding: chunked Verloopt: wo, 16 sep 2020 11:17:00 GMT Cache- Controle: privé Set-Cookie: 1P_JAR=2020-09-16-11; verloopt=vrij, 16-okt-2020 11:17:00 GMT; pad=/; domein=.google.com; Beveiligde Set-Cookie: NID=204=SpeHTVXkKYwe6uaKYLsPWmCA0A-sGb94c9jpbw067e7uhyeJnkap6TFEIESztwLOEst7KcDSBLgGrokh1EM2IZi2VPVzllH0tsvCu-QbKiun7PoPJ6dDadx; verloopt=do, 18-mrt-2021 11:17:00 GMT; pad=/; domein=.google.com; HttpAlleen gaurav@ubuntu:~/workspace$

In dit voorbeeld heb ik de HTTP-headers van 'www.firefox.com‘.

C-broncode ophalen met CURL

Gebruik makend van krullen commando met de --libcurl optie kan de C-broncode ophalen. Dit heeft geen noemenswaardig nut voor leken, maar kan zeer nuttig zijn voor systeemprogrammeurs, beveiligingsanalisten en applicatieontwikkelaars.

Syntaxis:

curl [URL] > bestandsnaam --libcurl [code_bestandsnaam]

Voorbeeld:

In dit voorbeeld heb ik de inhoud van de URL opgehaald alles.hoe? en opgeslagen in een bestand met de naam gy_ath.html. De C-broncode wordt apart opgeslagen in de bron.c het dossier.

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

Uitgang:

gaurav@ubuntu:~/workspace$ curl //www.allthings.how > gy_ath.html --libcurl source.c % Totaal % Ontvangen % Xferd Gemiddelde snelheid Tijd Tijd Tijd Huidige Dload Upload Totaal bestede linkersnelheid 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 gaurav@ubuntu:~/workspace$

Laten we nu de gedownloade bestanden controleren.

gaurav@ubuntu:~/workspace$ ls -al totaal 404 drwxrwxr-x 3 gaurav gaurav 4096 Sep 16 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$

De bron.c bestand bevat de broncode. Dit kan op de terminal worden weergegeven met behulp van de kat opdracht. Ik heb een paar regels van de uitvoer in het onderstaande blok geplaatst.

C sourcegaurav@ubuntu:~/workspace$ cat source.c /********* Voorbeeldcode gegenereerd door de curl-opdrachtregeltool ********** * Alle curl_easy_setopt()-opties zijn gedocumenteerd op: * //curl.haxx.se/libcurl/c/curl_easy_setopt.html ******************************* ****************************************/ #include int main(int argc, char *argv[]) { CURLcode ret; KRUL *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);

Een proxy gebruiken in CURL om toegang te krijgen tot een URL

Zoals besproken in de inleiding, krullen command ondersteunt een breed scala aan protocollen zoals FTP, SMTP, HTTPS, SOCKS enz. Soms wordt het gebruik van een proxyserver voor het overbrengen van bestanden belangrijk als u de snelheid van uw overdracht wilt verhogen en ook uw identiteit wilt beschermen. krullen commando kan eenvoudig worden gebruikt om bestanden over de proxyserver over te dragen door de -x optie ervoor.

Voorbeeld:

curl -x [proxy_address]:[poort] [URL]

In het bovenstaande voorbeeld ben ik ervan uitgegaan dat uw proxy geen authenticatie vereist. Als de proxy authenticatie vereist om de overdracht te starten, kunt u de volgende opdracht gebruiken.

curl -u [gebruikersnaam]:[wachtwoord] -x [proxy_address]:[poort] [URL]

Met deze eenvoudige methode kunnen we bestanden overbrengen via een proxyserver met optie -x gebruikt met de krullen opdracht.

Gevolgtrekking

In deze korte tutorial hebben we geleerd hoe: krullen commando blijkt nuttig te zijn bij het downloaden van inhoud rechtstreeks van uw terminal. We hebben ook geleerd over de verschillende opties die beschikbaar zijn met deze opdracht om voor verschillende taken te worden gebruikt.