GNU/Linux >> Znalost Linux >  >> Linux

Více než 15 příkladů příkazu cURL pro Linux

V tomto tutoriálu se budeme zabývat příkazem cURL v Linuxu. Následujte nás, když vás provedeme funkcemi tohoto výkonného nástroje s příklady, které vám pomohou porozumět všemu, čeho je schopen.

Pomocí příkazu cURL můžete stáhnout nebo odeslat data na server pomocí jednoho z jeho více než 20 podporovaných protokolů. Těmito daty může být soubor, e-mailová zpráva nebo webová stránka.

Co je příkaz cURL?

cURL je ideální nástroj pro interakci s webovou stránkou nebo API, odesílání požadavků a zobrazování odpovědí na terminál nebo protokolování dat do souboru. Někdy jej můžete použít jako součást většího skriptu a předat data dalším funkcím k dalšímu zpracování.

Protože hlavním využitím cURL je načítání/stahování souborů ze serverů. Tuto funkci plní dobře, ale někdy je pro tuto úlohu lepší příkaz wget.

Některé rozdíly a podobnosti mezi wget a cURL projdeme později v tomto článku.

V níže uvedených sekcích vám ukážeme, jak používat cURL.

Stáhnout soubor

Nejzákladnějším příkazem, který můžeme cURL zadat, je stažení webové stránky nebo souboru. cURL bude používat HTTP jako svůj výchozí protokol, pokud neurčíme jiný. Chcete-li stáhnout webovou stránku, zadejte tento příkaz:

$ curl http://www.google.com

Samozřejmě zadejte libovolný web nebo stránku, kterou chcete načíst.

Provedení základního příkazu, jako je tento bez dalších možností, bude jen zřídka užitečné, protože to pouze řekne cURL, aby načetlo zdrojový kód stránky, kterou jste poskytli.

Když jsme spustili náš příkaz, náš terminál je naplněn HTML a dalším webovým skriptovacím kódem – což není něco, co je pro nás v této podobě zvlášť užitečné.

Místo toho si stáhněte web jako dokument HTML, aby bylo možné zobrazit obsah. Chcete-li toho dosáhnout, přidejte do cURL možnost –output.

$ curl www.likegeeks.com --output likegeeks.html

Nyní můžeme otevřít web, který jsme stáhli, a zobrazit jej ve webovém prohlížeči.

Pokud si chcete stáhnout online soubor, příkaz je přibližně stejný. Nezapomeňte však k cURL připojit volbu –output, jak jsme to udělali v příkladu výše.

Pokud tak neučiníte, cURL odešle binární výstup online souboru do vašeho terminálu, což pravděpodobně způsobí jeho poruchu.

Takto to vypadá, když zahájíme stahování 500 kB dokumentu aplikace Word.

Začne se stahovat dokument aplikace Word a v terminálu se zobrazí průběh stahování. Po dokončení stahování bude soubor dostupný v adresáři, do kterého jsme jej uložili.

V tomto příkladu jsme nezadali adresář, takže soubor byl uložen do našeho současného pracovního adresáře (adresáře, ze kterého jsme spustili příkaz cURL).

Také jste si všimli možnosti -L, kterou jsme zadali v našem příkazu cURL? Bylo to nutné ke stažení tohoto souboru a jeho funkci si projdeme v další sekci.

Následovat přesměrování

Pokud při pokusu o cURL webové stránky dostanete prázdný výstup, pravděpodobně to znamená, že web řekl cURL, aby přesměroval na jinou adresu URL. Ve výchozím nastavení nebude cURL následovat přesměrování, ale můžete jej sdělit pomocí přepínače -L.

$ curl -L www.likegeeks.com

V našem výzkumu pro tento článek jsme zjistili, že je nutné zadat -L na většině webových stránek, takže si tento malý trik nezapomeňte zapamatovat. Můžete jej dokonce chtít ve výchozím nastavení připojit k většině příkazů cURL.

Zastavit a obnovit stahování

Pokud se stahování přeruší nebo pokud potřebujete stáhnout velký soubor, ale nechcete to všechno dělat v jedné relaci, cURL nabízí možnost zastavit a obnovit přenos.

Chcete-li přenos zastavit ručně, stačí ukončit proces cURL stejným způsobem, jakým byste zastavili téměř jakýkoli proces aktuálně spuštěný ve vašem terminálu, pomocí kombinace ctrl+c.

Naše stahování začalo, ale bylo přerušeno pomocí ctrl+c, nyní v něm pokračujeme s následující syntaxí:

$ curl -C - example.com/some-file.zip --output MyFile.zip

Přepínač -C je to, co obnoví přenos souborů, ale také si všimněte, že přímo za ním je pomlčka (-). To říká cURL, aby obnovil přenos souboru, ale aby se nejprve podíval na již staženou část, aby viděl poslední stažený bajt a určil, kde pokračovat.

Náš přenos souborů byl obnoven a poté bylo stahování úspěšně dokončeno.

Zadejte časový limit

Pokud chcete, aby cURL po určité době opustil to, co dělá, můžete v příkazu zadat časový limit. To je užitečné zejména proto, že některé operace v cURL nemají ve výchozím nastavení časový limit, takže jeden musí být specifikován, pokud nechcete, aby byl zavěšován na neurčito.

Pomocí přepínače -m můžete zadat maximální dobu, kterou strávíte prováděním příkazu. Po uplynutí zadaného času se cURL ukončí bez ohledu na to, co dělá, i když je právě uprostřed stahování nebo nahrávání souboru.

cURL očekává, že váš maximální čas bude uveden v sekundách. Pro vypršení časového limitu po jedné minutě by příkaz vypadal takto:

$ curl -m 60 example.com

Dalším typem časového limitu, který můžete zadat pomocí cURL, je doba strávená připojováním. To pomáhá zajistit, aby cURL netrávilo nepřiměřené množství času pokusy o kontaktování hostitele, který je offline nebo jinak nedostupný.

Jako argument přijímá sekundy:

$ curl --connect-timeout 60 example.com

Použití uživatelského jména a hesla

Uživatelské jméno a heslo můžete zadat v příkazu cURL pomocí přepínače -u. Pokud byste se například chtěli ověřit pomocí serveru FTP, syntaxe by vypadala takto:

$ curl -u username:password ftp://example.com

Můžete to použít s jakýmkoli protokolem, ale FTP se často používá pro jednoduché přenosy souborů, jako je tento.

Pokud bychom chtěli stáhnout soubor zobrazený na snímku obrazovky výše, zadáme stejný příkaz, ale použijeme úplnou cestu k souboru.

$ curl -u username:password ftp://example.com/readme.txt

Používejte servery proxy

Je snadné nasměrovat cURL k použití proxy před připojením k hostiteli. cURL bude standardně očekávat HTTP proxy, pokud neurčíte jinak.

K definování proxy použijte přepínač -x. Protože v tomto příkladu není specifikován žádný protokol, cURL bude předpokládat, že jde o HTTP proxy.

$ curl -x 192.168.1.1:8080 http://example.com

Tento příkaz by použil 192.168.1.1 na portu 8080 jako proxy pro připojení k example.com.

Můžete jej použít i s jinými protokoly. Zde je příklad toho, jak by vypadalo použití HTTP proxy pro cURL na FTP server a načtení souboru.

$ curl -x 192.168.1.1:8080 ftp://example.com/readme.txt

cURL podporuje mnoho dalších typů proxy a možností použití s ​​těmito proxy, ale další rozšíření by bylo nad rámec této příručky. Další informace o tunelování proxy, SOCKS proxy, autentizaci atd. naleznete na manuálové stránce cURL.

Hromadné stahování velkých souborů

Už jsme si ukázali, jak můžete zastavit a obnovit přenosy souborů, ale co kdybychom chtěli, aby cURL stáhl pouze část souboru? Tímto způsobem bychom mohli stáhnout velký soubor v několika částech.

Je možné stáhnout pouze určité části souboru, pro případ, že byste potřebovali zůstat pod limitem stahování nebo něco podobného. K tomu můžete použít příznak –range.

Velikost musíte napsat v bajtech. Pokud bychom tedy chtěli stáhnout nejnovější soubor .iso Ubuntu po 100 MB, náš první příkaz by vypadal takto:

$ curl --range 0-99999999 http://releases.ubuntu.com/18.04/ubuntu-18.04.3-desktop-amd64.iso ubuntu-part1

Druhý příkaz by musel zvednout další bajt a stáhnout další 100 MB blok.

$ curl --range 0-99999999 http://releases.ubuntu.com/18.04/ubuntu-18.04.3-desktop-amd64.iso ubuntu-part1
$ curl --range 100000000-199999999 http://releases.ubuntu.com/18.04/ubuntu-18.04.3-desktop-amd64.iso ubuntu-part2

Tento proces opakujte, dokud cURL nestáhne všechny bloky. Posledním krokem je sloučení bloků do jednoho souboru, což lze provést příkazem cat.

$ cat ubuntu-part? > ubuntu-18.04.3-desktop-amd64.iso

Klientský certifikát

Chcete-li přistupovat k serveru pomocí ověřování certifikátem namísto základního ověřování, můžete zadat soubor certifikátu s volbou –cert.

$ curl --cert path/to/cert.crt:password ftp://example.com

cURL má mnoho možností pro formát souborů certifikátů.

Existuje také více možností souvisejících s certifikátem:–cacert, –cert-status, –cert-type atd. Úplný seznam možností naleznete v manuálové stránce.

Tiché cURL

Pokud chcete potlačit ukazatel průběhu a chybové zprávy cURL, přepínač -s tuto funkci poskytuje. Stále bude vydávat data, která požadujete, takže pokud chcete, aby byl příkaz 100% tichý, musíte výstup přesměrovat do souboru.

Zkombinujte tento příkaz s parametrem -O pro uložení souboru do vašeho aktuálního pracovního adresáře. To zajistí, že cURL se vrátí s výstupem 0.

$ curl -s -O http://example.com

Alternativně můžete použít volbu –output k výběru místa uložení souboru a zadání názvu.

$ curl -s http://example.com --output index.html

Získat záhlaví

Uchopení hlavičky vzdálené adresy je s cURL velmi jednoduché, stačí použít volbu -I.

$ curl -I example.com

Pokud to zkombinujete s možností –L, cURL vrátí záhlaví každé adresy, na kterou je přesměrováno.

$ curl -I -L example.com

Více záhlaví

Záhlaví můžete předat cURL pomocí volby -H. A abyste předali více hlaviček, stačí použít volbu -H vícekrát. Zde je příklad:

$ curl -H 'Connection: keep-alive' -H 'Accept-Charset: utf-8 ' http://example.com

Zveřejněte (nahrajte) soubor

POST je běžný způsob, jakým webové stránky přijímají data. Když například vyplníte formulář online, existuje velká šance, že data jsou odesílána z vašeho prohlížeče pomocí metody POST. Chcete-li odeslat data na web tímto způsobem, použijte volbu -d.

$ curl -d 'name=geek&location=usa' http://example.com

Chcete-li nahrát soubor, nikoli text, syntaxe bude vypadat takto:

$ curl -d @filename http://example.com

Použijte tolik příznaků -d, kolik potřebujete, abyste specifikovali všechna různá data nebo názvy souborů, které se pokoušíte nahrát.

Pokud chcete nahrát soubor na FTP server, můžete použít volbu -T.

$ curl -T myfile.txt ftp://example.com/some/directory/

Odeslat e-mail

Odeslání e-mailu je jednoduše nahrání dat z vašeho počítače (nebo jiného zařízení) na e-mailový server. Vzhledem k tomu, že cURL je schopen nahrávat data, můžeme jej použít k odesílání e-mailů. Existuje spousta možností, ale zde je příklad, jak odeslat e-mail přes server SMTP:

$ curl smtp://mail.example.com --mail-from [email protected] --mail-rcpt [email protected] --upload-file email.txt

Musíte správně naformátovat svůj e-mailový soubor. Něco takového:

$ cat email.txt

From: Web Administrator <[email protected]>

To: John Doe <[email protected]>

Subject: An example email

Date: Sat, 7 Dec 2019 02:10:15




John,

Hope you have a great weekend.

-Admin

Jako obvykle lze podrobnější a specializované možnosti nalézt v manuálové stránce cURL.

Přečíst e-mailovou zprávu

cURL podporuje IMAP (a IMAPS) a POP3, oba můžete použít k načítání e-mailových zpráv z poštovního serveru.

Přihlaste se pomocí IMAP takto:

$ curl -u username:password imap://mail.example.com

Tento příkaz zobrazí seznam dostupných poštovních schránek, ale nezobrazí žádnou konkrétní zprávu. Chcete-li to provést, zadejte UID zprávy pomocí volby –X.

$ curl -u username:password imap://mail.example.com -X 'UID FETCH 1234'

Rozdíl mezi cURL a wget

Někdy si lidé pletou cURL a wget, protože oba jsou schopni získávat data ze serveru. Ale to je jediná věc, kterou mají společné.

V tomto článku jsme ukázali, čeho je cURL schopen. wget poskytuje jinou sadu funkcí. wget je nejlepší nástroj pro stahování webových stránek a je schopen rekurzivně procházet adresáře a odkazy ke stažení celých stránek.

Pro stahování webových stránek použijte wget. Pokud používáte jiný protokol než HTTP nebo HTTPS nebo pro nahrávání souborů, použijte cURL. cURL je také dobrá volba pro stahování jednotlivých souborů z webu, i když wget to také umí.

Doufám, že vám bude návod užitečný. Vraťte se.


Linux
  1. Linux killall příkaz pro začátečníky (8 příkladů)

  2. 15+ příkladů příkazu yum update

  3. 7 Příklady příkazů Linux df

  1. 12 Příklady IP příkazů pro uživatele Linuxu

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

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

  1. Curl Command v Linuxu s příklady

  2. Linuxový příkaz dir pro začátečníky (10 příkladů)

  3. Příkaz Linux rm vysvětlený pro začátečníky (8 příkladů)