This shows you the differences between two versions of the page.
rl:labs:09:contents:04 [2013/11/17 13:38] mihai.carabas [04. Tutorial port forwarding (DNAT)] |
rl:labs:09:contents:04 [2024/12/04 17:52] (current) laura.ruse [04. [15p] Descărcare recursivă de resurse web] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ==== 04. Tutorial port forwarding (DNAT) ==== | + | ==== 04. [15p] Descărcare recursivă de resurse web ==== |
- | Dorim să putem accesa prin SSH, din Internet, stația ''red''. Acest lucru nu este posibil în mod implicit întrucât stația ''red'' nu are un IP rutabil. Vom aplica pe ruter (stația ''host'') o regulă prin care redirectăm traficul ce vine către ''host'' pe portul ''22000'' către portul ''22'' (SSH) al stației ''red'':<code bash> | + | La adresa ''%%http://red/folder%%'' se află o structură de directoare și fișiere. Pe stația ''host'', descărcați întreaga structură folosind o singură comandă ''wget'' cu parametrul corespunzător. |
- | root@host:~# iptables -t nat -A PREROUTING -p tcp --dport 22000 -j DNAT --to-dest 192.168.1.2:22 | + | |
+ | <note tip> | ||
+ | Pentru a identifica opțiunea corespunzătoare, căutați în pagina de manual a ''wget'' după șirul ''recursive''. | ||
+ | </note> | ||
+ | |||
+ | Folosiți utilitarul ''tree'' pentru a lista conținutul directorului descărcat. Este posibil ca pachetul ''tree'' să fie deja instalat pe ''host''. Dacă nu este instalat, atunci puteți folosi următoarea comandă pentru a-l instala: | ||
+ | <code bash> | ||
+ | root@host:~# apt-get install tree | ||
</code> | </code> | ||
- | IP-ul ''192.168.1.2'' este IP-ul lui ''red''. Pentru a verifica executați comanda ''ping red'' și vizualizați IP-ul. | ||
- | Pentru a testa efectul comenzii de mai sus, de pe sistemul fizic (acela cu ''Desktop''), deschideți un nou terminal și conectați-vă prin ''ssh'' folosind portul ''22000'' la stația ''host'':<code bash> | ||
- | student@mjolnir:~# ssh -p 22000 root@$ADRESA_IP_MV | ||
- | root@192.168.138.129's password: | ||
- | Welcome to Ubuntu 12.04.3 LTS (GNU/Linux 3.2.0-53-generic-pae i686) | ||
- | * Documentation: https://help.ubuntu.com/ | + | Când rulați ''tree'' pe directorul descărcat observați prezența mai multor fișiere cu nume de forma ''index.html?C=S;O=D''. Aceste fișiere sunt fișiere de tip directory listing generate de serverul web și nu avem nevoie de ele. Ștergeți structura de directoare pe care tocmai ați descărcat-o pe stația ''host'' și descărcați-o din nou ignorând aceste fișiere. |
- | Last login: Sun Nov 17 10:57:42 2013 | + | |
- | root@red:~# | + | <note tip> |
+ | Urmăriți discuția de [[http://stackoverflow.com/questions/273743/using-wget-to-recursively-fetch-a-directory-with-arbitrary-files-in-it|aici]]. Să aveți în vedere și partea din discuția care conține șirul //%%"without the hostname"%%//. | ||
+ | </note> | ||
+ | |||
+ | Structura de directoare trebuie să fie similară cu:<code> | ||
+ | root@host:~# tree folder/ | ||
+ | folder/ | ||
+ | ├── embedded | ||
+ | │ ├── Qualcomm | ||
+ | │ │ ├── Krait | ||
+ | │ │ │ └── info.txt | ||
+ | │ │ └── Scorpion | ||
+ | │ │ └── info.txt | ||
+ | │ └── TI | ||
+ | │ ├── OMAP3 | ||
+ | │ │ └── info.txt | ||
+ | │ └── OMAP4 | ||
+ | │ └── info.txt | ||
+ | └── mobile | ||
+ | ├── Apple | ||
+ | │ ├── iPadAir | ||
+ | │ │ └── info.txt | ||
+ | │ └── iPhone5S | ||
+ | │ └── info.txt | ||
+ | |||
+ | ├── Nexus4 | ||
+ | │ └── info.txt | ||
+ | └── Nexus7 | ||
+ | └── info.txt | ||
+ | |||
+ | 14 directories, 8 files | ||
</code> | </code> | ||
- | Observați că am ajuns direct pe stația ''red''. | + | <hidden> |
+ | <solution> | ||
+ | Pentru descărcarea inițială folosim comanda ''wget'' cu opțiunea ''-r'' apoi rulăm ''tree'':<code bash> | ||
+ | root@host:~# wget -r http://red/folder/ | ||
+ | [...] | ||
+ | root@host:~# tree red/ | ||
+ | [...] | ||
+ | </code> | ||
+ | Ștergem vechea structură:<code bash> | ||
+ | root@host:~# rm -fr folder/ | ||
+ | </code> | ||
+ | Ca să avem un output mai aranjat, rulăm următoarea comandă ''wget'':<code bash> | ||
+ | root@host:~# wget -r -nH -np --reject "index.html*" http://red/folder/ | ||
+ | </code> | ||
+ | Se vor descărca astfel doar fișierele utile, cele existente în structura de directoare de pe server. | ||
+ | </solution> | ||
+ | </hidden> |