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.

Backup<br />

Numeri primi<br />

Numeri della lotteria<br />

Intero o stringa<br />

prime sei cifre dell’output.<br />

Appen<strong>di</strong>ce M. Esercizi<br />

Si archivino come “tarball” (file *.tar.gz) tutti i file presenti nella vostra <strong>di</strong>rectory home<br />

(/home/vostro-nome) che sono stati mo<strong>di</strong>ficati nelle ultime 24 ore. Suggerimento: si usi find.<br />

Si visualizzino (allo stdout) tutti i numeri primi compresi tra 60000 e 63000. L’output dovrebbe<br />

essere elegantemente or<strong>di</strong>nato in colonne (suggerimento: si usi printf).<br />

Un tipo <strong>di</strong> lotteria prevede l’estrazione <strong>di</strong> cinque numeri <strong>di</strong>versi nell’intervallo 1 - 50. Si scriva uno<br />

script che generi cinque numeri pseudocasuali compresi in quell’intervallo, senza duplicazioni. Lo<br />

script dovrà dare la possibilità <strong>di</strong> scelta tra la visualizzazione dei numeri allo stdout o il loro<br />

salvataggio in un file, con data e ora in cui quella particolare serie numerica è stata generata.<br />

INTERMEDI<br />

Scrivete una funzione per uno script in grado <strong>di</strong> determinare se l’argomento ad esso passato è un<br />

numero o una stringa. La funzione deve restituire TRUE (0) in caso <strong>di</strong> intero o FALSE (1) se si<br />

tratta <strong>di</strong> una stringa.<br />

Suggerimento: cosa restituisce l’espressione seguente nel caso $1 non sia un intero?<br />

expr $1 + 0<br />

Gestione dello spazio su <strong>di</strong>sco<br />

Rimozione <strong>di</strong> account inattivi<br />

Rispettare le quote <strong>di</strong>sco<br />

Si elenchino, uno alla volta, tutti i file della <strong>di</strong>rectory /home/nomeutente <strong>di</strong> <strong>di</strong>mensioni maggiori<br />

<strong>di</strong> 100K. Ad ogni file elencato si dovrà dare all’utente la possibilità <strong>di</strong> scelta tra la sua cancellazione<br />

o la sua compressione, dopo <strong>di</strong> che verrà visualizzato il file successivo. Si registrino in un file <strong>di</strong> log<br />

i nomi <strong>di</strong> tutti i file cancellati nonché la data e l’ora della cancellazione.<br />

Su una rete, degli account inattivi rappresentano uno spreco <strong>di</strong> spazio del <strong>di</strong>sco oltre che un rischio<br />

per la sicurezza. Scrivete uno script d’amministrazione (deve essere invocato da root o dal demone<br />

cron) che controlli e cancelli gli account degli utenti inutilizzati da più <strong>di</strong> 90 giorni.<br />

Scrivete uno script, per un sistema multiutente, che verifichi l’utilizzo del <strong>di</strong>sco. Nel caso un utente<br />

oltrepassi il limite preassegnato (ad esempio, 100 MB) alla sua <strong>di</strong>rectory /home/nomeutente, lo<br />

script dovrà inviare automaticamente, a quell’utente, una e-mail d’avvertimnento.<br />

813

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

Saved successfully!

Ooh no, something went wrong!