Sťahovanie súborov z terminálu v systéme Linux sa neobmedzuje len na curl a wget. Ďalšie nástroje a príkazy ponúkajú dodatočnú flexibilitu a funkcie, ktoré pomáhajú sťahovať súbory efektívnejšie. Či už hľadáte alternatívnu metódu kvôli určitým obmedzeniam alebo chcete vyskúšať nové príkazy, ktoré vám poskytnú väčšiu kontrolu, objavovanie týchto nástrojov vám pomôže rozšíriť si znalosti a zvýšiť produktivitu pri práci s terminálom.

Stretli ste sa niekedy so systémovým problémom bez možnosti odoslať jednoduchý HTTP požiadavku? Možno ste sa snažili zachrániť systém alebo vytvoriť obraz Dockeru. Niekedy potrebujete použiť dostupné nástroje a inokedy ste len zvedaví. Tu je päť spôsobov, ako sa pripojiť a sťahovať súbory cez HTTP.
Najprv pochopte potrebnú hlavičku HTTP.
Na vytvorenie HTTP pripojení často potrebujete odoslať HTTP hlavičku. Pre niektoré z nižšie uvedených príkazov budete musieť HTTP hlavičku vytvoriť manuálne, ale nie je to zložité.
HTTP hlavička je malý blok textu, ktorý inicializuje HTTP pripojenie. Vo väčšine nižšie uvedených príkladov bude HTTP hlavička vyzerať takto:
GET / HTTP/1.1\r\n
HOST: example.com\r\n
\r\n
Prvý riadok sa nazýva riadok požiadavky a klientovi hovorí, aby niečo načítal z konkrétnej cesty. Cesta je všetko, čo nasleduje po .com alebo .net atď. v URL adrese – napríklad example.com/cesta/foo.
- Riadok hostiteľa určuje názov hostiteľa, ku ktorému sa pripájame.
- Každý riadok končí znakom návratu riadka (\r) a znakom nového riadku (\n). Celá adresa končí prázdnym riadkom.
URL adresa uvedená vyššie načíta hlavný dokument z example.com (cesta "/"). Teraz, keď rozumiete HTTP URL adrese, môžete ju použiť s niektorými z nasledujúcich príkazov.
Telnet, ale funguje iba s tradičnými HTTP pripojeniami.
Nasledujúci príkaz sa zdá byť zvláštny, ale deje sa to, že vytvárame vlastnú hlavičku HTTP, pretože Telnet nie je HTTP klient. Zátvorky predstavujú podprocesor a každý príkaz – oddelený bodkočiarkou – sa vykoná a odošle do Telnetu jeden po druhom.
(echo "GET / HTTP/1.0"; echo "Host: example.com"; echo; sleep 1) | telnet example.com 80
Napríklad, ak spustíte nasledujúci príkaz v termináli, zistíte, že grep prijíma každý riadok jednotlivo:
(echo foobar; sleep 1; echo foobaz) | grep foo
Pre Telnet to znamená, že každý riadok v HTTP hlavičke prijíma samostatne ako dátový stream. Príkaz tiež odošle prázdny riadok (echo) na ukončenie pripojenia a potom čaká jednu sekundu, aby server mal dostatok času na odpoveď. Toto čakanie sa považuje za krehké, pretože čas odozvy len odhadujeme. Túto hodnotu možno budete musieť upraviť, ak sa pripojenie preruší príliš skoro.
Poznámka
Telnet nemôže používať TLS, takže to bude fungovať iba s bežnými HTTP pripojeniami.
radu
HTTP/1.0 automaticky ukončí pripojenie po odpovedi servera, zatiaľ čo HTTP/1.1 nie. Preto používame HTTP/1.0, pretože Telnet je nespoľahlivý na sťahovanie veľkých súborov cez HTTP, a preto nemusíme udržiavať pripojenie otvorené.
Telnet môžete nainštalovať na Fedoru pomocou nasledujúceho príkazu:
sudo dnf install telnet -y
Pre Debian a iné systémy zadajte nasledujúci príkaz:
sudo apt install telnet -y
Používatelia Archu, máte smolu. Telnet nie je dostupný v oficiálnych repozitároch. PuTTY je však k dispozícii, takže ho môžete namiesto toho použiť.
sudo pacman -S putty
Netcat je o niečo lepší ako Telnet.

Na vytváranie HTTP pripojení funguje príkaz Netcat takmer identicky ako príkaz Telnet, s výnimkou toho, že mu poskytujeme HTTP hlavičku ako jeden blok textu. Z príkladov vyššie a nižšie vidíte, že každý riadok v HTTP hlavičke končí riadiacim znakom „\r\n“ – zdvojeným znakom pre posledný riadok, ktorý označuje koniec hlavičky.
Ani jeden z nasledujúcich príkladov (Netcat alebo Ncat) nie je spoľahlivý na sťahovanie veľkých súborov, ale dokáže ľahko stiahnuť malé súbory.
Obyčajný HTTP
Netcat nepodporuje TLS (HTTPS), ale môžeme ho použiť na načítanie čistého HTTP.
printf "GET / HTTP/1.0\r\nHost: example.com\r\n\r\n" | nc example.com 80
Netcat môžete nainštalovať na Fedoru pomocou nasledujúceho príkazu:
sudo dnf install netcat -y
Pre Debian a iné systémy zadajte nasledujúci príkaz:
sudo apt install netcat-openbsd -y
Pre používateľov Archu je Netcat dostupný v dodatočnom repozitári:
sudo pacman -S openbsd-netcat
S TLS
Ak sa chcete pripojiť cez TLS pripojenie, budete musieť použiť Ncat, vylepšenie oproti Netcatu, ktoré je súčasťou projektu Nmap. Ncat dokáže nadviazať aj tradičné HTTP pripojenia.
printf "GET / HTTP/1.1\r\nHost: example.com\r\n\r\n" | ncat --ssl example.com 443
Ncat môžete nainštalovať na Fedoru pomocou nasledujúceho príkazu:
sudo dnf install nmap-ncat -y
Pre Debian a iné systémy zadajte nasledujúci príkaz:
sudo apt install ncat -y
Pre používateľov Archu je Ncat súčasťou balíka Nmap, takže by ste mali zadať nasledujúci príkaz:
sudo pacman -S nmap
Keď ste zúfalí, použite knižnicu Requests pre Python.
Nasledujúci príkaz funguje dobre s obyčajnými textovými alebo HTML súbormi, ale nespracováva správne binárne dáta (napr. obrázky, zip súbory atď.).
python3 -c "import requests; print(requests.get('http://example.com').text)"
Na správne stiahnutie binárnych údajov, ako sú obrázky alebo zip súbory, použite nasledujúci príkaz:
python3 -c "import requests; open('output_file.zip','wb').write(requests.get('http://example.com/file.zip').content)"
Zmeňte súbor „output_file.zip“ a URL adresu.
Hoci väčšina systémov je často predinštalovaná s Pythonom 3 (a pipom), knižnicu requests budete musieť nainštalovať samostatne. Môžete ju nainštalovať buď pomocou pipu, alebo správcu balíkov vašej distribúcie.
Ak nemáte administrátorské oprávnenia, môžete ho nainštalovať do domovského priečinka používateľa pomocou príkazu pip. Zadajte nasledujúci príkaz:
pip install --user requests
Aplikácie môžete nainštalovať prostredníctvom správcu balíkov Fedory pomocou nasledujúceho príkazu:
sudo dnf install python3-requests -y
Pre Debian a iné systémy zadajte nasledujúci príkaz:
sudo apt install python3-requests -y
Pre Arch zadajte nasledujúci príkaz:
sudo pacman -S python-requests
HTTPie: Užitočný nástroj
HTTPie sa opisuje ako nástroj na testovanie REST API (služieb webových stránok). Nasledujúci príkaz vykoná jednoduchú požiadavku na získanie HTML dokumentu nachádzajúceho sa na adrese example.com:
http GET example.com
HTTPie podporuje niekoľko praktických funkcií, ktoré uľahčujú písanie URL adries. Napríklad nasledujúci príkaz sa pripojí k serveru hostovanému lokálne vo vašom systéme na porte 3000:
http :3000
Pridanie parametrov do URL adresy je také jednoduché ako použitie dvojitého znamienka rovnosti:
http httpbin.org/anything foo==bar
Týmto sa vytvorí URL adresa, ktorá vyzerá takto: http://httpbin.org/anything?foo=bar.

Na vytvorenie HTTPS pripojenia použite nasledujúci príkaz:
https GET example.com
Hoci je HTTPie primárne zameraný na pomoc vývojárom, funguje dobre aj ako bežný HTTP klient, vďaka čomu je ideálny na sťahovanie súborov.

HTTPie môžete nainštalovať na Fedoru pomocou nasledujúceho príkazu:
sudo dnf install httpie -y
Pre Debian a iné systémy zadajte nasledujúci príkaz:
sudo apt install httpie -y
Pre Arch zadajte nasledujúci príkaz:
sudo pacman -S httpie
Aria2: Výkonný nástroj na sťahovanie súborov do terminálov.
Podporuje viacero protokolov vrátane HTTP, HTTPS, FTP, SFTP, BitTorrent, WebSocket a ďalších. Taktiež zrýchľuje sťahovanie vytvorením viacerých paralelných pripojení. Ak chcete stiahnuť súbor, jednoducho zadajte priečinok pomocou príznaku „-d“ a výsledný názov súboru pomocou príznaku „-o“.
aria2c -d /tmp -o test.html http://example.com
Aria2 bezproblémovo pracuje s HTTP a HTTPS a sťahuje HTML dokumenty a súbory.
Aria2 môžete nainštalovať na Fedoru pomocou nasledujúceho príkazu:
sudo dnf install aria2 -y
Pre Debian a iné systémy zadajte nasledujúci príkaz:
sudo apt install aria2 -y
Pre Arch zadajte nasledujúci príkaz:
sudo pacman -S aria2
Kvôli slabému spracovaniu HTTP fungujú príkazy Telnet a Netcat iba so súbormi nie väčšími ako niekoľko kilobajtov. Na stiahnutie väčších súborov budete musieť použiť správneho HTTP klienta. Príkazy Pythonu, HTTPie a aria2 fungujú ako skutoční HTTP klienti. Ak chcete zistiť, či používate skutočného HTTP klienta, položte si otázku, či potrebujete manuálne vkladať HTTP hlavičky; ak potrebujete, pravdepodobne nepoužívate skutočného HTTP klienta.
V praxi sa Telnet a Netcat používajú predovšetkým ako núdzové nástroje: užitočné, keď potrebujete otestovať pripojenie bez špecializovaných nástrojov. Prinajmenšom poskytujú zaujímavý úvod do nižších úrovní HTTP komunikácie.
Ak sa chcete dozvedieť viac o Telnete, môžete si prečítať náš článok o rozdieloch medzi Telnetom a SSH. Alebo máme ďalší článok, ktorý podrobne popisuje mnoho ďalších prípadov použitia Netcatu. Nakoniec máme podrobného návodu, ako používať HTTPie, veľmi užitočný nástroj.
Používanie terminálu v systéme Linux vám poskytuje viacero možností na sťahovanie súborov, ktoré presahujú rámec najbežnejších nástrojov. Niektoré príkazy ponúkajú pokročilé funkcie, ako je obnovenie sťahovania alebo správa rôznych protokolov, zatiaľ čo iné sa zameriavajú na jednoduchosť a rýchlosť. Výber správneho nástroja závisí od vašich potrieb a vyskúšanie viacerých metód vám poskytne väčšiu flexibilitu pri efektívnej práci so súbormi.




