GNU/Linux >> Znalost Linux >  >> Linux

15 praktických příkladů příkazů cURL pro Linux (příklady stažení cURL)

cURL je softwarový balíček, který se skládá z nástroje příkazového řádku a knihovny pro přenos dat pomocí syntaxe URL.

cURL podporuje různé protokoly jako DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, Telnet a TFTP.

Tento článek poskytuje 15 praktických příkladů použití cURL.

1. Stáhnout jeden soubor

Následující příkaz získá obsah adresy URL a zobrazí ji ve STDOUT (tj. na vašem terminálu).

$ curl http://www.centos.org

Chcete-li výstup uložit do souboru, přesměrujte jej, jak je uvedeno níže. Zobrazí se také některé další statistiky stahování.

$ curl http://www.centos.org > centos-org.html
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 27329    0 27329    0     0   104k      0 --:--:-- --:--:-- --:--:--  167k

2. Uložte výstup cURL do souboru

Výsledek příkazu curl můžeme uložit do souboru pomocí voleb -o/-O.

  • -o (malé o) výsledek bude uložen pod názvem souboru zadaným v příkazovém řádku
  • -O (velké O) bude použit název souboru v adrese URL a bude použit jako název souboru pro uložení výsledku
$ curl -o mygettext.html http://www.gnu.org/software/gettext/manual/gettext.html

Nyní bude stránka gettext.html uložena do souboru s názvem ‚mygettext.html‘. Můžete si také všimnout, že při spuštění curl s volbou -o se zobrazí ukazatel průběhu stahování následovně.

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
 66 1215k   66  805k    0     0  33060      0  0:00:37  0:00:24  0:00:13 45900
100 1215k  100 1215k    0     0  39474      0  0:00:31  0:00:31 --:--:-- 68987

Když použijete curl -O (velké O), uloží se obsah do samotného souboru s názvem ‚gettext.html‘ v místním počítači.

$ curl -O http://www.gnu.org/software/gettext/manual/gettext.html

Poznámka:Když curl musí zapsat data do terminálu, deaktivuje měřič průběhu, aby se předešlo zmatkům při tisku. K přesunutí výsledku do souboru můžeme použít volby '>'|'-o'|'-O'.

Podobně jako u cURL můžete také použít wget ke stažení souborů. Podívejte se na příklady wget, abyste pochopili, jak efektivně používat wget.

3. Načíst více souborů najednou

Zadáním adres URL na příkazovém řádku můžeme stáhnout více souborů najednou.
Syntaxe:

$ curl -O URL1 -O URL2

Níže uvedený příkaz stáhne index.html i gettext.html a uloží jej pod stejným názvem do aktuálního adresáře.

$ curl -O http://www.gnu.org/software/gettext/manual/html_node/index.html -O http://www.gnu.org/software/gettext/manual/gettext.html

Vezměte prosím na vědomí, že když stahujeme více souborů ze stejného serveru, jak je uvedeno výše, curl se pokusí znovu použít připojení.

4. Postupujte podle záhlaví umístění HTTP s volbou -L

Ve výchozím nastavení se CURL neřídí hlavičkami umístění HTTP. Označuje se také jako přesměrování. Když se požadovaná webová stránka přesune na jiné místo, bude jako odpověď odeslána hlavička umístění HTTP a bude tam, kde se skutečná webová stránka nachází.

Když například někdo zadá do prohlížeče google.com z Indie, bude automaticky přesměrován na „google.co.in“. To se provádí na základě záhlaví HTTP Location, jak je znázorněno níže.

$ curl http://www.google.com

<TITLE>302 Moved</TITLE>
<H1>302 Moved</H1>
The document has moved
<A HREF="http://www.google.co.in/">here</A>

Výše uvedený výstup říká, že požadovaný dokument se přesune na „http://www.google.co.in/“.

Můžeme trvat na tom, aby curl následoval přesměrování pomocí volby -L, jak je znázorněno níže. Nyní stáhne zdrojový kód HTML google.co.in.

$ curl -L http://www.google.com

5. Pokračovat/obnovit předchozí stahování

Pomocí volby curl -C můžete pokračovat ve stahování, které již bylo z nějakého důvodu zastaveno. To bude užitečné, když stahujete velké soubory a stahování bylo přerušeno.

Řekneme-li „-C -“, curl najde, odkud má začít obnovovat stahování. Můžeme také zadat offset ‚-C ‘. Dané offsetové bajty budou u zdrojového souboru přeskočeny od začátku.

Spusťte velké stahování pomocí curl a mezi stahováním jej zastavíte stisknutím Ctrl-C.

$ curl -O http://www.gnu.org/software/gettext/manual/gettext.html
##############             20.1%

Poznámka:-# se používá k zobrazení ukazatele průběhu místo ukazatele postupu.

Nyní bylo výše uvedené stahování zastaveno na 20,1 %. Pomocí „curl -C -“ můžeme pokračovat ve stahování tam, kde skončilo dříve. Nyní stahování pokračuje z 20,1 %.

curl -C - -O http://www.gnu.org/software/gettext/manual/gettext.html
###############            21.1%

6. Omezte rychlost přenosu dat

Pomocí možnosti –limit-rate můžete omezit množství přenášených dat. Jako argument můžete zadat maximální přenosovou rychlost.

$ curl --limit-rate 1000B -O http://www.gnu.org/software/gettext/manual/gettext.html

Výše uvedený příkaz omezuje přenos dat na 1000 bajtů/sekundu. curl může po krátkou dobu použít vyšší přenosovou rychlost. Ale v průměru to bude kolem 1000 B/s.

Následuje ukazatel průběhu pro výše uvedený příkaz. Můžete vidět, že aktuální rychlost se blíží 1000 bajtů.

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  1 1215k    1 13601    0     0    957      0  0:21:40  0:00:14  0:21:26   999
  1 1215k    1 14601    0     0    960      0  0:21:36  0:00:15  0:21:21   999
  1 1215k    1 15601    0     0    962      0  0:21:34  0:00:16  0:21:18   999

7. Stahujte soubor pouze v případě, že je upraven před/po daném čase

Soubory, které jsou změněny po určité době, můžeme získat pomocí volby -z v curl. To bude fungovat pro FTP i HTTP.

$ curl -z 21-Dec-11 http://www.example.com/yy.html

Výše uvedený příkaz stáhne soubor yy.html pouze v případě, že bude upraven později než zadané datum a čas

$ curl -z -21-Dec-11 http://www.example.com/yy.html

Výše uvedený příkaz stáhne soubor yy.html, pokud je změněn před daným datem a časem.

Různé syntaxe podporované pro výraz data naleznete v ‘man curl_getdate’

8. Předejte HTTP ověřování v cURL

Někdy budou webové stránky vyžadovat uživatelské jméno a heslo pro zobrazení obsahu (lze to provést pomocí souboru .htaccess). S pomocí volby -u můžeme předat tyto přihlašovací údaje z cURL na webový server, jak je znázorněno níže.

$ curl -u username:password URL

Poznámka:Ve výchozím nastavení curl používá základní ověřování HTTP. Další autentizační metodu můžeme zadat pomocí –ntlm | – trávení.

9. Stáhnout soubory z FTP serveru

cURL lze také použít ke stahování souborů z FTP serverů. Pokud je daná cesta FTP adresář, ve výchozím nastavení bude seznam souborů v konkrétním adresáři.

$ curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/xss.php

Výše uvedený příkaz stáhne soubor xss.php z ftp serveru a uloží jej do místního adresáře.

$ curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/

Zde daná adresa URL odkazuje na adresář. Takže cURL vypíše všechny soubory a adresáře pod danou URL

Pokud s FTP/sFTP začínáte, podívejte se na ftp sftp tutoriál pro začátečníky.

10. Seznam/stažení pomocí rozsahů

cURL podporuje rozsahy, které mají být uvedeny v URL. Po zadání rozsahu budou staženy soubory odpovídající rozsahu. Bude užitečné stáhnout balíčky z FTP mirrorů.

$ curl   ftp://ftp.uk.debian.org/debian/pool/main/[a-z]/

Výše uvedený příkaz vypíše všechny balíčky z rozsahů a-z v terminálu.

11. Nahrajte soubory na server FTP

Curl lze také použít k nahrávání souborů na FTP server s volbou -T.

$ curl -u ftpuser:ftppass -T myfile.txt ftp://ftp.testserver.com

Výše uvedený příkaz nahraje soubor s názvem myfile.txt na FTP server. Můžete také nahrát více souborů současně pomocí operací rozsahu.

$ curl -u ftpuser:ftppass -T "{file1,file2}" ftp://ftp.testserver.com

Volitelně můžeme použít "." pro získání vstupu ze STDIN a přenos do dálkového ovladače.

$ curl -u ftpuser:ftppass -T - ftp://ftp.testserver.com/myfile_1.txt

Výše uvedený příkaz získá vstup od uživatele ze standardního vstupu a uloží obsah na ftp server pod názvem „myfile_1.txt“.

Pro každou adresu URL můžete zadat jedno „-T“ a dvojice určuje, co kam nahrát.

12. Další informace pomocí možnosti Verbose and Trace Option

Co se děje, můžete zjistit pomocí volby -v. Volba -v povolí podrobný režim a vytiskne podrobnosti

curl -v http://google.co.in

Příkaz about vypíše následující

* About to connect() to www.google.co.in port 80 (#0)
*   Trying 74.125.236.56... connected
* Connected to www.google.co.in (74.125.236.56) port 80 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.21.0 (i486-pc-linux-gnu) libcurl/7.21.0 OpenSSL/0.9.8o zlib/1.2.3.4 libidn/1.15 libssh2/1.2.6
> Host: www.google.co.in
> Accept: */*
>
* HTTP 1.0, assume close after body
< HTTP/1.0 200 OK
< Date: Tue, 10 Apr 2012 11:18:39 GMT
< Expires: -1
< Cache-Control: private, max-age=0
< Content-Type: text/html; charset=ISO-8859-1
< Set-Cookie: PREF=ID=7c497a6b15cc092d:FF=0:TM=1334056719:LM=1334056719:S=UORpBwxFmTRkbXLj; expires=Thu, 10-Apr-2014 11:18:39 GMT; path=/; domain=.google.co.in
.
.

Pokud potřebujete podrobnější informace, můžete použít volbu –trace. Možnost trace umožní úplný výpis trasování všech příchozích/odchozích dat do daného souboru

=> Send header, 169 bytes (0xa9)
0000: 47 45 54 20 2f 20 48 54 54 50 2f 31 2e 31 0d 0a GET / HTTP/1.1..
0010: 55 73 65 72 2d 41 67 65 6e 74 3a 20 63 75 72 6c User-Agent: curl
..
0060: 2e 32 2e 33 2e 34 20 6c 69 62 69 64 6e 2f 31 2e .2.3.4 libidn/1.
0070: 31 35 20 6c 69 62 73 73 68 32 2f 31 2e 32 2e 36 15 libssh2/1.2.6
0080: 0d 0a 48 6f 73 74 3a 20 77 77 77 2e 67 6f 6f 67 ..Host: www.goog
0090: 6c 65 2e 63 6f 2e 69 6e 0d 0a 41 63 63 65 70 74 le.co.in..Accept
00a0: 3a 20 2a 2f 2a 0d 0a 0d 0a                      : */*....
== Info: HTTP 1.0, assume close after body
<= Recv header, 17 bytes (0x11)
0000: 48 54 54 50 2f 31 2e 30 20 32 30 30 20 4f 4b 0d HTTP/1.0 200 OK.
0010: 0a

Tato možnost podrobného a trasování se bude hodit, když curl z nějakého důvodu selže a my nevíme proč.

13. Získejte definici slova pomocí protokolu DICT

Pomocí cURL můžete získat definici slova pomocí protokolu DICT. Musíme mu předat adresu URL slovníkového serveru.

$ curl dict://dict.org/d:bash

Výše uvedený příkaz vypíše význam bash následovně

151 "Bash" gcide "The Collaborative International Dictionary of English v.0.48"
Bash \Bash\, v. t. [imp. & p. p. {Bashed}; p. pr. & vb. n.
   {Bashing}.] [Perh. of imitative origin; or cf. Dan. baske to
   strike, bask a blow, Sw. basa to beat, bas a beating.]
   To strike heavily; to beat; to crush. [Prov. Eng. & Scot.]
   --Hall Caine.
   [1913 Webster]

         Bash her open with a rock.               --Kipling.
   [Webster 1913 Suppl.]
.
151 "Bash" gcide "The Collaborative International Dictionary of English v.0.48"
Bash \Bash\, n.
   1. a forceful blow, especially one that does damage to its
      target.
      [PJC]
.
.

Nyní můžete vidět, že používá „The Collaborative International Dictionary of English“. K dispozici je mnoho slovníků. Všechny slovníky můžeme vypsat pomocí

$ curl dict://dict.org/show:db

jargon "The Jargon File (version 4.4.7, 29 Dec 2003)"
foldoc "The Free On-line Dictionary of Computing (26 July 2010)"
easton "Easton's 1897 Bible Dictionary"
hitchcock "Hitchcock's Bible Names Dictionary (late 1800's)"
bouvier "Bouvier's Law Dictionary, Revised 6th Ed (1856)"

Nyní, abychom našli skutečný význam Bash v počítači, můžeme hledat bash ve slovníku „Foloc“ následovně

$ curl dict://dict.org/d:bash:foldoc

Výsledkem bude,

bash

   Bourne Again SHell.  {GNU}'s {command interpreter} for {Unix}.
   Bash is a {Posix}-compatible {shell} with full {Bourne shell}
   syntax, and some {C shell} commands built in.  The Bourne
   Again Shell supports {Emacs}-style command-line editing, job
   control, functions, and on-line help.  Written by Brian Fox of
   {UCSB}.

Další podrobnosti týkající se DICT naleznete v RFC2229

14. Ke stažení souboru použijte proxy

Můžeme zadat cURL pro použití proxy k provedení konkrétní operace pomocí volby -x. Musíme zadat hostitele a port proxy.

$ curl -x proxysever.test.com:3128 http://google.co.in

15. Odesílání pošty pomocí protokolu SMTP

cURL lze také použít k odesílání pošty pomocí protokolu SMTP. Měli byste zadat adresu odesílatele, příjemce a ip-adresu poštovního serveru, jak je uvedeno níže.

$ curl --mail-from [email protected] --mail-rcpt [email protected] smtp://mailserver.com

Po zadání výše uvedeného příkazu bude čekat, až uživatel poskytne data e-mailu. Po vytvoření zprávy zadejte . (tečka) jako poslední řádek, který e-mail okamžitě odešle.

Subject: Testing
This is a test mail
.

Linux
  1. cp Command v Linuxu:7 praktických příkladů

  2. Linux Shutdown Command:5 praktických příkladů

  3. 5 Praktické příklady příkazu dd v Linuxu

  1. Příklady příkazů Linux curl – část 2

  2. Příklady příkazů Linux curl – část 1

  3. 10 Praktické příklady příkazů Linux nm

  1. Příkaz Wget v Linuxu s příklady

  2. Curl Command v Linuxu s příklady

  3. 16 Praktické příklady příkazu Linux LS pro začátečníky