logo

Curl Command i Linux med exempel

Linux curl-kommandot används för att ladda ner eller ladda upp data till en server via protokoll som stöds som HTTP, FTP, IMAP, SFTP, TFTP, IMAP, POP3, SCP, etc. Det är ett fjärrverktyg, så det fungerar utan användarinteraktion.

Dataöverföringen från en plats till en annan är en av de vitala och mest använda uppgifterna i ett datorsystem. Det finns dock många GUI-verktyg tillgängliga för dataöverföring. Men när man arbetar på kommandoraden blir det lite komplicerat. Curl-verktyget låter oss överföra data via kommandoraden.

Curl är ett kommandoradsverktyg för att hämta och skicka data såsom filer med URL-syntax. Den stöder alla protokoll som stöds av libcurl eftersom den använder libcurl. Curl tillhandahåller sitt stöd för HTTPS och implementerar SSL-certifikatverifiering när ett säkert protokoll nämns som standard, som HTTPS. Curl tar med fjärrservercertifikatet och kontrollerar CA-certifikatet för att spara fjärrserverns giltighet från att garantera att fjärrservern är den den begär att vara när curl länkar till en fjärrserver med HTTPS.

Det finns många alternativ för att definiera ett CA-certifikat, t.ex --kapat och --cacert . Alternativet, dvs --cacert, kan användas för att specificera platsen för filen i CA-certifikatarkivet. Om en CA-certifikatfil inte är tillgänglig i Windows-plattformen kommer curl att söka efter 'curl-ca-bundle.crt' CA-certifikatfilnamnet i följande ordning:

  • Katalog där curlprogrammet finns.
  • Aktuell arbetskatalog.
  • Systemkatalog (Windows).
  • Katalog (Windows).
  • Kataloger nämns i miljövariablerna %PATH%.

Curl kommer att ge ett felmeddelande när fjärrservern använder ett självsignerat certifikat eller när fjärrservercertifikatet inte är signerat via en CA som nämns i CA-certifikatfilen. Alternativet --insecure eller -k kan användas för att hoppa över certifikatverifiering. Fjärr-CA-certifikatet kan alternativt inkluderas i CA-certifikatlagringsfilen om fjärrservern är giltig.

Curl erbjuder en mängd användbara knep som CV för filöverföring, cookies, SSL-anslutningar, HTTP-inlägg, FTP-uppladdning, användarautentisering, proxystöd och mer. Curl mekaniseras av libcurl för varje överföringsrelaterad aspekt.

Vad är libcurl?

libcurl är ett gratis URL-överföringsbibliotek på klientsidan. Den stöder SMB, SMTP, SCP, RTMP, RTSP, POP3, MQTT, LDAP, Kerberos, IMAP, HTTPS, HTTP-proxytunneling, HTTP PUT, HTTP POST, HTTP/1, Gopher, FTPS, FTP, DICT och cookies. Biblioteket stöder även autentisering av användare plus-lösenord, proxyservrar, LDAPS, HTTPS-certifikat, HTTP-formulärbaserad uppladdning, FTP-uppladdning, återuppta filöverföring, TFTP, Telnet, SFTP och fil-URL-schema.

libcurl är kompakt. Den skapar identiskt och fungerar på flera plattformar, inklusive Microsoft Windows, UnixWare, Ultrix, Tru64, Symbian, Solaris, RISC OS, QNX Neutrino, OS/2, OpenBSD, NetWare, NetBSD, macOS, Linux, IRIX, iOS, HURD, HP -UX, FreeBSD, DOS, Darwin, OpenVMS, BlackBerry 10, BlackBerry Tablet OS, BeOS, Android, AmigaOS och AIX.

Libcurl-biblioteket är IPv6-kompatibelt, trådsäkert och gratis. Bindningar är också tillgängliga för 50+ språk, inklusive Python, PHP, Java och C/C++.
Libcurl-biblioteket stöder SChannel, gskit på IBM i, NSS, mbed TLS, GnuTLS på Windows, Secure Trasport på iOS och macOS, TLS/SSL genom OpenSSL, rustls, BearSSL, wolfSSL, AmiSSL, libressl och Boringssl.

Syntax:

Den grundläggande syntaxen för att använda curl är följande:

 curl [options] [URL...] 

Från ovanstående syntax,

URL:

URL-syntaxen är en allmän protokollberoende URL. Vi kan ange flera webbadresser enligt följande:

 http://site.{one,two,three}.com 

Alternativ:

Kommandot curl stöder följande kommandoradsalternativ:

--abstract-unix-socket: Den används för att ansluta via abstrakt Unix-domänuttag istället för ett nätverk.

--anyauth: Den används för att kommandot curl för att autentisera metoden själv för att använda den säkraste metoden. Det här verktyget är ett valfritt verktyg '--basic, --digest, --ntlm och negotiate' som används för att ställa in en specifik autentiseringsmetod.

-a, --lägg till: Den används för att ladda upp filer. Den lägger till filen istället för att skriva över den. Om den givna filen inte finns på servern kommer den att skapa en.

namn

--grundläggande: Den specificerar användningen av grundläggande HTTP-autentisering. Det är standardalternativet för curl-kommandot. Det är användbart för att åsidosätta tidigare inställningar.

--cacert: Den är specificerad för att använda den specifika certifikatfilen för att verifiera peer. Filerna kan ha flera CA-certifikat. Standardformatet för certifikaten är PEM, så alla certifikat måste finnas i det.

--kapat: Den är specificerad för att använda den specifika katalogen för att verifiera peer. Vi kan specificera flera sökvägar genom att separera dem med ett kolon (:) såsom 'sökväg: sökväg2:väg3'. Standardformatet för certifikaten är PEM, så alla certifikat måste finnas i det.

--cert-status: Det används för att verifiera statusen för servercertifikatet. Den använder Certificate Status Request eller OCSP-häftnings-TLS.

--cert-typ: Den anger den angivna typen av curlcertifikat. Dessa certifikat kan vara i PEM-, DER- och ENG-format. Standardvärdet är PEM. Om det anges flera gånger kommer det sista värdet att tas av curlen.

-E, --cert: Den är specificerad för att använda klientcertifikatfilen när du hämtar en fil via något av SSL-baserade protokoll som HTTPS, FTPS, etc.

--chiffer: Den används för att välja de chiffer som ska användas i anslutningen.

--komprimerad-ssh: Den används för att aktivera inbyggd SSH-komprimering. Det här alternativet kommer att tas som en begäran från servern, så servern kan eller kanske inte accepterar det.

--komprimerad: Den används för att begära ett komprimerat svar med hjälp av curl-algoritmerna och sparar det okomprimerade dokumentet. Det här alternativet skickar en rapport för kodningscurl som inte stöds.

-K, --config: Den används för att beskriva en textfil för att läsa curl-argument. Curl kommer att använda kommandoradsargumenten från textfilen.

--connect-timeout: Den används för att ange den maximala tiden i sekunder för curl-anslutningens timeout.

--koppla till : Den används för att skapa en begäran till det givna paret av värd och port; annars kommer den att ansluta till nästa par. Det här alternativet är ett praktiskt verktyg för att göra direkta förfrågningar på en specifik server.

-C, --fortsätt-vid: Den används för att fortsätta eller återuppta en tidigare filöverföring vid den givna förskjutningen.

-c, --kakburk: Den används för att specificera en viss fil till vilken vi vill skriva alla cookies efter en lyckad operation.

-b, --cookie: Den används för att vidarebefordra data till HTTP-servern i Cookie-huvudet.

--create-dirs: Det används i kombination med '-o? alternativet kommer det att skapa den lokala kataloghierarkin som krävs.

--crlf (FTP SMTP): Den används för att konvertera LF till CRLF i uppladdningen. Det är ett praktiskt verktyg för MVS (OS/390).

--crlfile: Den används för att specificera (i PEM-format) med en Certificate Revocation List.

--data-ascii: Det är ett alias för ?-d? alternativ.

--delegation : Den används för att ställa in LEVEL för att bekräfta servern vad den är tillåten att delegera när det kommer till användaruppgifter.

--smälta: Den används för att aktivera HTTP Digest-autentisering.

-q, --disable: Om det används som det första argumentet, kommer det att ignorera curlrc-konfigurationsfilen.

--dns-gränssnitt: Den används för att bekräfta att servern skickar utgående DNS-förfrågningar.

--dns-servrar: Den används för att ange DNS-servrarna istället för standardservrar.

-f, --misslyckas: Den används för att få krullen att tyst misslyckas vid serverfel.

-F, --form: Det används efterlikna ett ifyllt formulär som skickats av användaren.

-P, --ftp-port: Den används för att vända på standardavlyssnarrollerna vid anslutning till FTP.

--ftp-ssl-ccc-läge: Den används för att ställa in CCC-läget.

-G, --få: Den används för att specificera data med ?-d? alternativet som ska användas i en HTTP GET-begäran istället för POST-begäran.

-h, --hjälp: Den används för att visa hjälpmanualen med en kort beskrivning av användningen och supportalternativen.

-0, --http1.0: Den är specificerad för användning av HTTP-version 1.0.

--ignore-content-length: Den används för att ignorera Content-Length-huvudet.

-i, --inkludera: Den används för att inkludera HTTP-svarshuvuden.

-4, --ipv4: Det används för att lösa namn till IPv4-adresser.

-6, --ipv6: Det används för att lösa namn till Ipv6-adresser.

Protokoll av curl

Curl stöder flera protokoll:

    DICT:Det gör det möjligt för oss att slå upp ord med endast ordböcker.FTP (S):Curl stöder FTP-protokoll med många spakar och tweaks. Med eller utan TLS.FIL:Det låter oss skriva och läsa den lokala filen. Curl tillåter inte fjärråtkomst till file://URL, men det fungerar när det är aktivt på Microsoft Windows med den ursprungliga UNC-metoden.GOPHER (S):Den hämtar filer.HTTP (S):Curl stöder HTTP med hjälp av många varianter och alternativ. Den kan tala HTTP-versionerna 0.9, 1.0, 1.1, 2 och 3 beroende på korrekt kommandorad och byggalternativ.IMAP (S):Curl laddar ner e-postmeddelanden åt oss med protokollet för e-postläsning. Med eller utan TLS.LDAP (S):Curl kan implementera katalogsökning för oss med eller utan att använda TLS.MQTT:Curl stöder 3-versionen av MQTT. Att ladda ner på MQTT är detsamma som 'prenumerera' till vilket ämne som helst, och inlägg/uppladdning är detsamma som 'publicera' i vilket ämne som helst. Över TLS stöds inte MQTT.POP3 (S):Nedladdning via en pop3-server representerar att ta emot e-post utan eller med TLS.RTMP (S):RTMP eller Realtime Messaging Protocol används främst för serverströmmande media.RTSP:Curl stöder 1.0-nedladdningar av RTSP.SCP:Curl stöder två scp-överföringsversionen av SCP.SFTP:Curl stöder SFTP över 2-versionen av SSH.SMB (S):Curl stöder 1 versionen av SMB för nedladdning och uppladdning.SMTP (S):Att ladda upp innehåll till valfri SMTP-server innebär att överföra ett e-postmeddelande utan eller med TLS.TELNET:Att informera curl om att ta med en telnet-URL startar en interaktiv session där den överför vad den läser över stdin och resulterar i vad servern överför den.TFTP:Curl kan implementera TFTP-uppladdningar och -nedladdningar.

Installation av curl Command

Curl-kommandot kommer med det mesta Linux distributioner. Men om systemet inte bär krullen som standard. Du måste installera den manuellt. För att installera curl, kör följande kommandon:

Uppdatera systemet genom att utföra följande kommandon:

 sudo apt update sudo apt upgrade 

Installera nu curl-verktyget genom att utföra kommandot nedan:

 sudo apt install curl 

Verifiera installationen genom att utföra följande kommando:

 curl -version 

Kommandot ovan visar den installerade versionen av curl-kommandot.

Hämta innehållet i den angivna webbadressen

För att hämta innehållet i en specifik URL, kör curl-kommandot, följt av URL:en. Tänk på kommandot nedan:

 curl https://www.javatpoint.com/linux-tutorial 

Kommandot ovan kommer att hämta siddata för den angivna sidan. Tänk på bilden nedan av utgången:

Linux Curl Command

Från ovanstående utdata kan vi se siddata för den givna webbadressen hämtas. För att stoppa exekveringen, tryck på tangenterna CTRL+C.

Spara data i en specifik fil

För att spara data i en specifik fil, skicka alternativet '-o' följt av katalog, filnamn och URL enligt följande:

 curl -o / 

Tänk på kommandot nedan:

 curl -o /home/javatpoint/Documents/linux.html https://www.javatpoint.com/linux-tutorial 

Kommandot ovan sparar siddata i filen 'linux.html' under katalogen ' /home/javatpoint/Documents/'. Tänk på följande utdata:

Linux Curl Command

Från kommandot ovan kan vi se den totala mängden nedladdad data, mottagen data, genomsnittlig tid och lite annan statistik om data.

För att verifiera den nedladdade datan, öppna filen genom att utföra cat-kommandot

 cd Documents cat linux.html 

Tänk på bilden nedan för utdata:

Linux Curl Command

Ladda ner en fil från webben

En av de intressanta och fascinerande användningsområdena för curl är att vi kan ladda ner en fil från webben. För att ladda ner en fil från webben, kopiera nedladdningslänken och klistra in den med curl-kommandot. Vi kan framföra andra argument också för att göra det mer specifikt. Till exempel, ladda ner den senaste versionen av ubuntu, kopiera nedladdningslänk av ubuntu från dess officiella webbplats och klistra in den med curl-kommandot enligt följande:

 curl -o /home/javatpoint/Documents/ubuntu20.04.iso https://ubuntu.com/download/desktop/thank-you?version=20.04&architecture=amd64 

Ovanstående kommando kommer att ladda ner Ubuntu 20.04 till den angivna katalogen. Ange rätt filtillägg; annars laddas filen ned i ett annat format. Tänk på följande utdata:

Linux Curl Command

Från ovanstående utdata laddas filen ubuntu.iso ned. Vi kan se nedladdningstid, filstorlek, nedladdningshastighet och annan statistik. För att stoppa exekveringen, tryck när som helst på tangenterna CTRL+D.

Återuppta de avbrutna nedladdningarna

Det kan finnas en chans att nedladdningarna kan avbrytas av någon anledning. Vi kan återuppta nedladdningar genom att använda curl-kommandot. För att återuppta den avbrutna filen, skicka alternativet '-C' med curl-kommandot enligt följande:

 curl -C 

Ovanstående kommando kommer att återuppta nedladdningen av den angivna URL:en.

Ladda ner flera filer

För att ladda ner flera filer, ange flera webbadresser separerade med mellanslag enligt följande:

 curl -O 

Ovanstående kommando kommer att ladda ner data från båda webbadresserna.

Fråga HTTP-huvuden

HTTP-huvudena innehåller ytterligare information; det tillåter webbservern att ladda ner denna information. För att fråga HTTP-rubriker från en webbplats, kör kommandot med alternativet '-I' enligt följande:

 curl -I www.javatpoint.com 

Kommandot ovan kommer att producera följande utdata:

Linux Curl Command