Visualizzazione post con etichetta bash. Mostra tutti i post
Visualizzazione post con etichetta bash. Mostra tutti i post

lunedì 7 maggio 2012

Script "copia e sposta"

Problema:
Copiare da una directory i files e le directory in ordine di eta`, dal piu` vecchio al piu` recente, in una chiavetta usb, spostandoli infine in una diversa posizione

Ho pensato ad un utilizzo, sia con parametri da linea di comando, che inserimento manuale con relativa domanda, per questo ho lasciato alcune parti dello script, che, anche se non utilizzate o utilizzate solo in parte, possono servire per combinarlo come meglio si ritiene opportuno.

copy-and-move.sh
#!/bin/bash

# Help
if [[ $# -ne 3 || $1 = "-h" ]]; then
    echo "uso: $0 <directory e/o nomefile sorgente> \
<destinazione/percorso completo della directory dove copiare> \
<destinazione/percorso completo della directory dove spostare>"
    echo ""
    exit 1
fi

# Fixed ?
SOURCE="$1"
DESTCP="$2"
DESTMV="$3"


echo -n "Name of the source directory [$SOURCE]: "
read SOURCE
if [ "$SOURCE"x = x ]; then SOURCE="$1"; fi
echo -n "Name of the copy destination directory [$DESTCP]: "
read DESTCP
if [ "$DESTCP"x = x ]; then DESTCP="$2"; fi
echo -n "Name of the move destination directory [$DESTMV]: "
read DESTMV
if [ "$DESTMV"x = x ]; then DESTMV="$3"; fi

NOME="`ls -tr $SOURCE | cut -f1 | head -n 1`"


while [ "$NOME" != "" ]
    do
 echo "Inizio copia .."
 cp -v -R "$SOURCE/$NOME" "$DESTCP";
 if [ "$?" != "1" ]
     then
  echo "Inizio sposta .."
  mv -v "$SOURCE/$NOME" "$DESTMV"
  NOME="`ls -tr $SOURCE | cut -f1 | head -n 1`"
     else
  echo "Ended at: $SOURCE/$NOME"
  exit 1
 fi
done

L'uso e` semplice, richiamato senza parametri o con "-h", visualizza l'help.
Una volta eseguito con parametri, viene chiesta conferma per ogniuno e data la possibilita` di correggerlo, ma: attenzione a non sbagliare.
Quando la chiavetta e` piena, il comando copia va` in errore e mi fermo, visualizzando l'ultima copia in corso senza spostarla, cosi` da poterla eliminare dalla chiavetta ed averla ancora nella posizione originale per la volta successiva.

Dal primo "if", quello dell'help, si potrebbe eliminare la condizione dei parametri in avvio, la parte "$# -ne 3", optando per l'inserimento manuale alla richiesta.

Usatelo a vostro rischio, non mi assumo rensonsabilita`.
E se avete idee per perfezionarlo, usate il modulo commenti o scrivetemi una mail.
Se mi ricordo, poi vi "coloro" le scritte che passano a video quando ci sono tanti piccolo files ;)

mercoledì 23 marzo 2011

downloadfromlist.sh - Salvare contenuti web

Allora ripartiamo.
Ho ripensato a come scaricare i contenuti da internet (pagine, immagini, documenti), praticamente ho rivisto e corretto lo script per la storicizzazione dei contenuti.

Anzitutto, non so che cosa e quanti contenuti voglio scaricare, per questo motivo ho pensato ad un elenco che contenesse
  • URL da scaricare
  • NOME del file scaricato, che nome deve avere una volta scaricato, uguale alla "url" in certi casi e` improponibile, specialmente se contiene caratteri interrogativi o altro
  • TIPO del file che sto` scaricando, per esempio: jpg, pdf, html
E questo e` diventato un file che possiamo chiamare "elenco.txt" e potrebbe contenere questo:
http://srv2.realcam.it/live/pub/12-4.jpg Canazei-Forcella_Pordoi- jpg
http://srv2.realcam.it/live/pub/12-6.jpg Canazei-Marmolada- jpg
http://srv2.realcam.it/live/pub/12-10.jpg Canazei-Lago_e_Passo_Fedaia- jpg
http://webcam.altabadia.org/cam/meteoeye3.jpg Colfosco-Gruppo_Sella_e_Passo_Gardena- jpg
http://www.belledolomiti.it/res/webcam/original/marmolada.jpg Marmolada-Marmolada- jpg
oppure questo:
http://www.dolomitisuperski.com/valfassa/it-IT/previsioni-meteo-val-di-fassa-905IT.html Val_di_Fassa_Meteo- html
http://www.dolomitisuperski.com/valfassa/it-IT/906IT.html Val_di_Fassa_Piste_e_Impianti- html
http://www.dolomitisuperski.com/altabadia/it-IT/previsioni-meteo-alta-badia-644IT.html Alta_Badia_Meteo- html
http://www.dolomitisuperski.com/gardena/it-IT/previsioni-meteo-val-gardena-731IT.html Val_Gardena_Meteo- html
http://www.dolomitisuperski.com/arabba/it-IT/previsioni-meteo-arabba-1080IT.html Arabba_Meteo- html
http://www.dolomitisuperski.com/marmolada/it-IT/previsioni-meteo-marmolada-1171IT.html Marmolada_Meteo- html
http://www.dolomitisuperski.com/it-IT/previsioni-meteo-1939IT.html Dolomiti_Superski_Meteo- html
http://www.dolomitisuperski.com/it-IT/104IT.html Dolomiti_Superski_Piste_e_Impianti- html
http://www.dolomitisuperski.com/it-IT/1971IT.html Dolomiti_Superski_Neve- html
Chiamiamoli "hourlist.txt" il primo e "daylist.txt" il secondo, vedremo poi perche`.

Lo script che ho creato, legge un file di input e lo passa ad una funzione che interpreta la riga ricevuta come parametri per i comandi che contiene, ho aggiunto anche una verifica che la riga letta contenga tutti e tre i parametri.
Visto che il suo utilizzo deve prestarsi al download di contenuti nel tempo, cioe`, scaricare lo stesso gruppo di file (il file elenco) anche piu` volte nell'arco della giornata, per non sovrascrivere i precedenti ho fatto in modo che aggiungesse al "nomefile" da memorizzare richiesto dal file di input, la data completa di ore e minuti.

downloadfromlist.sh:
#!/bin/bash

# Questo batch legge dallo standard input una linea alla volta,
# scaricando la url specificata come primo parametro, assegnandogli
# il nome specificato come secondo, e l'estensione come terzo.
# Aggiunge inoltre ANNO MESE GIORNO ORA MINUTI al nome file salvato.
#
# Il file di input deve quindi essere strutturato in questo
# modo:
#       URL NAME EXT
#
# Il comando dev'essere utilizzato cosi`: $0 < inputfile

# Funzione download e rinomina file
fundwload () {
    # Help
    if [[ $# -ne 3 ]]
        then
            echo "Attenzione, il file di input specificato non contiene tutti i parametri necessari"
            exit 2
    fi
    wget -U mozilla $1 --output-document=$2$(date +%Y%m%d%H%M).$3
}

# Help
if [[ $# -ne 0 || $1 = "-h" ]]
    then
    echo "uso: $0 < inputfile"
    echo "oppure"
    echo "uso: cat inputfile | $0"
    echo ""
    echo "Se non specificata redirezione accetta input manuale"
    exit 1
fi

# Lettura standard input e chiamata alla funzione
while read line
    do
        if [ "$line" != "" ]
            then
                fundwload $line
        fi
done
Io lo utilizzo, col demone "cron", scaricando giornalmente alle ore 12 circa i bollettini meteo, mentre le immagini delle webcam ogni mezz'ora dalle 8 alle 18e30 (ci si potrebbe anche fare un filmato :) ).
Rimane il problema degli scaricamenti "doppi", specialmente nel caso delle immagini webcam, potrebbero non essere state aggiornate nell'ultima mezz'ora (o anche piu`), per eliminare i files superflui a fine giornata ripulisco col programma "fdupes".
Il mio "crontab file" probabilmente chiarisce meglio:
*/30 8-18 * * * cd /home/davide/Documents/Dropbox/Snowboard-Bollettini && /home/davide/Documents/Dropbox/Snowboard-Bollettini/downloadfromlist.sh < /home/davide/Documents/Dropbox/Snowboard-Bollettini/hourlist.txt
2 12 * * * cd /home/davide/Documents/Dropbox/Snowboard-Bollettini && /home/davide/Documents/Dropbox/Snowboard-Bollettini/downloadfromlist.sh < /home/davide/Documents/Dropbox/Snowboard-Bollettini/daylist.txt
2 19 * * * fdupes -dN /home/davide/Documents/Dropbox/Snowboard-Bollettini

Direi una procedura/script decisamente piu` snella e pulita delle precedenti.

lunedì 21 marzo 2011

Script per download e storicizzazione contenuti web (Upgrade)

Ho aggiornato lo script che utilizzo per il download dei bollettini nivometeo e delle pagine web di cui desidero una storicizzazione.

Nuovo script:
#!/bin/bash

# Questo batch legge dallo standard input una linea alla volta,
# scaricando la url specificata come primo parametro, assegnandogli
# il nome specificato come secondo, e l'estensione come terzo.
# Aggiunge inoltre ANNO MESE GIORNO al nome file salvato.
# Se il file scaricato e` uguale al primo precedente lo scarta.
#
# Il file di input deve quindi essere strutturato in questo
# modo:
#       URL NAME EXT
#
# Il comando dev'essere utilizzato cosi`: $0 < inputfile
#
# NOTE:
# Al primo utilizzo viene generato un file di confronto, e` un file
# vuoto che puo`/deve essere eliminato quando almeno un'altro e`
# stato scaricato e salvato.


# Funzione Contolla Scarica E Salva
funcses () {
    ls $2*
    if [ $? != 0 ]
        then
            touch $2$(date +%Y%m%d -d "-1 day").$3
    fi
    wget -U mozilla $1 --output-document=$2$(date +%Y%m%d)-new.$3
    i=0
    while [ -e $2$(date +%Y%m%d)-new.$3 ]
        do
            if [ -e $2$(date +%Y%m%d -d "-$i day").$3 ]
                then
                    diff $2$(date +%Y%m%d -d "-$i day").$3 $2$(date +%Y%m%d)-new.$3 > /dev/null
                    if [ $? != 0 ]
                        then
                            mv $2$(date +%Y%m%d)-new.$3 $2$(date +%Y%m%d).$3
                        else
                            rm $2$(date +%Y%m%d)-new.$3
                    fi
                else
                    $(( i++ )) 2> /dev/null
            fi
    done
    }

# Help
if [[ $# -ne 0 || $1 = "-h" ]]
    then
    echo "uso: $0 < inputfile"
    echo "oppure"
    echo "uso: cat inputfile | $0"
    echo ""
    echo "Se non specificata redirezione accetta input manuale"
    exit 1
fi

# Lettura standard input e chiamata alla funzione
while read line
    do
        if [ "$line" != "" ]
            then
                funcses $line
        fi
done 
Un paio di note:
  • L'aggiornamento/download e` giornaliero
  • Il download viene confontato col precedente e memorizzato solo se diverso
  • E` consigliabile farlo "girare" col demone "cron"

mercoledì 16 marzo 2011

Script per storicizzazione bollettini nivo-meteo (e non solo)

Aggiornato lo script per la storicizzazione dei bollettini nivo-meteo.
Ho strutturato la cosa in due parti, uno script che esegue il download, il controllo ed il salvataggio del bollettino, un file che contiene l’elenco dei bollettini da manipolare, rendendo piu` comoda l’aggiunta futura di ulteriori bollettini, o il riutilizzo dello script per altri scopi (che ho gia` in mente, ma e` un’altra storia).
Lo script e` scritto in “bash”, ovviamente gira su OS *nix/bsd.

Il file, che ho chiamato “elenco”, e` strutturato e contiene la “url” del file da scaricare, uno spazio vuoto, il “nome” del file di destinazione (come volete che venga nominato), uno spazio, il tipo del file che stiamo scaricando, questo e` il mio attuale:
http://www.sian.it/infoMeteo/stampaBollettinoStampa.do?settore=C&pubblicato=true&outputFormat=2&generatorClass=it.sian.mwablx.web.print.DatiStampaBollettinoDG&chiamata=infoMeteo EmiliaRomagna-Valanghe- pdf
http://www.sian.it/infoMeteo/stampaBollettinoStampa.do?settore=B&pubblicato=true&outputFormat=2&generatorClass=it.sian.mwablx.web.print.DatiStampaBollettinoDG&chiamata=infoMeteo Toscana-Valanghe- pdf
http://www.meteotrentino.it/bollettini/today/valanghe_it.pdf Trentino-Valanghe- pdf
http://www.meteotrentino.it/bollettini/today/generale_it.pdf Trentino-Meteo- pdf
http://www.arpa.veneto.it/upload_arabba/bollettini_meteo/dolomitimeteo/dolomitimeteo.pdf Veneto-Dolomiti-Meteo- pdf
http://www.arpa.veneto.it/upload_arabba/bollettini_meteo/dolomitineve/dolomitineve.pdf Veneto-Dolomiti-Valanghe- pdf

http://www.meteoam.it/?q=printpdf/node/10897 AM-Rischio-Valanghe- pdf
http://www.meteoam.it/?q=node/10897 AM-Rischio-Valanghe- html

Lo script e` questo, i commenti all’interno aiutano a capirne il funzionamento:
#!/bin/bash

# Questo batch legge dallo standard input una linea alla volta,
# scaricando la url specificata come primo parametro, assegnandogli
# il nome specificato come secondo, e l'estensione come terzo.
# Aggiunge inoltre ANNO MESE GIORNO al nome file salvato.
# Se il file scaricato e` uguale al primo precedente lo scarta.
#
# Il file di input deve quindi essere strutturato in questo
# modo:
#       URL NAME EXT
#
# Il comando dev'essere utilizzato cosi`: $0 < inputfile
#
# NOTE:
# Al primo utilizzo viene generato un file di confronto, e` un file
# vuoto che puo`/deve essere eliminato quando almeno un'altro e`
# stato scaricato e salvato.


# Funzione Contolla Scarica E Salva
funcses () {
    if [ -e `find -name $2\* | tail -n 1` ]
        then echo ""
        else touch $2$(date +%Y%m%d -d "-1 day").$3
    fi
    wget -U mozilla $1 --output-document=$2$(date +%Y%m%d)-new.$3
    i=0
    while [ -e $2$(date +%Y%m%d)-new.$3 ]
        do
            if [ -e $2$(date +%Y%m%d -d "-$i day").$3 ]
                then
                    diff $2$(date +%Y%m%d -d "-$i day").$3 $2$(date +%Y%m%d)-new.$3 > /dev/null
                    if [ $? != 0 ]
                        then
                            mv $2$(date +%Y%m%d)-new.$3 $2$(date +%Y%m%d).$3
                        else
                            rm $2$(date +%Y%m%d)-new.$3
                    fi
                else
                    $(( i++ )) 2> /dev/null
            fi
    done
    }

# Help
if [[ $# -ne 0 || $1 = "-h" ]]
    then
        echo "uso: $0 < inputfile"
        echo "oppure"
        echo "uso: cat inputfile | $0"
        echo ""
        echo "Se non specificata redirezione accetta input manuale"
    exit 1
fi

# Lettura standard input e chiamata alla funzione
while read line
    do
        if [ "$line" != "" ]
            then
                funcses $line
        fi
done
L’uso e` semplice:
nomedelloscript < inputfile
oppure:
cat inputfile | nomedelloscript
"nomedelloscript" e` il nome del file dello script (come lo avete chiamato), "inputfile" e` l’esempio "elenco" usato sopra. Nel mio specifico caso, ho nascosto i file in una directory del web server e l’aggiornamento dei bollettini e` effettuato una sola volta al giorno dal demone "crontab":
crontab -l
# m h  dom mon dow   command
1 12 * * * cd /var/www/nivometeo/ && . /var/www/nivometeo/.dwlbnm < /var/www/nivometeo/.elenco
2 12 * * * cd /var/www/nivometeo/ && . /var/www/nivometeo/.changepermission
si puo` notare come abbia chiamato lo script “.dwlbnm” ed il file “.elenco” per l’elenco (appunto), la directory “/var/www/nivometeo” e` dove si trovano i file e dove vengono scaricati e memorizzati i bollettini.

mercoledì 9 marzo 2011

Script Bollettini Nivo-Meteo

Script per scaricare e creare un'archivio storico di bollettini nivo-meteo.
Non sto` a descriverlo perche` mi sembra molto semplice.
#!/bin/bash

wget "http://www.sian.it/infoMeteo/stampaBollettinoStampa.do?settore=C&pubblicato=true&outputFormat=2&generatorClass=it.sian.mwablx.web.print.DatiStampaBollettinoDG&chiamata=infoMeteo" --output-document="EmiliaRomagna-Valanghe-$(date +%Y%m%d)-new.pdf"
i=0
while [ -e EmiliaRomagna-Valanghe-$(date +%Y%m%d)-new.pdf ]
 do
  if [ -e EmiliaRomagna-Valanghe-$(date +%Y%m%d -d "-$i day").pdf ]
   then
    diff EmiliaRomagna-Valanghe-$(date +%Y%m%d -d "-$i day").pdf EmiliaRomagna-Valanghe-$(date +%Y%m%d)-new.pdf > /dev/null
    if [ $? != "0" ]
     then
      mv EmiliaRomagna-Valanghe-$(date +%Y%m%d)-new.pdf EmiliaRomagna-Valanghe-$(date +%Y%m%d).pdf
      echo "mv EmiliaRomagna-Valanghe-$(date +%Y%m%d)-new.pdf EmiliaRomagna-Valanghe-$(date +%Y%m%d).pdf"
     else
      rm EmiliaRomagna-Valanghe-$(date +%Y%m%d)-new.pdf
      echo "REMOVED: EmiliaRomagna-Valanghe-$(date +%Y%m%d)-new.pdf"
    fi
   else
    $(( i++ )) 2> /dev/null
    echo $i
  fi
done

wget "http://www.sian.it/infoMeteo/stampaBollettinoStampa.do?settore=B&pubblicato=true&outputFormat=2&generatorClass=it.sian.mwablx.web.print.DatiStampaBollettinoDG&chiamata=infoMeteo" --output-document="Toscana-Valanghe-$(date +%Y%m%d)-new.pdf"
i=0
while [ -e Toscana-Valanghe-$(date +%Y%m%d)-new.pdf ]
 do
  if [ -e Toscana-Valanghe-$(date +%Y%m%d -d "-$i day").pdf ]
   then
    diff Toscana-Valanghe-$(date +%Y%m%d -d "-$i day").pdf Toscana-Valanghe-$(date +%Y%m%d)-new.pdf > /dev/null
    if [ $? != "0" ]
     then
      mv Toscana-Valanghe-$(date +%Y%m%d)-new.pdf Toscana-Valanghe-$(date +%Y%m%d).pdf
      echo "mv Toscana-Valanghe-$(date +%Y%m%d)-new.pdf Toscana-Valanghe-$(date +%Y%m%d).pdf"
     else
      rm Toscana-Valanghe-$(date +%Y%m%d)-new.pdf
      echo "REMOVED: Toscana-Valanghe-$(date +%Y%m%d)-new.pdf"
    fi
   else
    $(( i++ )) 2> /dev/null
    echo $i
  fi
done

wget http://www.meteotrentino.it/bollettini/today/valanghe_it.pdf --output-document="Trentino-Valanghe-$(date +%Y%m%d)-new.pdf"
i=0
while [ -e Trentino-Valanghe-$(date +%Y%m%d)-new.pdf ]
 do
  if [ -e Trentino-Valanghe-$(date +%Y%m%d -d "-$i day").pdf ]
   then
    diff Trentino-Valanghe-$(date +%Y%m%d -d "-$i day").pdf Trentino-Valanghe-$(date +%Y%m%d)-new.pdf > /dev/null
    if [ $? != "0" ]
     then
      mv Trentino-Valanghe-$(date +%Y%m%d)-new.pdf Trentino-Valanghe-$(date +%Y%m%d).pdf
      echo "mv Trentino-Valanghe-$(date +%Y%m%d)-new.pdf Trentino-Valanghe-$(date +%Y%m%d).pdf"
     else
      rm Trentino-Valanghe-$(date +%Y%m%d)-new.pdf
      echo "REMOVED: Trentino-Valanghe-$(date +%Y%m%d)-new.pdf"
    fi
   else
    $(( i++ )) 2> /dev/null
    echo $i
  fi
done

wget http://www.meteotrentino.it/bollettini/today/generale_it.pdf --output-document="Trentino-Meteo-$(date +%Y%m%d)-new.pdf"
i=0
while [ -e Trentino-Meteo-$(date +%Y%m%d)-new.pdf ]
 do
  if [ -e Trentino-Meteo-$(date +%Y%m%d -d "-$i day").pdf ]
   then
    diff Trentino-Meteo-$(date +%Y%m%d -d "-$i day").pdf Trentino-Meteo-$(date +%Y%m%d)-new.pdf > /dev/null
    if [ $? != "0" ]
     then
      mv Trentino-Meteo-$(date +%Y%m%d)-new.pdf Trentino-Meteo-$(date +%Y%m%d).pdf
      echo "mv Trentino-Meteo-$(date +%Y%m%d)-new.pdf Trentino-Meteo-$(date +%Y%m%d).pdf"
     else
      rm Trentino-Meteo-$(date +%Y%m%d)-new.pdf
      echo "REMOVED: Trentino-Meteo-$(date +%Y%m%d)-new.pdf"
    fi
   else
    $(( i++ )) 2> /dev/null
    echo $i
  fi
done

wget http://www.arpa.veneto.it/upload_arabba/bollettini_meteo/dolomitimeteo/dolomitimeteo.pdf --output-document="Veneto-Dolomiti-Meteo-$(date +%Y%m%d)-new.pdf"
i=0
while [ -e Veneto-Dolomiti-Meteo-$(date +%Y%m%d)-new.pdf ]
 do
  if [ -e Veneto-Dolomiti-Meteo-$(date +%Y%m%d -d "-$i day").pdf ]
   then
    diff Veneto-Dolomiti-Meteo-$(date +%Y%m%d -d "-$i day").pdf Veneto-Dolomiti-Meteo-$(date +%Y%m%d)-new.pdf > /dev/null
    if [ $? != "0" ]
     then
      mv Veneto-Dolomiti-Meteo-$(date +%Y%m%d)-new.pdf Veneto-Dolomiti-Meteo-$(date +%Y%m%d).pdf
      echo "mv Veneto-Dolomiti-Meteo-$(date +%Y%m%d)-new.pdf Veneto-Dolomiti-Meteo-$(date +%Y%m%d).pdf"
     else
      rm Veneto-Dolomiti-Meteo-$(date +%Y%m%d)-new.pdf
      echo "REMOVED: Veneto-Dolomiti-Meteo-$(date +%Y%m%d)-new.pdf"
    fi
   else
    $(( i++ )) 2> /dev/null
    echo $i
  fi
done

wget http://www.arpa.veneto.it/upload_arabba/bollettini_meteo/dolomitineve/dolomitineve.pdf --output-document="Veneto-Dolomiti-Valanghe-$(date +%Y%m%d)-new.pdf"
i=0
while [ -e Veneto-Dolomiti-Valanghe-$(date +%Y%m%d)-new.pdf ]
 do
  if [ -e Veneto-Dolomiti-Valanghe-$(date +%Y%m%d -d "-$i day").pdf ]
   then
    diff Veneto-Dolomiti-Valanghe-$(date +%Y%m%d -d "-$i day").pdf Veneto-Dolomiti-Valanghe-$(date +%Y%m%d)-new.pdf > /dev/null
    if [ $? != "0" ]
     then
      mv Veneto-Dolomiti-Valanghe-$(date +%Y%m%d)-new.pdf Veneto-Dolomiti-Valanghe-$(date +%Y%m%d).pdf
      echo "mv Veneto-Dolomiti-Valanghe-$(date +%Y%m%d)-new.pdf Veneto-Dolomiti-Valanghe-$(date +%Y%m%d).pdf"
     else
      rm Veneto-Dolomiti-Valanghe-$(date +%Y%m%d)-new.pdf
      echo "REMOVED: Veneto-Dolomiti-Valanghe-$(date +%Y%m%d)-new.pdf"
    fi
   else
    $(( i++ )) 2> /dev/null
    echo $i
  fi
done

wget -U mozilla http://www.meteoam.it/?q=printpdf/node/10897 --output-document="AM-Rischio-Valanghe-$(date +%Y%m%d)-new.pdf"
i=0
while [ -e AM-Rischio-Valanghe-$(date +%Y%m%d)-new.pdf ]
 do
  if [ -e AM-Rischio-Valanghe-$(date +%Y%m%d -d "-$i day").pdf ]
   then
    diff AM-Rischio-Valanghe-$(date +%Y%m%d -d "-$i day").pdf AM-Rischio-Valanghe-$(date +%Y%m%d)-new.pdf > /dev/null
    if [ $? != "0" ]
     then
      mv AM-Rischio-Valanghe-$(date +%Y%m%d)-new.pdf AM-Rischio-Valanghe-$(date +%Y%m%d).pdf
      echo "mv AM-Rischio-Valanghe-$(date +%Y%m%d)-new.pdf AM-Rischio-Valanghe-$(date +%Y%m%d).pdf"
     else
      rm AM-Rischio-Valanghe-$(date +%Y%m%d)-new.pdf
      echo "REMOVED: AM-Rischio-Valanghe-$(date +%Y%m%d)-new.pdf"
    fi
   else
    $(( i++ )) 2> /dev/null
    echo $i
  fi
done

wget -U mozilla http://www.meteoam.it/?q=node/10897 --output-document="AM-Rischio-Valanghe-$(date +%Y%m%d)-new.html"
i=0
while [ -e AM-Rischio-Valanghe-$(date +%Y%m%d)-new.html ]
 do
  if [ -e AM-Rischio-Valanghe-$(date +%Y%m%d -d "-$i day").html ]
   then
    diff AM-Rischio-Valanghe-$(date +%Y%m%d -d "-$i day").html AM-Rischio-Valanghe-$(date +%Y%m%d)-new.html > /dev/null
    if [ $? != "0" ]
     then
      mv AM-Rischio-Valanghe-$(date +%Y%m%d)-new.html AM-Rischio-Valanghe-$(date +%Y%m%d).html
      echo "mv AM-Rischio-Valanghe-$(date +%Y%m%d)-new.html AM-Rischio-Valanghe-$(date +%Y%m%d).html"
     else
      rm AM-Rischio-Valanghe-$(date +%Y%m%d)-new.html
      echo "REMOVED: AM-Rischio-Valanghe-$(date +%Y%m%d)-new.html"
    fi
   else
    $(( i++ )) 2> /dev/null
    echo $i
  fi
done

Riferimenti:
http://blog.snowboardactivity.dreamhosters.com/2011/03/13/bollettini-nivometeo/