LINUXSOFT.cz Přeskoč levou lištu
Uživatel: Heslo:  
   CZUKPL

> Linux v příkazech - TCP, ftp, http

V tomto dílu našeho seriálu se budeme opět zabývat utilitami pro komunikaci po síti, konkrétně se podíváme na netcat, ftp a wget.

1.8.2004 02:00 | Jan Houštěk | Články autora | přečteno 48841×

Netcat

Netcat je, jak název napovídá, síťová varianta nástroje cat. Samotný program se jmenuje nc. V manuálové stránce se hned v podtitulu dozvídáme, že se jedná o "TCP/IP swiss army knife". Je s podivem, že tato poměrně mladá utilita nevznikla podstatně dříve a nezařadila se ke standardním Unixovým nástrojům.

Netcat pracuje ve dvou základních režimech - server a klient. Klient spustíme např. takto:

bfu@linux:~$ nc www.microsoft.cz 80
GET /linux.html HTTP/1.1
Host: www.microsoft.cz

HTTP/1.0 404 Not Found
Content-Length: 1635
Content-Type: text/html
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
Date: Thu, 22 Jul 2004 23:55:04 GMT
[...]

Netcat provedl spojení na port 80/tcp serveru www.microsoft.com. Nyní to, co napíšeme na standardní vstup (černá barva) je posláno bez úprav vzniklým TCP spojením, a odpovědi (modrá barva) jsou vypsány na standardní výstup.

Naše ukázka s HTTP klientem není příliš praktická, uživatel použije WWW browser a pro diagnostiku HTTP se lépe hodí např. wget, kterým se zabýváme dále v článku. Jak je ale vidět, pro prvotní diagnostiku síťových služeb se jedná o výborný nástroj (zejména ovládáme-li příslušný aplikační protokol <g>).

Server funguje velmi podobně, příkaz voláme s parametrem -l (listen) a pomocí -p <port> určíme TCP port, na kterém se má naslouchat (pro porty nižší než 1024 je na unixových systémech třeba zvláštních privilegií, např. v Linuxu musí proces získat CAP_NET_BIND_SERVICE, což obvykle smí pouze root). Následující příklad ukazuje přenesení souborů v obou směrech. Na straně serveru spustíme

nc -q 1 -l -p 1234 < server_to_client > client_to_server

a na klientovi poté

nc -q 1 server_name_or_IP 1234 > server_to_client < client_to_server

Parametr -q 1 zajistí uzavření spojení po obdržení EOF. Tento primitivní způsob přenosu dat se hodí v případě, že není k dispozici žádná jiná služba, je také vhodný k měření rychlosti linky (odpadá jakákoliv režie protokolu).

Místo přenosu souborů lze nc využít i pro přenos streamů. Pokud na jednom stroji máme např. DVB kartu, můžeme si vysílání spustit na jiném stroji; na stroji s kartou spustíme play_CT1 | nc -l -p 1234 a na stanici nc server | mplayer -cache 4096 -. play_CT1 je skript, který na standardní výstup pouští vysílání ČT1 (případně libovolný jiný obsah, který je třeba přenést). Keš v mplayeru je použita pro plynulé přehrávání v případě fluktuací v přenosu.

FTP

Historie tohoto protokolu sahá až do roku 1973. Přesto, že jeho návrh je pro dnešní potřeby již velmi nevhodný, stále se jedná vedle HTTP o nejpoužívanější protokol pro přenos dat na internetu.

Na většině unixových systémů je k dispozici základní klient překvapivě pojmenovaný ftp. Ukažme si, jak práce s ním může vypadat

bfu@linux:~$ ftp mirror.linuxsoft.cz
Connected to mirror.linuxsoft.cz.
220 ProFTPD 1.2.9 Server (mirror.linuxsoft.cz) [212.71.169.49]
Name (mirror.linuxsoft.cz:bfu): anonymous
331 Anonymous login ok, send your complete email address as your
password.
Password: *****
230-------------------------------------------------------------------
230-Welcome to mirror.linuxsoft.cz!
230-
230-This public FTP server is served by LAM plus Ltd., see
230-http://www.vasesit.cz for more details. In case of any unusual
230-problems, please report them via e-mail to <mirror@linuxsoft.cz>.
230-------------------------------------------------------------------
230 Anonymous access granted, restrictions apply.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> passive
Passive mode on.
ftp> cd pool/104/9
250 CWD command successful.
ftp> ls
227 Entering Passive Mode (212,71,169,49,191,232).
150 Opening ASCII mode data connection for file list
-rw-r--r--   1 linuxsoft linuxsoft 186901451 Jun 29 12:12
CorelPHOTOPAINT9Lnx.tar.gz
-rw-r--r--   1 linuxsoft linuxsoft       61 Jun 29 12:13 MD5SUMS
226 Transfer complete.
ftp> get CorelPHOTOPAINT9Lnx.tar.gz
local: CorelPHOTOPAINT9Lnx.tar.gz remote: CorelPHOTOPAINT9Lnx.tar.gz
227 Entering Passive Mode (212,71,169,49,191,228).
150 Opening BINARY mode data connection for CorelPHOTOPAINT9Lnx.tar.gz
(186901451 bytes)
226 Transfer complete.
186901451 bytes received in 107.26 secs (1701.6 kB/s)
ftp> exit
221 Goodbye.

Popišme, co se vlastně při spojení děje. Nejprve se připojíme na server a jsme dotázáni na login (nabízen je stejný login jako má naše session na klientovi). Speciální login anonymous se používá pro neautentizovaný přístup, místo hesla se udává e-mailová adresa (některé servery dokonce na různé úrovni kontrolují, zda je zadaný řetězec skutečně platnou e-mailovou adresou), chceme-li zůstat v anonymitě, použijeme např. user@example.com.

Server nás může v průběhu spojení obšťastňovat různými informativními hláškami (informace o serverovém software, obsah souboru welcome.msg apod.), o které jsou uživatelé GUI klientů často ochuzeni. Příkaz passive zapíná pasivní režim. V řídící konexi (z klienta na port 21/tcp FTP serveru) se přenáší jen příkazy a jejich výsledky (tj. to, co vidíme v příkladu), samotná data se přenáší separátní konexí, přičemž se rozlišuje, zda tuto konexi otevírá server (aktivní režim, historicky starší) nebo klient (pasivní režim). Celý návrh je z dnešního pohledu dost nevhodný (z hlediska bezpečnosti, firewallů, NATu), chceme-li si ale vybrat menší zlo, měli bychom používat právě pasivní režim. Některé klienty ho použijí automaticky, u některých je třeba ho zapnout ručně.

Samotné příkazy ve ftp session asi nepotřebují zvláštní komentář. Kromě předvedených cd a get je třeba zmínit ještě put a také jejich varianty podporující zástupné znaky * a ? (mget a mput). Užitečný je také příkaz pwd, seznam všech příkazů podporovaných klientem získáme příkazem help.

Chcete-li se vyhnout nutnosti neustálého zadávání loginu a hesla, lze tyto hodnoty předdefinovat v souboru .netrc v domovském adresáři. Příklad následuje, význam je zřejmý.

machine my.server.cz login me password mojeheslo
machine also.my.server.com login bfu password 4H,f$I/j#7v
default login anonymous password user@host.com

Nutno ještě zmínit, že existují i vylepšené verze řádkového FTP klienta, např. velmi oblíbený ncftp. Umí např. doplňovat názvy souborů a adresářů tabulátorem, stáhnout či vylistovat celý adresářový strom apod.

Wget

Wget je nástroj určený ke získávání souborů přes HTTP a FTP. Narozdíl od ftp nevyžaduje interaktivní ovládání, vše potřebné je předáno jako parametry na příkazové řádce, případně v konfiguračním souboru. Základní použití je opravdu jednoduché, příkazem wget <URL> stáhneme příslušný soubor do aktuálního adresáře. Pojďme se podívat na nejzajímavější volby.

  • --passive-ftp nebo passive_ftp = on v wgetrc zapne pasivní režim pro FTP
  • -O <filename> udává, jak se má jmenovat stažený soubor (-O - pro standardní výstup)
  • -S na standardní chybový výstup vypíše HTTP hlavičky nebo odpovědi FTP serveru
  • -b stahuje na pozadí
  • -q a -nv omezí výstupy programu (první zcela, druhá částečně), vhodné pro stahování na pozadí nebo neinteraktivní spouštění
  • -p stáhne HTML stránku i s veškerým viditelným obsahem (tj. obrázky, zvuky, styly, nikoliv odkazy)
  • -r zapne rekurzivní režim, tj. stáhne dané URL a pokračuje nalezenými odkazy, funguje i s FTP, je-li jako URL zadán adresář, stáhne ho s celým jeho obsahem včetně podadresářů

Ukažme si nyní několik použití. Příklad s www.microsoft.com bychom s využitím wget udělali např. takto:

bfu@linux:~$ wget -S -O /dev/null http://www.microsoft.com/linux.html
--10:36:59--  http://www.microsoft.com/linux.html
           => `/dev/null'
Resolving www.microsoft.com... done.
Connecting to www.microsoft.com[207.46.156.220]:80... connected.
HTTP request sent, awaiting response... 
 1 HTTP/1.1 404 
 2 Connection: keep-alive
 3 Date: Wed, 28 Jul 2004 08:36:59 GMT
 4 Server: Microsoft-IIS/6.0
 5 P3P: CP="ALL IND DSP COR ADM CONo CUR CUSo IVAo IVDo PSA PSD TAI
TELo OUR SAMo CNT COM INT NAV ONL PHY PRE PUR UNI"
 6 X-Powered-By: ASP.NET
 7 Pragma: no-cache
 8 cache-control: no-store
 9 Content-Length: 16134
10 Content-Type: text/html
11 Expires: Wed, 28 Jul 2004 08:36:59 GMT
12 Cache-control: private
10:37:00 ERROR 404: (no description).

Úvodní stránku www.linuxsoft.cz včetně obrázků a stylů snadno stáhneme příkazem

wget -k -p www.linuxsoft.cz

V aktuálním adresáři vznikne adresář www.linuxsoft.cz a v něm soubor index.html a dále všechen potřebný obsah pro správné zobrazení stránky. Parametr -k slouží k přepsání linků ve staženém HTML dokumentu na lokálně stažený obsah. Toto je nutné např. v případě, že na stránce byla použita absolutní URL. Všimněte si, že při neuvedení protokolu v URL se předpokládá http, a není-li z URL zřejmý název souboru, použije se index.html (i když v tomto konkrétním případě se ve skutečnosti jedná o soubor index.php).

Nechat na pozadí stahovat linuxový kernel z FTP lze např. lze takto.

bfu@linux:~$ wget -b -c --limit-rate=50k ftp://sunsite.mff.cuni.cz/
MIRRORS/ftp.kernel.org/pub/linux/kernel/v2.0/linux-2.0.40.tar.bz2
Continuing in background, pid 24486.
Output will be written to `wget-log'

Parametr -b zapíná stahování na pozadí, průběh lze sledovat v souboru wget-log a ukončit lze posláním TERM signálu danému procesu (kill <pid>). Navázání nedokončeného downloadu umožňuje parametr -c. Poslední použitý parametr netřeba vysvětlovat, je ale k dispozici jen v novějších verzích wgetu (např. wget 1.8.1 z Debian Woodyho jej nepodporuje).

V posledním příkladu si ukážeme využití rekurze. Mirror stránek DJB provedeme snadno příkazem

wget -r -l inf -k cr.yp.to
# nebo
wget -m -k cr.yp.to

Volba -m nebo též --mirror nastaví parametry vhodné k mirrorování. Co přesně bude nastaveno lze zjistit v manuálové stránce. Nejdůležitější volby jsou -r, která zapíná rekurzi a -l, která určuje maximální hloubku stahování. Je možné použít při rekurzi a omezení hloubky nám již známou volbu -p. Není-li to explicitně požadováno volbou -H, nestahují se soubory z jiných domén (odkazy mimo cr.yp.to zůstanou nestaženy a nezměněny). Další možnosti najdete v dokumentaci.

Wget je ovšem nutno považovat jen za opravdu základní nástroj pro rekurzivní stahování. Většími možnostmi oplývá např. pavuk nebo httrack.

Zdroje

  • man nc
  • man ftp
  • man wget

Verze pro tisk

pridej.cz

 

DISKUZE

Limitování rychlosti stahování 2.8.2004 10:01 o.k.
wget -c 3.8.2004 00:11 Ivan
  L Re: wget -c 3.8.2004 01:24 Jan Houštěk




Příspívat do diskuze mohou pouze registrovaní uživatelé.
> Vyhledávání software
> Vyhledávání článků

18.1.2017 0:49 /František Kučera
Členové a příznivci spolku OpenAlt se pravidelně schází v Praze a Brně. Fotky z pražských srazů za uplynulý rok si můžete prohlédnout na stránkách spolku. Příští sraz se koná už 19. ledna – tentokrát je tématem ergonomie ovládání počítače – tzn. klávesnice, myši a další zařízení. Také budete mít příležitost si prohlédnout pražský hackerspace Brmlab.
Přidat komentář

8.1.2017 17:51 /František Kučera
Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Přijď na sraz spolku OpenAlt, který se bude konat ve čtvrtek 19. ledna od 18:30 v pražském hackerspacu Brmlab. Tentokrát je tématem srazu ergonomie ovládání počítače – tzn. klávesnice, myši a další zařízení. K vidění bude mechanická klávesnice dasKeyboard, trackball Logitech nebo grafický tablet (a velký touchpad) Wacom. Přineste i vy ukázat svoje zajímavé klávesnice a další HW. V 18:20 je sraz před budovou, v 18:30 jdeme společně dovnitř, je tedy dobré přijít včas. Podle zájmu se později přesuneme do nějaké restaurace v okolí.
Přidat komentář

1.12.2016 22:13 /František Kučera
Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Přijď na sraz spolku OpenAlt, který se bude konat ve čtvrtek 8. prosince od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Sraz bude tentokrát tématický. Bude retro! K vidění budou přístroje jako Psion 5mx nebo Palm Z22. Ze svobodného hardwaru pak Openmoko nebo čtečka WikiReader. Přijďte se i vy pochlubit svými legendami, nebo alespoň na pivo. Moderní hardware má vstup samozřejmě také povolen.
Komentářů: 1

4.9.2016 20:13 /Pavel `Goldenfish' Kysilka
PR: Dne 22.9.2016 proběhne v Praze konference Cloud computing v praxi. Tématy bude např. nejnovější trendy v oblasti cloudu a cloudových řešení, provozování ERP v cloudu, o hostování různých typů softwaru, ale třeba i o zálohování dat nabízeném podnikům formou služby.
Přidat komentář

1.9.2016 11:27 /Honza Javorek
Česká konference o Pythonu, PyCon CZ, stále hledá přednášející skrz dobrovolné přihlášky. Máte-li zajímavé téma, neváhejte a zkuste jej přihlásit, uzávěrka je již 12. září. Konference letos přijímá i přednášky v češtině a nabízí pomoc s přípravou začínajícím speakerům. Řečníci mají navíc vstup zadarmo! Více na webu.
Přidat komentář

27.8.2016 8:55 /Delujek
Dnes po 4 letech komunitního vývoje vyšla diaspora 0.6.0.0
diaspora* je open-source, distribuovaná sociální síť s důrazem na soukromý
Více v oficiálním blog-postu
Přidat komentář

24.8.2016 6:44 /Ondřej Čečák
Poslední týden CFP LinuxDays 2016; pokud byste rádi přednášeli na LinuxDays 2016 8. a 9. října v Praze, můžete svůj příspěvek přihlásit, následovat bude veřejné hlasování.
Přidat komentář

9.8.2016 22:56 /Petr Ježek
Zařazení souborového systému reiser4 do jádra 4.7 znamená konečně konec patchování jádra jen kvůli možnosti použít reiser4.
Přidat komentář

   Více ...   Přidat zprávičku

> Poslední diskuze

18.1.2017 20:18 / martin horky
Spolupraca linuxu a microsoftu

17.1.2017 9:57 / Pavel Hrubeš
Re: Externí USB televizní karta

4.1.2017 11:24 / Marcum
extension to house

3.1.2017 10:09 / bolden
country cottages

4.12.2016 22:54 / František Kučera
Dárek

Více ...

ISSN 1801-3805 | Provozovatel: Pavel Kysilka, IČ: 72868490 (2003-2017) | mail at linuxsoft dot cz | Design: www.megadesign.cz | Textová verze