11.04.2013 Views

Guida avanzata di scripting Bash - Portale Posta DMI

Guida avanzata di scripting Bash - Portale Posta DMI

Guida avanzata di scripting Bash - Portale Posta DMI

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

}<br />

echo "Non posso scrivere nel file $PID_FILE"<br />

exit $E_RETURN<br />

Capitolo 12. Filtri, programmi e coman<strong>di</strong> esterni<br />

echo -n "Recupero e perfezionamento della lista <strong>di</strong> aggiornamento . . ."<br />

# Recupera la lista -- ’eval’ è necessario per far eseguire rsync<br />

#+ come comando unico.<br />

# $3 e $4 sono la data e l’ora <strong>di</strong> creazione del file.<br />

# $5 è il nome completo del pacchetto.<br />

precedente=<br />

pre_file=<br />

pre_data=0<br />

eval /bin/nice /usr/bin/rsync \<br />

-r $include $esclude $URL | \<br />

egrep ’^dr.x|^-r’ | \<br />

awk ’{print $3, $4, $5}’ | \<br />

sort -k3 | \<br />

{ while read riga; do<br />

# Calcola i secon<strong>di</strong> a partire da epoch per scartare i<br />

#+ pacchetti obsoleti.<br />

cor_data=$(date -d "$(echo $riga | awk ’{print $1, $2}’)" +%s)<br />

# echo $cor_data<br />

# Recupera il nome del file.<br />

cor_file=$(echo $riga | awk ’{print $3}’)<br />

# echo $cor_file<br />

# Recupera il nome del pacchetto rpm dal nome del file,<br />

#+ se possibile.<br />

if [[ $cor_file == *rpm ]]; then<br />

nome_pkg=$(echo $cor_file | sed -r -e \<br />

’s/(^([^_-]+[_-])+)[[:<strong>di</strong>git:]]+\..*[_-].*$/\1/’)<br />

else<br />

nome_pkg=<br />

fi<br />

# echo $nome_pkg<br />

if [ -z "$nome_pkg" ]; then # Se non è un file rpm,<br />

echo $cor_file >> $TMP #+ lo accoda alla lista <strong>di</strong> download.<br />

elif [ "$nome_pkg" != "$precedente" ]; then # Trovato un nuovo<br />

#+ pacchetto.<br />

echo $pre_file >> $TMP # Accoda il<br />

#+ precedente.<br />

precedente=$nome_pkg # Salva quello<br />

#+ corrente.<br />

pre_data=$cor_data<br />

pre_file=$cor_file<br />

elif [ "$cor_data" -gt "$pre_data" ]; then # Stesso pacchetto,<br />

#+ ma più recente,<br />

pre_data=$cor_data #+ aggiorna il<br />

#+ puntatore precedente.<br />

pre_file=$cor_file<br />

308

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!