Guida wget

Da RELug :: Reggio Emilia Linux User Group.

La seguente guida è stata realizzare per imparare a scaricare file, immagini, interi siti web tramite il tool wget. Il sistema su cui è stata implementata è Ubuntu 10.04 LTS x86_64.

Introduzione

Innanzitutto, che cos'è e a che cosa serve wget? E' un programma sotto licenza GNU GPL che permette di scaricare materiale dalla rete globale internet o da un rete locale. Supporta i seguenti protocolli: HTTP - HTTPS - FTP. Questo tool viene utilizzato tramite la linea di comando (ma esiste anche un'interfaccia grafica per Gnome chiamata gwget) e può tornare utile per svariati compiti, in particolar modo quando si ha a disposizione solamente una shell come nel caso della gestione di un server o di un accesso in remoto ad un computer.

Ottenere Wget

E' possibile trovarlo sulla pagina ufficiale: wget Inoltre è possibile scaricarlo direttamente via http o ftp.

Se si dispone di un sistema operativo GNU/Linux, solitamente viene installato con l'installazione base del sistema operativo stesso ma nel caso pessimo è possibile trovarlo nei propri repository (Synaptic, Adept, ecc.).
Per capire se è presente, digitare da terminale:

 aptitude search wget

Se a fianco di wget compare una i (installed) allora significa che è già installato nel sistema.

Scaricare un file

Il metodo più semplice per imparare ad utilizzare un programma è proprio quello di provarlo.

 Consiglio : utilizzate la cartella /tmp/ per fare le prove con wget, in questo modo tutto ciò
 che farete in quest'area verrà rimosso al prossimo riavvio.

Apriamo un terminale e digitiamo:

 wget it.wikipedia.org

Ciò che abbiamo fatto è stato scaricare nella cartella corrente la pagina principale di Wikipedia. E' possibile notare la facilità con cui viene scaricata una pagina web: lo stesso ragionamento lo si può fare con un file di qualsiasi tipo.

 wget http://ftp.gnu.org/gnu/wget/wget-latest.tar.bz2

Sia la pagina web che l'ultima versione di wget vengono scaricati allo stesso modo: <comando> <argomento>.

 Note
 1. Nel primo esempio è stato omesso http://: la risposta è sì, si può omettere tale parte.

Usare un file di URL

Passare tanti argomenti quanti sono i file da scaricare può diventare un'operazione onerosa e piuttosto stancante. Pensate ad esempio di dover scaricare le immagini ISO di diverse distribuzioni (Debian, Ubuntu, gNewSense, ecc.): non sarebbe più facile prendere un file e inserirci dentro tutti i vari URL e poi darlo in pasto a wget? Yeah! Possiamo fare anche questo!

La via più semplice è quella di creare un file testuale contenente gli URL dei file da scaricare, ogni indirizzo situato riga per riga. Come esempio, ecco il contenuto del file linkIso:

 http://it.releases.ubuntu.com/10.04.1/ubuntu-10.04.1-desktop-i386.iso
 http://it.releases.ubuntu.com/10.04.1/ubuntu-10.04.1-server-i386.iso
 http://it.releases.ubuntu.com/10.04.1/ubuntu-10.04.1-alternate-i386.iso
 http://it.releases.ubuntu.com/10.04.1/ubuntu-10.04.1-netbook-i386.iso

In linkIso sono presenti i link alle immagini ISO della distro Ubuntu, in particolare alla versione 10.04.1 del desktop, server, alternate e netbook. Per scaricarle in sequenza con wget dovremo soltanto digitare il seguente comando da shell:

 wget -i linkIso

Di conseguenza, verranno scaricate man mano tutte le immagino, proprio come volevamo. L'opzione -i permette di lavorare su un file semplice di testo in input.

E se volessimo inserire qualche commento? Oppure gestire file HTML? In nostro soccorso arriva l'opzione --force-html: in questo modo possiamo dare in pasto a wget anche dei file il cui contenuto è sintassi HTML. A questo punto prendiamo il file linkIso e trasformiamolo in un file HTML, inserendo dei commenti qua e là, e aggiungendo nuove distribuzioni da scaricare. Il contenuto del neonato linkIso.html sarà il seguente:

 < !-- 
 Lista delle immagini ISO delle seguenti distribuzioni GNU/Linux :
       - Debian
       - Ubuntu
       - Sabayon
       - gNewSense
       - Gentoo
       - Fedora
 	
 Le architetture supportate sono:
       - x86
       - amd64
       - ia64
       - x86_64
       - i686
 -->
 
 < !-- x86 -->
 
 < !-- DEBIAN 5.05 Lenny -->
 <base href="http://cdimage.debian.org/debian-cd/5.0.5/i386/iso-cd/">
 < !-- Net Install -->
 <a href="debian-505-i386-netinst.iso">
 
 < !-- UBUNTU 10.04.1 LTS -->
 <base href="http://it.releases.ubuntu.com/10.04.1/">
 < !-- Desktop -->
 <a href="ubuntu-10.04.1-desktop-i386.iso">
 < !-- Server -->
 <a href="ubuntu-10.04.1-server-i386.iso">
 < !-- Alternate -->
 <a href="ubuntu-10.04.1-alternate-i386.iso">
 < !-- Netbook -->
 <a href="ubuntu-10.04-netbook-i386.iso">
 
 < !-- SABAYON 5.3 -->
 <base href="ftp://na.mirror.garr.it/mirrors/sabayonlinux/iso/">
 < !-- Gnome -->
 <a href="Sabayon_Linux_5.3_x86_G.iso">
 < !-- KDE -->
 <a href="Sabayon_Linux_5.3_x86_K.iso">
 < !-- LXDE -->
 <a href="Sabayon_Linux_5.3_x86_LXDE.iso">
 < !-- XFCE -->
 <a href="Sabayon_Linux_5.3_x86_XFCE.iso">
 
 < !-- GNEWSENSE 2.3 -->
 <base href="http://cdimage.gnewsense.org/">
 <a href="gnewsense-livecd-deltah-i386-2.3.iso">
 
 < !-- GENTOO 10.1 -->
 <base href="http://mirrors.kernel.org/gentoo/releases/x86/autobuilds/current-iso/">
 < !-- Minimal -->
 <a href="install-x86-minimal-20100817.iso">
 
 < !-- FEDORA 13 -->
 <base href="http://fedora.mirror.garr.it/mirrors/fedora/linux/releases/13/Fedora/i386/iso/">
 < !-- Net Install -->
 <a href="Fedora-13-i386-netinst.iso">
 
 < !-- amd64 -->
 
 < !-- DEBIAN 5.05 Lenny -->
 <base href="http://cdimage.debian.org/debian-cd/5.0.5/amd64/iso-cd/">
 < !-- Net Install -->
 <a href="debian-505-amd64-netinst.iso">
 
 < !-- UBUNTU 10.04.1 LTS -->
 <base href="http://it.releases.ubuntu.com/10.04.1/">
 < !-- Desktop -->
 <a href="ubuntu-10.04.1-desktop-amd64.iso">
 < !-- Server -->
 <a href="ubuntu-10.04.1-server-amd64.iso">
 < !-- Alternate -->
 <a href="ubuntu-10.04.1-alternate-amd64.iso">
 
 < !-- SABAYON 5.3 -->
 <base href="ftp://na.mirror.garr.it/mirrors/sabayonlinux/iso/">
 < !-- Gnome -->
 <a href="Sabayon_Linux_5.3_amd64_G.iso">
 < !-- KDE -->
 <a href="Sabayon_Linux_5.3_amd64_K.iso">
 < !-- LXDE -->
 <a href="Sabayon_Linux_5.3_amd64_LXDE.iso">
 < !-- XFCE -->
 <a href="Sabayon_Linux_5.3_amd64_XFCE.iso">
 
 < !-- GENTOO 10.1 -->
 <base href="http://mirrors.kernel.org/gentoo/releases/amd64/autobuilds/current-iso/">
 < !-- Minimal -->
 <a href="install-amd64-minimal-20100819.iso">
 
 < !-- ia64 -->
 
 < !-- DEBIAN 5.05 Lenny -->
 <base href="http://cdimage.debian.org/debian-cd/5.0.5/ia64/">
 < !-- Net Install -->
 <a href="iso-cd/debian-505-ia64-netinst.iso">
 
 < !-- GENTOO 10.1 -->
 <base href="http://distfiles.gentoo.org/releases/ia64/autobuilds/current-iso/">
 < !-- Minimal -->
 <a href="install-ia64-minimal-20100826.iso">
 
 < !-- x86_64 -->
 
 < !-- FEDORA 13 -->
 <base href="http://fedora.mirror.garr.it/mirrors/fedora/linux/releases/13/Fedora/x86_64/iso/">
 < !-- Net Install -->
 <a href="Fedora-13-x86_64-netinst.iso">
 < !-- Live -->
 <base href="http://fedora.mirror.garr.it/mirrors/fedora/linux/releases/13/Live/x86_64/">
 <a href="Fedora-13-x86_64-Live.iso">
 
 < !-- i686 -->
 
 < !-- FEDORA 13 -->
 <base href="http://fedora.mirror.garr.it/mirrors/fedora/linux/releases/13/Live/i686/">
 < !-- Live -->
 <a href="Fedora-13-i686-Live.iso">

Il suddetto file è un ottimo esempio per scaricare tantissimi file, lasciando wget a lavorare mentre nel frattempo si compiono altre operazioni sulla stessa macchina.

 Consiglio : si può utilizzare l'opzione -b per mandare l'esecuzione di wget in background.
 Al termine dell'esecuzione, verrà scritto il resoconto in un file nominato wget-log nella cartella presente.
 Note
 1. In HTML il commento è delimitato dal costrutto ': per poter visionare il contenuto 
    corretto del file linkIso.html è stato necessario modificare il costrutto in < !-- -->.
 2. Il costrutto <base href="URL"> permette di impostare un link base di riferimento per i 
    link successivi. Da notare le immagini di Ubuntu non hanno l'intero URL specificato ma soltanto 
    una parte: la radice è specificata appunto in <base href="http://it.releases.ubuntu.com/10.04.1/">