tag:blogger.com,1999:blog-90562254037586206152024-03-12T19:38:07.169-07:00NotizieSpazioGamesTechnoNewshttp://www.blogger.com/profile/09371679365443101581noreply@blogger.comBlogger223125tag:blogger.com,1999:blog-9056225403758620615.post-47988595673715163392014-01-22T05:31:00.000-08:002014-01-22T05:31:39.339-08:00ESERCIZI SVOLTI TERMINALE BASH MAC LINUX<div class="MsoNormal">
<div class="MsoNormal">
<b>1 Creare uno script che produca un log che registri tutti i <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">processi lanciati dall'avvio dello<o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">script con l'indicazione di quale Ë il parent che li ha lanciati</span><o:p></o:p></b></div>
<div class="MsoNormal">
<b>("il processo XY ha lanciato il processo ZZ").<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
export IFS=$'\n';<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: red; background-position: initial initial; background-repeat: initial initial;">pid=(`ps axo pid`)<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: red; background-position: initial initial; background-repeat: initial initial;">ppid=(`ps axo ppid`)</span><o:p></o:p></div>
<div class="MsoNormal">
lenpid=${#pid[*]}<o:p></o:p></div>
<div class="MsoNormal">
i=1<o:p></o:p></div>
<div class="MsoNormal">
while [ $i -lt $lenpid ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
echo "il processo ${ppid[$i]} ha lanciato il processo ${pid[$i]}">>log<o:p></o:p></div>
<div class="MsoNormal">
let i++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
pid=(`ps axo pid,ppid | awk '{print $1}'`)<o:p></o:p></div>
<div class="MsoNormal">
k=0<o:p></o:p></div>
<div class="MsoNormal">
for k in ${pid[*]}<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
printf "%s\n" $k<o:p></o:p></div>
<div class="MsoNormal">
let k++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>1 <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">Trasformare</span> ricorsivamente tutti i nomi di file contenuti in una directory sostituendo<o:p></o:p></b></div>
<div class="MsoNormal">
<b>i caratteri <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">maiuscoli con i minuscoli</span>.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
for file in *<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;"> </span><span style="background-color: lime;">fnome=`basename $file`<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: lime;"> n=`echo $fnome | tr a-z A-Z`</span><o:p></o:p></div>
<div class="MsoNormal">
if [ "$fnome" != "$n" ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
mv $fnome $n<o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>1 Creare uno script che aggiorni continuamente <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">l'ora completa dei secondi</span>.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
while :<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;"> </span><span style="background-color: lime;">date</span><o:p></o:p></div>
<div class="MsoNormal">
sleep 1<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>3 Creare uno script che al passare del tempo disegni un <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">grafico della<o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">percentuale di CPU utilizzata da un processo di PID</span> dato come parametro. Fare in modo che<o:p></o:p></b></div>
<div class="MsoNormal">
<b>l'intervallo di campionamento della grandezza sia un parametro dello script.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
echo "I pid presenti sono:" <o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: red; background-position: initial initial; background-repeat: initial initial;">ps axo pid</span><o:p></o:p></div>
<div class="MsoNormal">
echo "Scegli un pid:"<o:p></o:p></div>
<div class="MsoNormal">
read pid <o:p></o:p></div>
<div class="MsoNormal">
while :<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
cpu=`ps axo pid,pcpu | grep $pid | awk '{print $2}'`<o:p></o:p></div>
<div class="MsoNormal">
arrotondato=$(echo $cpu | awk '{printf("%.0f\n", $1)}')<o:p></o:p></div>
<div class="MsoNormal">
echo "Il valore è $arrotondato"<o:p></o:p></div>
<div class="MsoNormal">
i=0<o:p></o:p></div>
<div class="MsoNormal">
while [ "$i" != "$arrotondato" ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
echo -n "_" <o:p></o:p></div>
<div class="MsoNormal">
let i++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
echo -e ""<o:p></o:p></div>
<div class="MsoNormal">
sleep 1<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>3 Due file hanno lo stesso contenuto a parte una o più variazioni nella loro parte<o:p></o:p></b></div>
<div class="MsoNormal">
<b>iniziale di lunghezza fissa. Fare uno script che dia <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">informazioni sull'identità del<o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">contenuto</span> indipendentemente dalla variazione dell'intestazione dei file.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
echo "Il numero di linee del file 1 è:"<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;">wc -l $1</span><o:p></o:p></div>
<div class="MsoNormal">
echo "Il numero di linee del file 2 è:"<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;">wc -l $2</span><o:p></o:p></div>
<div class="MsoNormal">
echo "Le differenze del file 2 rispetto all'1 sono:"<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;">diff $1 $2 | egrep '^> .*'</span><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>4 Creare uno script bash che sia in grado di <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">esaminare i file di un certo numero di directory elencate dall'utente in un file e di proporre l'eliminazione dei file doppioni</span> (ovvero di evitareche di uno stesso file - indipendentemente dal nome - esistano più copie).<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
echo "Le cartelle elencate nel file di testo sono:"<o:p></o:p></div>
<div class="MsoNormal">
cat -n $1<o:p></o:p></div>
<div class="MsoNormal">
while [ "$cartella" != "0" ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
echo "Inserisci cartella nella quale cercare (inserire 0 per uscire dallo script):"<o:p></o:p></div>
<div class="MsoNormal">
cd<o:p></o:p></div>
<div class="MsoNormal">
read cartella<o:p></o:p></div>
<div class="MsoNormal">
cd home/administrator/$cartella<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;"> </span><span style="background-color: lime;">ls -a $cartella > file.txt</span><o:p></o:p></div>
<div class="MsoNormal">
chmod 755 file.txt<o:p></o:p></div>
<div class="MsoNormal">
cat file.txt<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;"> </span><span style="background-color: lime;">a=$(wc -l "file.txt")</span><o:p></o:p></div>
<div class="MsoNormal">
echo "$a"<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;"> </span><span style="background-color: lime;">lista=`find "$dir" -type f -exec md5sum '{}' \; | sort` <o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: lime;"> md5sum_com=`echo "$lista" | awk '{print $1}' | uniq -d`</span><span style="background-color: lime;"> </span> <o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>5 Un disco dal quale dobbiamo copiare un gran numero di file è guasto e va in<o:p></o:p></b></div>
<div class="MsoNormal">
<b>errore quando viene letto di continuo oltre un certo numero di secondi.<o:p></o:p></b></div>
<div class="MsoNormal">
<b>Per risolvere il problema fare in modo che la <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">copia di una grossa directory<o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">in un altra sia fatta fermandosi per un certo numero di secondi A ogni numero<o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">di secondi prefissato B</span>. Nota: non è necessario copiare realmente grosse<o:p></o:p></b></div>
<div class="MsoNormal">
<b>directory per dimostrare la funzionalità della soluzione.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
tempolimite=0<o:p></o:p></div>
<div class="MsoNormal">
pausa=5<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
echo "Per sospendere il processo di copia premere CTRL + C. Il numero di secondi trascorsi è:"<o:p></o:p></div>
<div class="MsoNormal">
a=$(date +%s)<o:p></o:p></div>
<div class="MsoNormal">
echo "$a"<o:p></o:p></div>
<div class="MsoNormal">
lung=${#a}<o:p></o:p></div>
<div class="MsoNormal">
echo "La lunghezza della stringa è $lung!"<o:p></o:p></div>
<div class="MsoNormal">
echo "Inserire valori da estrarre in modo che rimanga solo l'ultimo carattere (ad es. la lunghezza è 10 estraggo 9 caratteri):"<o:p></o:p></div>
<div class="MsoNormal">
read car<o:p></o:p></div>
<div class="MsoNormal">
sec=${a:$car}<o:p></o:p></div>
<div class="MsoNormal">
while :<o:p></o:p></div>
<div class="MsoNormal">
do <o:p></o:p></div>
<div class="MsoNormal">
i=$a<o:p></o:p></div>
<div class="MsoNormal">
if [ $i == 0 ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
sleep $pausa<o:p></o:p></div>
<div class="MsoNormal">
else<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;"> </span><span style="background-color: lime;">cp -a $1 $2</span><o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
break<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>5 <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">Elencare tutti gli script bash contenuti dentro la directory /etc ordinandoli<o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">per numero di righe</span> (escludendo le righe di commento e le righe vuote)<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
cd<o:p></o:p></div>
<div class="MsoNormal">
cd /etc<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: red; background-position: initial initial; background-repeat: initial initial;">ls *.sh | sort</span><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>6 Fare uno script che permetta a chiunque di <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">aggiungere dati in coda ad un vostro<o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">file senza permettere di visualizzare il suo contenuto</span>.<o:p></o:p></b></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
echo "Scrivere quello che si vuole aggiungere in coda al file testo. Per uscire premere 0!"<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: magenta; background-position: initial initial; background-repeat: initial initial;">chmod 333 testo.txt</span><o:p></o:p></div>
<div class="MsoNormal">
while [ "$files" != "0" ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
read files<o:p></o:p></div>
<div class="MsoNormal">
if [ "$files" != "0" ] <o:p></o:p></div>
<div class="MsoNormal">
then <o:p></o:p></div>
<div class="MsoNormal">
a=$files<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;"> </span><span style="background-color: lime;">echo $a >> testo.txt </span><o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>6 Scrivere uno script che verifica <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">l'esistenza di una certa directory<o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">ed esegue nel proprio contesto gli script contenuti nella directory che<o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">hanno uno schema di nome prefissato</span> (es. nome_scelto_da_te_01,<o:p></o:p></b></div>
<div class="MsoNormal">
<b>nome_scelto_da_te_02, ecc, nell'ordine suggerito dal numero).<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
cd<o:p></o:p></div>
<div class="MsoNormal">
if [ -d Documenti ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
echo "Documenti esiste."<o:p></o:p></div>
<div class="MsoNormal">
cd Documenti<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;"> </span><span style="background-color: lime;">ls *.sh | sort > lista.txt</span><o:p></o:p></div>
<div class="MsoNormal">
cat lista.txt<o:p></o:p></div>
<div class="MsoNormal">
lung=$(wc -l lista.txt | awk '{printf $1}')<o:p></o:p></div>
<div class="MsoNormal">
echo "$lung"<o:p></o:p></div>
<div class="MsoNormal">
k=1 <o:p></o:p></div>
<div class="MsoNormal">
i=0<o:p></o:p></div>
<div class="MsoNormal">
while [ $i -lt $lung ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
script=$(head -$k lista.txt | tail -1)<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;"> </span><span style="background-color: lime;">./$script</span><o:p></o:p></div>
<div class="MsoNormal">
let i++<o:p></o:p></div>
<div class="MsoNormal">
let k++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
else<o:p></o:p></div>
<div class="MsoNormal">
echo "Non esiste"<o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>7 Scrivere in bash un loop che <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">incrementi una variabile e stampare<o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">il valore di tale variabile dopo un secondo</span>.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
echo "Per uscire dallo script premere CTRL+C!"<o:p></o:p></div>
<div class="MsoNormal">
i=0<o:p></o:p></div>
<div class="MsoNormal">
while :<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;"> </span><span style="background-color: lime;">let i++<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: lime;"> sleep 1<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: lime;"> echo "Il numero incrementato è $i!"</span><o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>7 Scrivere in bash un filtro che <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">stampi allo standard output una parola<o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">ogni due presenti allo standard input</span>.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;">cat testo.txt | tr " " "\n" > elenco.txt</span><o:p></o:p></div>
<div class="MsoNormal">
chmod 755 elenco.txt<o:p></o:p></div>
<div class="MsoNormal">
cat elenco.txt<o:p></o:p></div>
<div class="MsoNormal">
righe=$(wc -l elenco.txt | awk '{print $1}')<o:p></o:p></div>
<div class="MsoNormal">
echo "$righe"<o:p></o:p></div>
<div class="MsoNormal">
echo "Le parole stampate 1 ogni 2 sono:"<o:p></o:p></div>
<div class="MsoNormal">
i=1<o:p></o:p></div>
<div class="MsoNormal">
while [ "$i" -le "$righe" ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;"> </span><span style="background-color: lime;">a=$(head -$i elenco.txt | tail -1)<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: lime;"> echo "$a"<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: lime;"> i=$(($i+3))</span><o:p></o:p></div>
<div class="MsoNormal">
done <o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>8 Scrivere in bash uno script interattivo per la raccolta delle generalità di<o:p></o:p></b></div>
<div class="MsoNormal">
<b>un gruppo di persone.<o:p></o:p></b></div>
<div class="MsoNormal">
<b>Lo script, una volta lanciato,<o:p></o:p></b></div>
<div class="MsoNormal">
<b>a) deve <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">chiedere all'utente una password per proseguire nell'inserimento,<o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">uguale per tutti gli utenti ed invisibile mentre è inserita</span>;<o:p></o:p></b></div>
<div class="MsoNormal">
<b>b) <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">non deve essere interrompibile tramite comandi dalla tastiera</span>;<o:p></o:p></b></div>
<div class="MsoNormal">
<b>c) deve <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">aggiungere le generalità ad un file leggibile solo dall'amministratore</span><o:p></o:p></b></div>
<div class="MsoNormal">
<b>(una riga per persona);<o:p></o:p></b></div>
<div class="MsoNormal">
<b>d) deve permettere la <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">terminazione della fase di inserimento dati tramite<o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">scrittura della stessa password, anch'essa invisibile mentre è inserita</span>;<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
password=accedi<o:p></o:p></div>
<div class="MsoNormal">
echo "Inserire il numero di utenti da mettere in archivio:"<o:p></o:p></div>
<div class="MsoNormal">
read numero<o:p></o:p></div>
<div class="MsoNormal">
i=1<o:p></o:p></div>
<div class="MsoNormal">
while [ $i -le $numero ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
read nome <o:p></o:p></div>
<div class="MsoNormal">
echo "Benvenuto utente $nome!"<o:p></o:p></div>
<div class="MsoNormal">
echo "Per accedere digita la password:"<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: magenta; background-position: initial initial; background-repeat: initial initial;">read -s verifica</span><o:p></o:p></div>
<div class="MsoNormal">
if [ $verifica == $password ]<o:p></o:p></div>
<div class="MsoNormal">
then <o:p></o:p></div>
<div class="MsoNormal">
echo "Inserisci le generalità (nel seguente formato: nome cognome, data di nascita, via e numero civico, numero di telefono):"<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: magenta; background-position: initial initial; background-repeat: initial initial;">read generalita</span><o:p></o:p></div>
<div class="MsoNormal">
a=$generalita<o:p></o:p></div>
<div class="MsoNormal">
echo $a >> elenco.txt<o:p></o:p></div>
<div class="MsoNormal">
chown danilo elenco.txt<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: magenta; background-position: initial initial; background-repeat: initial initial;">chmod 422 elenco.txt</span><o:p></o:p></div>
<div class="MsoNormal">
echo "Inserisci di nuovo la password per uscire:"<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: magenta; background-position: initial initial; background-repeat: initial initial;">read -s pass1</span><o:p></o:p></div>
<div class="MsoNormal">
if [ $pass1 != $password ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
while [ $pass1 != $password ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
echo "Password sbagliata!"<o:p></o:p></div>
<div class="MsoNormal">
echo "Inserire nuovamente password!"<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: magenta; background-position: initial initial; background-repeat: initial initial;">read -s pass1</span><o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
else<o:p></o:p></div>
<div class="MsoNormal">
echo "Password sbagliata!"<o:p></o:p></div>
<div class="MsoNormal">
echo "Reimmettere password:"<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: magenta; background-position: initial initial; background-repeat: initial initial;">read -s verifica</span><o:p></o:p></div>
<div class="MsoNormal">
if [ $verifica != $password ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
echo "Mi dispiace utente $i il suo account è stato bloccato!"<o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
let i++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
<b> <o:p></o:p></b></div>
<div class="MsoNormal">
<b>9 Un utente apre più sessioni terminale (es.finestre) su una stessa macchina.<o:p></o:p></b></div>
<div class="MsoNormal">
<b>Scrivere uno script bash da far girare in una nuova finestra<o:p></o:p></b></div>
<div class="MsoNormal">
<b>che <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">identifichi quella tra le altre finestre che è stata più recentemente<o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">attiva</span> (es. ha prodotto dell'output). <o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: red; background-position: initial initial; background-repeat: initial initial;">who | grep 'pts/*'</span> >> testo.txt<o:p></o:p></div>
<div class="MsoNormal">
chmod 755 testo.txt<o:p></o:p></div>
<div class="MsoNormal">
a=$(wc -l testo.txt | awk {'print $1'})<o:p></o:p></div>
<div class="MsoNormal">
let a--<o:p></o:p></div>
<div class="MsoNormal">
terminale=$(head -$a testo.txt | tail -1)<o:p></o:p></div>
<div class="MsoNormal">
echo "Il terminale più recente è: $terminale"<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>10 Uno script A svolge delle operazioni (es.incrementa un contatore).<o:p></o:p></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">Costruire uno script B che costringa ad intervalli regolari<o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">lo script A a stampare allo standard output il risultato dell'operazione</span>.<o:p></o:p></b></div>
<div class="MsoNormal">
<b>Lo script A può essere modificato per ottenere lo scopo prefisso.<o:p></o:p></b></div>
<div class="MsoNormal">
<b>Non è permesso usare file temporanei per lo svolgimento dell'esercizio.<o:p></o:p></b></div>
<div class="MsoNormal">
<b>I due script devono essere lanciati indipendentemente.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
i=0<o:p></o:p></div>
<div class="MsoNormal">
while [ $i -le 20 ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
let i++<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;"> </span><span style="background-color: lime;">./scriptb.sh<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: lime;"> echo "$i"</span><o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
sleep 1<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>11 Creare un distributore automatico di carte del vostro gioco preferito.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
var=( goku gohan vidal goten trunks pam vegeta goku2 goku3 junior goku4 vegeta2 vegeta3 gohan2 goten2 trunks2 gogeta crilin bulma kiki )<o:p></o:p></div>
<div class="MsoNormal">
echo "Inserire numero di acquirenti:"<o:p></o:p></div>
<div class="MsoNormal">
read acquirenti<o:p></o:p></div>
<div class="MsoNormal">
i=1<o:p></o:p></div>
<div class="MsoNormal">
while [ $i -le $acquirenti ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
echo "Benvenuto acquirente $i!"<o:p></o:p></div>
<div class="MsoNormal">
echo "Inserisci euro a disposizione (costo di una carta 1 euro):"<o:p></o:p></div>
<div class="MsoNormal">
read euro<o:p></o:p></div>
<div class="MsoNormal">
k=1<o:p></o:p></div>
<div class="MsoNormal">
while [ $k -le $euro ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
let "carta= RANDOM % 20"<o:p></o:p></div>
<div class="MsoNormal">
echo "Complimenti hai vinto ${var[$carta]}!"<o:p></o:p></div>
<div class="MsoNormal">
let k++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
let i++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>12 Scrivere uno script bash di nome "script1" che <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">a partire da una<o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">directory</span> (data come primo parametro<span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">) trovi tra tutte le sue<o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">sottodirectory di qualunque livello quella che contiene il maggior<o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">numero di elementi</span> (contando solo i file regolari). Sia A tale<o:p></o:p></b></div>
<div class="MsoNormal">
<b>directory. Nell'ambito dello stesso script <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">creare in essa una directory</span><o:p></o:p></b></div>
<div class="MsoNormal">
<b>avente come nome una stringa data come secondo parametro e <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">spostare in<o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">essa tutti i file</span> che sono entries della directory A e che contenengono<o:p></o:p></b></div>
<div class="MsoNormal">
<b>nel loro nome o al loro interno tale stringa.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>Per effettuare un test, utilizzare come primo parametro una copia della<o:p></o:p></b></div>
<div class="MsoNormal">
<b>directory /home/franco/esame12 e come secondo parametro la stringa<o:p></o:p></b></div>
<div class="MsoNormal">
<b>"esame".<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
cd $1<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;">find -type d | tr '' '\n' > elenco.txt</span><o:p></o:p></div>
<div class="MsoNormal">
chmod 755 elenco.txt<o:p></o:p></div>
<div class="MsoNormal">
a=$(wc -l elenco.txt | awk '{print $1}')<o:p></o:p></div>
<div class="MsoNormal">
i=2<o:p></o:p></div>
<div class="MsoNormal">
k=1<o:p></o:p></div>
<div class="MsoNormal">
max1=0<o:p></o:p></div>
<div class="MsoNormal">
while [ "$i" -le "$a" ]<o:p></o:p></div>
<div class="MsoNormal">
do <o:p></o:p></div>
<div class="MsoNormal">
cartella=$(sed -n "${i}p" elenco.txt)<o:p></o:p></div>
<div class="MsoNormal">
cd $cartella<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;"> </span><span style="background-color: lime;">find -type f > file1.txt</span><o:p></o:p></div>
<div class="MsoNormal">
chmod 755 file1.txt<o:p></o:p></div>
<div class="MsoNormal">
b=$(wc -l file1.txt | awk '{print $1}')<o:p></o:p></div>
<div class="MsoNormal">
let b--<o:p></o:p></div>
<div class="MsoNormal">
max=$b<o:p></o:p></div>
<div class="MsoNormal">
if [ "$max" -gt "$max1" ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
max1=$max<o:p></o:p></div>
<div class="MsoNormal">
cartella_scelta=$cartella<o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
cd<o:p></o:p></div>
<div class="MsoNormal">
cd Documenti/esame12/$1<o:p></o:p></div>
<div class="MsoNormal">
let i++<o:p></o:p></div>
<div class="MsoNormal">
let k++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
echo "La cartella che contiene più file, cioè $max1, è $cartella_scelta!"<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>13 Scrivere uno script bash di nome "pscmd" che <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">prenda come argomento il nome<o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">di un comando e che restituisca la somma delle percentuali di CPU<o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">utilizzate da tutte le istanze di tale comando in esecuzione<o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">nel sistema</span> da parte di qualsiasi utente al momento del lancio dello script.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
$1<o:p></o:p></div>
<div class="MsoNormal">
a=$(<span style="background-color: red; background-position: initial initial; background-repeat: initial initial;">pidof $1</span>)<o:p></o:p></div>
<div class="MsoNormal">
echo "La cpu usata è `ps -p $a -o%cpu=`"<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>15 Scrivere uno script che <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">accetta come argomento il nome di una directory e<o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">calcola una stringa che è indice dell'integrità della directory</span>, in modo che, se<o:p></o:p></b></div>
<div class="MsoNormal">
<b>rieseguendo lo stesso script sulla stessa directory il risultato non cambia,<o:p></o:p></b></div>
<div class="MsoNormal">
<b>si abbia la certezza che la struttura interna della directory e i suoi<o:p></o:p></b></div>
<div class="MsoNormal">
<b>contenuti non sono stati modificati.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
echo "$1"<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: magenta; background-position: initial initial; background-repeat: initial initial;">echo -n "cane" | md5sum</span><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>15 Scrivere uno script che produca una <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">lista dei propri processi ordinata<o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">secondo il numero di file aperti da ciascuno di essi</span>.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: red; background-position: initial initial; background-repeat: initial initial;">lsof | sort -k 8 -n</span><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>16 Scrivere uno script che giri sul proprio Mac e che <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">misuri sia il carico medio<o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">della CPU della macchina su cui viene lanciato sia quello della CPU della macchina<o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">hplinux2.unile.it e lanci sulla macchina che ha il minor carico un certo<o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">comando dato come parametro</span>. Suggerimento: usare il comando ssh.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
cpumac=$(<span style="background-color: red; background-position: initial initial; background-repeat: initial initial;">ps -a -o %cpu='' | tr '\n' '+' | sed 's/+$//' | tr '\,' '.' | bc</span>)<o:p></o:p></div>
<div class="MsoNormal">
echo "$cpumac"<o:p></o:p></div>
<div class="MsoNormal">
echo "Inserire nome utente"<o:p></o:p></div>
<div class="MsoNormal">
read nome<o:p></o:p></div>
<div class="MsoNormal">
cpulinx=$(<span style="background-color: red; background-position: initial initial; background-repeat: initial initial;">ssh $danilo@hplinux2.unile.it ps -a -o %cpu='' | tr '\' '+' | sed 's/+$//' | bc</span>)<o:p></o:p></div>
<div class="MsoNormal">
echo "$cpulinux"<o:p></o:p></div>
<div class="MsoNormal">
if [[ $cpumac -ge $cpulinux ]]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
echo "Eseguo il comando su mac!"<o:p></o:p></div>
<div class="MsoNormal">
$1<o:p></o:p></div>
<div class="MsoNormal">
else<o:p></o:p></div>
<div class="MsoNormal">
echo "Eseguo il comando su linux!"<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: red; background-position: initial initial; background-repeat: initial initial;">ssh $nome@hplinux2.unile.it $1</span><o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>17 Scrivere uno script bash che accetta come argomento il nome di una directory e<o:p></o:p></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">stampi a terminale il numero di inode più alto presente nella directory e<o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">in tutte le sue sottodirectory</span>.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
cd $1<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;">ls -li | sort -k1 -n > file.tmp</span><o:p></o:p></div>
<div class="MsoNormal">
chmod 755 file.txt<o:p></o:p></div>
<div class="MsoNormal">
inode=$(tail -1 file.txt | awk '{print $1}')<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;">find -type d > file1.txt</span><o:p></o:p></div>
<div class="MsoNormal">
chmod 755 file1.txt<o:p></o:p></div>
<div class="MsoNormal">
cat file1.txt<o:p></o:p></div>
<div class="MsoNormal">
a=$(wc -l file1.txt | awk '{print $1}')<o:p></o:p></div>
<div class="MsoNormal">
i=2<o:p></o:p></div>
<div class="MsoNormal">
while [ "$i" -le "$a" ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
cartella=$(head -$i file1.txt | tail -1)<o:p></o:p></div>
<div class="MsoNormal">
echo "$cartella"<o:p></o:p></div>
<div class="MsoNormal">
cd $cartella<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;"> </span><span style="background-color: lime;">ls -li | sort -k1 -n > file.tmp<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: lime;"> cat file.tmp<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: lime;"> inode1=$(tail -1 file.txt | awk '{print $1}')</span><o:p></o:p></div>
<div class="MsoNormal">
cd ..<o:p></o:p></div>
<div class="MsoNormal">
if [ "$inode" -lt "$inode1" ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
max=$inode1<o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
let i++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
echo "L'inode maggiori sono $max"<o:p></o:p></div>
<div class="MsoNormal">
<b>17 Scrivere uno script bash che <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">visiti periodicamente una certa pagina html via<o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">http e stampi a terminale un messaggio quando trova una certa stringa nella<o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">pagin</span>a.<o:p></o:p></b></div>
<div class="MsoNormal">
<b>Intervallo della periodicità, indirizzo della pagina e stringa siano passati<o:p></o:p></b></div>
<div class="MsoNormal">
<b>come parametri allo script.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
i=1<o:p></o:p></div>
<div class="MsoNormal">
while :<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
sleep 5<o:p></o:p></div>
<div class="MsoNormal">
finded=$(<span style="background-color: blue; background-position: initial initial; background-repeat: initial initial;">curl "$1" | grep -o -i "$2" | wc -l</span>)<o:p></o:p></div>
<div class="MsoNormal">
if [ "$i" -le "$finded" ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
echo "Parola trovata $finded volte"<o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>18 Fare in modo che il proprio prompt principale <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">indichi il numerodi processi attivi nel sistema al momento</span>.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: red; background-position: initial initial; background-repeat: initial initial;">ps</span> > file.txt<o:p></o:p></div>
<div class="MsoNormal">
chmod 755 file.txt<o:p></o:p></div>
<div class="MsoNormal">
a=$(wc -l file.txt | awk '{print $1}')<o:p></o:p></div>
<div class="MsoNormal">
let a--<o:p></o:p></div>
<div class="MsoNormal">
echo "I processi attivo sono $a!"<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>19 Creare uno script chiamato 'limita' che controlli con un periodo A i processi che<o:p></o:p></b></div>
<div class="MsoNormal">
<b>l'utente ha generato con l'esecuzione di programmi contenuti in una cartella B<o:p></o:p></b></div>
<div class="MsoNormal">
<b>e faccia in modo che, quando la <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">somma delle percentuali di CPU utilizzate<o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">da tali processi</span> supera una certa soglia C, sia abbassata <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">la priorità del<o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">processo che tra essi utilizza maggiormente la CPU</span>.<o:p></o:p></b></div>
<div class="MsoNormal">
<b>Dare A, B e C come parametri allo script.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
max1=0<o:p></o:p></div>
<div class="MsoNormal">
tot=0<o:p></o:p></div>
<div class="MsoNormal">
k=0<o:p></o:p></div>
<div class="MsoNormal">
cd $2<o:p></o:p></div>
<div class="MsoNormal">
while [ $k -le $1 ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
find . -name "*.sh" > file.txt<o:p></o:p></div>
<div class="MsoNormal">
chmod 755 file.txt<o:p></o:p></div>
<div class="MsoNormal">
cat file.txt<o:p></o:p></div>
<div class="MsoNormal">
a=$(wc -l file.txt | awk '{print $1}')<o:p></o:p></div>
<div class="MsoNormal">
i=1<o:p></o:p></div>
<div class="MsoNormal">
while [ $i -le $a ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
prog=$(head -$i file.txt | tail -1)<o:p></o:p></div>
<div class="MsoNormal">
$prog<o:p></o:p></div>
<div class="MsoNormal">
echo ${prog:2} > elenco.txt<o:p></o:p></div>
<div class="MsoNormal">
chmod 755 elenco.txt<o:p></o:p></div>
<div class="MsoNormal">
nuovoprog=$(head -$i elenco.txt | tail -1)<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: red; background-position: initial initial; background-repeat: initial initial;">ps aux | grep $nuovoprog | awk '{print $2}'</span> > file1.txt<o:p></o:p></div>
<div class="MsoNormal">
chmod 755 file1.txt<o:p></o:p></div>
<div class="MsoNormal">
let i++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
uniq file1.txt<o:p></o:p></div>
<div class="MsoNormal">
c=$(wc -l file1.txt | awk '{print $1}')<o:p></o:p></div>
<div class="MsoNormal">
j=1<o:p></o:p></div>
<div class="MsoNormal">
while [ $j -le $c ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
prog1=$(head -$j file1.txt | tail -1) <o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: red; background-position: initial initial; background-repeat: initial initial;">ps aux | grep $prog1 | awk '{print $3}'</span> > ram.txt<o:p></o:p></div>
<div class="MsoNormal">
chmod 755 ram.txt<o:p></o:p></div>
<div class="MsoNormal">
cat ram.txt <o:p></o:p></div>
<div class="MsoNormal">
d=$(wc -l ram.txt | awk '{print $1}')<o:p></o:p></div>
<div class="MsoNormal">
y=1<o:p></o:p></div>
<div class="MsoNormal">
while [ $y -le $d ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
ram=$(head -$i ram.txt | tail -1)<o:p></o:p></div>
<div class="MsoNormal">
echo $ram | awk '{printf("%.0f\n", $1)}' > ramarr.txt<o:p></o:p></div>
<div class="MsoNormal">
let y++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
cont=$(wc -l ramarr.txt | awk '{print $1}')<o:p></o:p></div>
<div class="MsoNormal">
r=1<o:p></o:p></div>
<div class="MsoNormal">
while [ $r -le $cont ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
somma=$(head -$j ramarr.txt | tail -1)<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;">tot=$((tot += somma))</span><o:p></o:p></div>
<div class="MsoNormal">
max=$somma<o:p></o:p></div>
<div class="MsoNormal">
if [ $max1 -le $max ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
max1=$max<o:p></o:p></div>
<div class="MsoNormal">
processo=$prog1<o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
if [ $3 -le $tot ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
renice -20 $processo<o:p></o:p></div>
<div class="MsoNormal">
else<o:p></o:p></div>
<div class="MsoNormal">
echo "E' tutto ok!"<o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
let r++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
let k++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<b>20 Creare uno script chiamato 'contablocchi' che <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">scriva allo standard output la somma del numero di blocchi occupati da tutti i file in cui numero di inode ricade nell'intervallo tra A e B</span>.<o:p></o:p></b></div>
<div class="MsoNormal">
<b>Dare A e B come parametri allo script.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
cd<o:p></o:p></div>
<div class="MsoNormal">
ls -li > file.txt<o:p></o:p></div>
<div class="MsoNormal">
chmod 755 file.txt<o:p></o:p></div>
<div class="MsoNormal">
d=$(wc -l file.txt | awk '{print $1}')<o:p></o:p></div>
<div class="MsoNormal">
j=2<o:p></o:p></div>
<div class="MsoNormal">
while [ $j -le $d ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;"> </span><span style="background-color: lime;">inode=$(head -$j file.txt | tail -1 | awk '{print $1}')</span><o:p></o:p></div>
<div class="MsoNormal">
if [ "$inode" -gt "$1" ] && [ "$inode" -lt "$2" ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
echo "$inode"<o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
let j++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
find -type d > file1.txt<o:p></o:p></div>
<div class="MsoNormal">
chmod 755 file1.txt<o:p></o:p></div>
<div class="MsoNormal">
a=$(wc -l file1.txt | awk '{print $1}')<o:p></o:p></div>
<div class="MsoNormal">
i=2<o:p></o:p></div>
<div class="MsoNormal">
while [ "$i" -le "$a" ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
cartella=$(head -$i file1.txt | tail -1)<o:p></o:p></div>
<div class="MsoNormal">
echo ${cartella:1} >> elenco.txt<o:p></o:p></div>
<div class="MsoNormal">
chmod 755 elenco.txt<o:p></o:p></div>
<div class="MsoNormal">
let i++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
g=$(wc -l elenco.txt | awk '{print $1}')<o:p></o:p></div>
<div class="MsoNormal">
h=1<o:p></o:p></div>
<div class="MsoNormal">
while [ "$h" -le "$g" ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
cartella1=$(head -$h file1.txt | tail -1)<o:p></o:p></div>
<div class="MsoNormal">
cd $cartella1<o:p></o:p></div>
<div class="MsoNormal">
ls -li > file.txt<o:p></o:p></div>
<div class="MsoNormal">
chmod 755 file.txt<o:p></o:p></div>
<div class="MsoNormal">
d1=$(wc -l file.txt | awk '{print $1}')<o:p></o:p></div>
<div class="MsoNormal">
k=2<o:p></o:p></div>
<div class="MsoNormal">
while [ $k -le $d1 ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;"> </span><span style="background-color: lime;">inode1=$(head -$k file.txt | tail -1 | awk '{print $1}')</span><o:p></o:p></div>
<div class="MsoNormal">
cd<o:p></o:p></div>
<div class="MsoNormal">
if [ "$inode1" -le "$1" ] && [ "$inode1" -ge "$2" ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
echo "$inode1"<o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
let k++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
cd<o:p></o:p></div>
<div class="MsoNormal">
let h++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>20 Creare uno script chiamato 'firma' che <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">scriva allo standard output una stringa<o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">associata alla directory A con la proprietà che tale stringa rimanga immutata se e solo se, anche <o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">nel caso in cui la directory cambi di posizione, nessuno dei file contenuti,<o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">incluse le directory, viene modificato o cambiato</span>.<o:p></o:p></b></div>
<div class="MsoNormal">
<b>Dare A come parametro allo script.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
echo "$1"<o:p></o:p></div>
<div class="MsoNormal">
a=$(<span style="background-color: magenta; background-position: initial initial; background-repeat: initial initial;">ls -l | md5sum</span>)<o:p></o:p></div>
<div class="MsoNormal">
echo "$a"<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>21 Creare uno script chiamato "creacartella" che prende come parametro un nome, <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">crea una cartella</span> che ha tale nome dotata della proprietà che <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">chiunque possa depositarvi dei file potendoli in seguito cancellare ma non potendo cancellare quelli depositativi da altri</span>.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
mkdir $1<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: magenta; background-position: initial initial; background-repeat: initial initial;">chmod 766 $1</span><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>21 Creare uno script chiamato "consuma" che <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">esegua il programma ps un certo numero di volte fermandosi quando ha consumato nel complesso 1 secondo di tempo di CPU</span>.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
i=1<o:p></o:p></div>
<div class="MsoNormal">
while [ "$SECONDS" -le "$i" ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;"> </span><span style="background-color: lime;">ps</span><o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>22 Creare uno script chiamato "elimina", che <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">elimini dal sistema i file regolari passati ad esso come argomento e tutti i link (hard e soft) a tali file</span>.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
cd<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
for i in $@; do<o:p></o:p></div>
<div class="MsoNormal">
echo -e "$i"<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;"> </span><span style="background-color: lime;">inode=$(find -type f -name "$i" -exec sh -c 'ls -di "$0" | head -1' {} \; | awk '{print $1}')</span><o:p></o:p></div>
<div class="MsoNormal">
echo "$inode"<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;"> </span><span style="background-color: lime;">inode1=$(find -type l -exec ls -lai {} \; | grep "$i" | awk '{print $1}')</span><o:p></o:p></div>
<div class="MsoNormal">
echo "$inode1"<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;"> </span><span style="background-color: lime;">find -inum "$inode1" -exec rm {} \;<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: lime;"> find -inum "$inode" -exec rm {} \;</span><o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>23 Creare uno script chiamato "containodes" che <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">conta il numero di inodes utilizzati dal file system nel quale è stato salvato</span>.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
echo "Il percorso del file è:"<o:p></o:p></div>
<div class="MsoNormal">
pwd<o:p></o:p></div>
<div class="MsoNormal">
cd<o:p></o:p></div>
<div class="MsoNormal">
cd /home<o:p></o:p></div>
<div class="MsoNormal">
echo "Il numero di inode è:"<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;">ls -li | head -2 | tail -1 | awk '{print $1}'</span><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>23 Creare uno script bash, chiamato "cifra", che applichi ad uno o più file di testo passati come argomento la cifratura consistente nel <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">trasformare</span>:<o:p></o:p></b></div>
<div class="MsoNormal">
<b>1) <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">le lettere dalla A alla M in lettere dalla N alla Z e viceversa</span>;<o:p></o:p></b></div>
<div class="MsoNormal">
<b>2) <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">le lettere dalla a alla m in lettere dalla n alla z e viceversa</span>.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
lis=1<o:p></o:p></div>
<div class="MsoNormal">
for i in $@; do<o:p></o:p></div>
<div class="MsoNormal">
cat $i | tr ' ' '\n' > nuovo.txt<o:p></o:p></div>
<div class="MsoNormal">
chmod 755 nuovo.txt<o:p></o:p></div>
<div class="MsoNormal">
cont=$(wc -l nuovo.txt | awk '{print $1}')<o:p></o:p></div>
<div class="MsoNormal">
p=1<o:p></o:p></div>
<div class="MsoNormal">
while [ "$p" -le "$cont" ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
stringa=$(head -$p nuovo.txt | tail -1)<o:p></o:p></div>
<div class="MsoNormal">
q=0<o:p></o:p></div>
<div class="MsoNormal">
lungstringa=${#stringa}<o:p></o:p></div>
<div class="MsoNormal">
k=0<o:p></o:p></div>
<div class="MsoNormal">
while [ $k -lt $lungstringa ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
min=`expr $lungstringa - 1`<o:p></o:p></div>
<div class="MsoNormal">
stringanuova=$(echo ${stringa:$k})<o:p></o:p></div>
<div class="MsoNormal">
car=$(echo ${stringanuova} | cut -c1-1)<o:p></o:p></div>
<div class="MsoNormal">
if [ "$car" == "A" ] || [ "$car" == "B" ] || [ "$car" == "C" ] || [ "$car" == "D" ] || [ "$car" == "E" ] || [ "$car" == "F" ] || [ "$car" == "G" ] || [ "$car" == "H" ] || [ "$car" == "I" ] || [ "$car" == "L" ] || [ "$car" == "M" ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;"> </span><span style="background-color: lime;">echo ${stringanuova} | cut -c1-1 | tr "A-M" "N-Z" | tr -d "\n" >> testo$lis.txt</span><o:p></o:p></div>
<div class="MsoNormal">
chmod 755 testo$lis.txt<o:p></o:p></div>
<div class="MsoNormal">
let q++<o:p></o:p></div>
<div class="MsoNormal">
fi <o:p></o:p></div>
<div class="MsoNormal">
if [ "$car" == "N" ] || [ "$car" == "O" ] || [ "$car" == "P" ] || [ "$car" == "R" ] || [ "$car" == "S" ] || [ "$car" == "T" ] || [ "$car" == "U" ] || [ "$car" == "V" ] || [ "$car" == "Z" ] || [ "$car" == "X" ] || [ "$car" == "Q" ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;"> </span><span style="background-color: lime;">echo ${stringanuova} | cut -c1-1 | tr "N-Z" "A-M" | tr -d "\n" >> testo$lis.txt</span><o:p></o:p></div>
<div class="MsoNormal">
chmod 755 testo$lis.txt<o:p></o:p></div>
<div class="MsoNormal">
let q++<o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
if [ "$car" == "a" ] || [ "$car" == "b" ] || [ "$car" == "c" ] || [ "$car" == "d" ] || [ "$car" == "e" ] || [ "$car" == "f" ] || [ "$car" == "g" ] || [ "$car" == "h" ] || [ "$car" == "i" ] || [ "$car" == "l" ] || [ "$car" == "m" ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;"> </span><span style="background-color: lime;">echo ${stringanuova} | cut -c1-1 | tr "a-m" "n-z" | tr -d "\n" >> testo$lis.txt</span><o:p></o:p></div>
<div class="MsoNormal">
chmod 755 testo$lis.txt<o:p></o:p></div>
<div class="MsoNormal">
let q++<o:p></o:p></div>
<div class="MsoNormal">
fi <o:p></o:p></div>
<div class="MsoNormal">
if [ "$car" == "n" ] || [ "$car" == "o" ] || [ "$car" == "p" ] || [ "$car" == "q" ] || [ "$car" == "r" ] || [ "$car" == "s" ] || [ "$car" == "t" ] || [ "$car" == "u" ] || [ "$car" == "v" ] || [ "$car" == "z" ] || [ "$car" == "x" ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;"> </span><span style="background-color: lime;">echo ${stringanuova} | cut -c1-1 | tr "n-z" "a-m" | tr -d "\n" >> testo$lis.txt</span><o:p></o:p></div>
<div class="MsoNormal">
chmod 755 testo$lis.txt<o:p></o:p></div>
<div class="MsoNormal">
let q++<o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
if [ "$car" == "." ] || [ "$car" == "!" ] || [ "$car" == "," ] || [ "$car" == ":" ] || [ "$car" == "1" ] || [ "$car" == "2" ] #ecc ecc<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
echo $car >> testo$lis.txt<o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
if [ "$k" == "$min" ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
echo -e >> testo$lis.txt<o:p></o:p></div>
<div class="MsoNormal">
fi <o:p></o:p></div>
<div class="MsoNormal">
let k++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
let p++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
echo -e<o:p></o:p></div>
<div class="MsoNormal">
echo "Il file $i trasformato è:"<o:p></o:p></div>
<div class="MsoNormal">
cat testo$lis.txt | tr '\n' ' '<o:p></o:p></div>
<div class="MsoNormal">
let lis++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
echo –e<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>25 Scrivere in bash uno script che confronti <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">due directory</span> passate come parametri e ne<o:p></o:p></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">riveli con analisi ricorsiva</span>:<o:p></o:p></b></div>
<div class="MsoNormal">
<b>a) <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">le differenze di struttura</span> (directory, sottodirectory e file presenti o assenti in una e non nell'altra);<o:p></o:p></b></div>
<div class="MsoNormal">
<b>b) <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">differenze nel contenuto dei file corrispondenti anche a parità di struttura</span>;<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>Suggerimento (non vincolante, possono esistere molti metodi alternativi): si consideri il comando comm<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
cd $1<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;">ls -l > elenco1.txt</span><o:p></o:p></div>
<div class="MsoNormal">
chmod 755 elenco1.txt<o:p></o:p></div>
<div class="MsoNormal">
echo "I file e cartelle contenute in $1 sono:"<o:p></o:p></div>
<div class="MsoNormal">
cat elenco1.txt<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;">find . -type d > nuovo1.txt</span><o:p></o:p></div>
<div class="MsoNormal">
chmod 755 nuovo1.txt<o:p></o:p></div>
<div class="MsoNormal">
a1=$(wc -l nuovo1.txt | awk '{print $1}')<o:p></o:p></div>
<div class="MsoNormal">
max1=$a1<o:p></o:p></div>
<div class="MsoNormal">
let a1--<o:p></o:p></div>
<div class="MsoNormal">
echo "Le cartelle appartenenti alla cartella $1 sono $a1!"<o:p></o:p></div>
<div class="MsoNormal">
cat nuovo1.txt<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;">find . -type f > file1.txt</span><o:p></o:p></div>
<div class="MsoNormal">
chmod 755 file1.txt<o:p></o:p></div>
<div class="MsoNormal">
b1=$(wc -l file1.txt | awk '{print $1}')<o:p></o:p></div>
<div class="MsoNormal">
echo "I file regolari presenti in $1 e in tutte le sottocartelle sono $b1!"<o:p></o:p></div>
<div class="MsoNormal">
cat file1.txt<o:p></o:p></div>
<div class="MsoNormal">
i=2<o:p></o:p></div>
<div class="MsoNormal">
while [ "$i" -le "$max1" ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
cartella1=$(head -$i nuovo1.txt | tail -1)<o:p></o:p></div>
<div class="MsoNormal">
cart1=$(echo ${cartella1:2})<o:p></o:p></div>
<div class="MsoNormal">
cd $cart1<o:p></o:p></div>
<div class="MsoNormal">
echo "I file contenuti in $cart1 sono:"<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;">ls -l</span><o:p></o:p></div>
<div class="MsoNormal">
let i++<o:p></o:p></div>
<div class="MsoNormal">
cd<o:p></o:p></div>
<div class="MsoNormal">
cd Documenti/esame25/$1<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
echo "**************************************************************"<o:p></o:p></div>
<div class="MsoNormal">
cd<o:p></o:p></div>
<div class="MsoNormal">
cd Documenti/esame25/$2<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;">ls -l > elenco2.txt</span><o:p></o:p></div>
<div class="MsoNormal">
chmod 755 elenco2.txt<o:p></o:p></div>
<div class="MsoNormal">
echo "I file e cartelle contenute in $2 sono:"<o:p></o:p></div>
<div class="MsoNormal">
cat elenco2.txt<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;">find . -type d > nuovo2.txt</span><o:p></o:p></div>
<div class="MsoNormal">
chmod 755 nuovo2.txt<o:p></o:p></div>
<div class="MsoNormal">
a2=$(wc -l nuovo2.txt | awk '{print $1}')<o:p></o:p></div>
<div class="MsoNormal">
max2=$a2<o:p></o:p></div>
<div class="MsoNormal">
let a2--<o:p></o:p></div>
<div class="MsoNormal">
echo "Le cartelle appartenenti alla cartella $2 sono $a2!"<o:p></o:p></div>
<div class="MsoNormal">
cat nuovo2.txt<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;">find . -type f > file2.txt</span><o:p></o:p></div>
<div class="MsoNormal">
chmod 755 file2.txt<o:p></o:p></div>
<div class="MsoNormal">
b2=$(wc -l file2.txt | awk '{print $1}')<o:p></o:p></div>
<div class="MsoNormal">
echo "I file regolari presenti in $2 e in tutte le sottocartelle sono $b2!"<o:p></o:p></div>
<div class="MsoNormal">
cat file2.txt<o:p></o:p></div>
<div class="MsoNormal">
k=2<o:p></o:p></div>
<div class="MsoNormal">
while [ "$k" -le "$max2" ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
cartella2=$(head -$k nuovo2.txt | tail -1)<o:p></o:p></div>
<div class="MsoNormal">
cart2=$(echo ${cartella2:2})<o:p></o:p></div>
<div class="MsoNormal">
cd $cart2<o:p></o:p></div>
<div class="MsoNormal">
echo "I file contenuti in $cart2 sono:"<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;"> </span><span style="background-color: lime;">ls -l</span><o:p></o:p></div>
<div class="MsoNormal">
let k++<o:p></o:p></div>
<div class="MsoNormal">
cd<o:p></o:p></div>
<div class="MsoNormal">
cd Documenti/esame25/$2<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>26 Scrivere in bash uno script che realizzi il seguente <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">sistema di back-up</span> ogni volta che è lanciato:<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>a) <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">apre una directory il cui nome contenga la data, l'ora e il minuto del lancio dello script</span>;<o:p></o:p></b></div>
<div class="MsoNormal">
<b>b) <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">solo per il primo lancio in tale directory copia interamente il contenuto di una directory passata<o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">come parametro allo script</span>;<o:p></o:p></b></div>
<div class="MsoNormal">
<b>c) <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">nei lanci seguenti dello script copia i file se sono cambiati rispetto alla prima volta che sono<o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">stati copiati e invece ne fa solo un hard link all'ultima copia fatta se non sono cambiati</span>.<o:p></o:p></b></div>
<div class="MsoNormal">
<b>d) <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">i file nuovamente creati nella directory A siano trattati come i file cambiati</span>.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>Esempio:<o:p></o:p></b></div>
<div class="MsoNormal">
<b>la directory A (contenente i file B, C e D) viene passata come parametro. Al primo lancio viene<o:p></o:p></b></div>
<div class="MsoNormal">
<b>creata la directory 200712140930-A in cui vengono copiati B, C e D. Al secondo lancio, viene<o:p></o:p></b></div>
<div class="MsoNormal">
<b>creata la directory 200712140931-A. Supponendo che il B contenuto nella directory A sia cambiato<o:p></o:p></b></div>
<div class="MsoNormal">
<b>rispetto a quello copiato nella directory 200712140930-A (mentre C e D siano rimasti invariati),<o:p></o:p></b></div>
<div class="MsoNormal">
<b>si faccia in 200712140931-A una copia del B di A e si mettano in 200712140931-A semplicemente degli<o:p></o:p></b></div>
<div class="MsoNormal">
<b>hard link ai file C e D contenuti in 200712140930-A.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
giri=2<o:p></o:p></div>
<div class="MsoNormal">
primo=1<o:p></o:p></div>
<div class="MsoNormal">
secondo=2<o:p></o:p></div>
<div class="MsoNormal">
i=1<o:p></o:p></div>
<div class="MsoNormal">
while [ "$i" -le "$giri" ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
if [ $i == $primo ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
data=$(date +%Y%m%d%H%M%S)<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;"> </span><span style="background-color: lime;">mkdir $data-A<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: lime;"> cp /home/administrator/Documenti/esame26/$1/B.txt /home/administrator/Documenti/esame26/$data-A<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: lime;"> cp /home/administrator/Documenti/esame26/$1/C.txt /home/administrator/Documenti/esame26/$data-A<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: lime;"> cp /home/administrator/Documenti/esame26/$1/D.txt /home/administrator/Documenti/esame26/$data-A</span><o:p></o:p></div>
<div class="MsoNormal">
cd A<o:p></o:p></div>
<div class="MsoNormal">
echo "ciao" >> B.txt<o:p></o:p></div>
<div class="MsoNormal">
fileoB=$(<span style="background-color: magenta; background-position: initial initial; background-repeat: initial initial;">md5sum B.txt</span>)<o:p></o:p></div>
<div class="MsoNormal">
echo "****$fileoB"<o:p></o:p></div>
<div class="MsoNormal">
fileoC=$(<span style="background-color: magenta; background-position: initial initial; background-repeat: initial initial;">md5sum C.txt</span>)<o:p></o:p></div>
<div class="MsoNormal">
fileoD=$(<span style="background-color: magenta; background-position: initial initial; background-repeat: initial initial;">md5sum D.txt</span>)<o:p></o:p></div>
<div class="MsoNormal">
cd ..<o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
sleep 0.5<o:p></o:p></div>
<div class="MsoNormal">
if [ $i == $secondo ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;">data1=$(date +%Y%m%d%H%M%S)<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: lime;"> mkdir $data1-A</span><o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
if [ $i == $secondo ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
cd $data-A<o:p></o:p></div>
<div class="MsoNormal">
fileB=$(<span style="background-color: magenta; background-position: initial initial; background-repeat: initial initial;">md5sum B.txt</span>)<o:p></o:p></div>
<div class="MsoNormal">
echo "****$fileB"<o:p></o:p></div>
<div class="MsoNormal">
fileC=$(<span style="background-color: magenta; background-position: initial initial; background-repeat: initial initial;">md5sum C.txt</span>)<o:p></o:p></div>
<div class="MsoNormal">
fileD=$(<span style="background-color: magenta; background-position: initial initial; background-repeat: initial initial;">md5sum D.txt</span>)<o:p></o:p></div>
<div class="MsoNormal">
cd ..<o:p></o:p></div>
<div class="MsoNormal">
if [ "$fileB" != "$fileoB" ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;"> </span><span style="background-color: lime;">cp /home/administrator/Documenti/esame26/$1/B.txt /home/administrator/Documenti/esame26/$data1-A<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: lime;"> ln /home/administrator/Documenti/esame26/$1/C.txt /home/administrator/Documenti/esame26/$data1-A/C1.txt<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: lime;"> ln /home/administrator/Documenti/esame26/$1/D.txt /home/administrator/Documenti/esame26/$data1-A/D1.txt</span><o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
if [ "$fileC" != "$fileoC" ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;"> </span><span style="background-color: lime;">cp /home/administrator/Documenti/esame26/$1/C.txt /home/administrator/Documenti/esame26/$data1-A<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: lime;"> ln /home/administrator/Documenti/esame26/$1/B.txt /home/administrator/Documenti/esame26/$data1-A/B1.txt<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: lime;"> ln /home/administrator/Documenti/esame26/$1/D.txt /home/administrator/Documenti/esame26/$data1-A/D1.txt</span><o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
if [ "$fileD" != "$fileoD" ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;">cp /home/administrator/Documenti/esame26/$1/D.txt /home/administrator/Documenti/esame26/$data1-A<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: lime;"> ln /home/administrator/Documenti/esame26/$1/B.txt /home/administrator/Documenti/esame26/$data1-A/B1.txt<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: lime;"> ln /home/administrator/Documenti/esame26/$1/C.txt /home/administrator/Documenti/esame26/$data1-A/C1.txt</span><o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
let i++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>27 <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">Utilizzando il dizionario /usr/share/dict/words creare uno script che prenda come argomento un numero intero N e componga una frase estraendo a caso N parole dal dizionario</span>.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
WORDFILE=<span style="background-color: lime;">/usr/share/dict/words</span><o:p></o:p></div>
<div class="MsoNormal">
RANDOM=$$;<o:p></o:p></div>
<div class="MsoNormal">
echo "Inserire il numero di parole da fare:"<o:p></o:p></div>
<div class="MsoNormal">
read numero<o:p></o:p></div>
<div class="MsoNormal">
i=1<o:p></o:p></div>
<div class="MsoNormal">
while [ $i -le $numero ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
# seed random from pid<o:p></o:p></div>
<div class="MsoNormal">
# using cat means wc outputs only a number, not number followed by filename<o:p></o:p></div>
<div class="MsoNormal">
lines=$(cat $WORDFILE | wc -l);<o:p></o:p></div>
<div class="MsoNormal">
rnum=$((<span style="background-color: lime;">RANDOM*RANDOM%$lines+1</span>));<o:p></o:p></div>
<div class="MsoNormal">
sed -n "$rnum p" $WORDFILE;<o:p></o:p></div>
<div class="MsoNormal">
let i++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>27 Dato come input un elenco di file, questo script <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">interrogherà</span> ciascun <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">file per controllare quale tipo di compressione è stata ad esso applicata</span>.<o:p></o:p></b></div>
<div class="MsoNormal">
<b>Lo script, quindi, dovrà invocare automaticamente l'appropriato comando di decompressione (gunzip, bunzip2, unzip, uncompress o altro). Se, tra i file indicati, ve ne dovessero essere di non compressi, lo script dovrà visualizzare un messaggio d'avvertimento e non effettuare, su tali file, nessun'altra azione.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
a=$(wc -l $1 | awk '{print $1}')<o:p></o:p></div>
<div class="MsoNormal">
i=1<o:p></o:p></div>
<div class="MsoNormal">
while [ $i -le $a ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
file=$(head -$i $1 | tail -1)<o:p></o:p></div>
<div class="MsoNormal">
echo "***$file"<o:p></o:p></div>
<div class="MsoNormal">
file1=$(echo ${file:(-3)})<o:p></o:p></div>
<div class="MsoNormal">
file2=$(echo ${file:(-4)})<o:p></o:p></div>
<div class="MsoNormal">
file3=$(echo ${file:(-7)})<o:p></o:p></div>
<div class="MsoNormal">
echo "****$file1"<o:p></o:p></div>
<div class="MsoNormal">
if [ "$file1" == ".gz" ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
cd<o:p></o:p></div>
<div class="MsoNormal">
nome=$(find -name "$file")<o:p></o:p></div>
<div class="MsoNormal">
nfile=$(echo ${nome:1})<o:p></o:p></div>
<div class="MsoNormal">
echo "$nfile"<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: magenta; background-position: initial initial; background-repeat: initial initial;">gzip -d /home/administrator$nfile</span><o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
if [ "$file2" == ".bz2" ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
cd<o:p></o:p></div>
<div class="MsoNormal">
nome=$(find -name "$file")<o:p></o:p></div>
<div class="MsoNormal">
nfile=$(echo ${nome:1})<o:p></o:p></div>
<div class="MsoNormal">
echo "$nfile"<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: magenta; background-position: initial initial; background-repeat: initial initial;">bunzip2 /home/administrator$file</span><o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
if [ "$file3" == ".tar.gz" ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
cd<o:p></o:p></div>
<div class="MsoNormal">
nome=$(find -name "$file")<o:p></o:p></div>
<div class="MsoNormal">
nfile=$(echo ${nome:1})<o:p></o:p></div>
<div class="MsoNormal">
echo "$nfile"<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: magenta; background-position: initial initial; background-repeat: initial initial;">gzip -dc /home/administrator$file</span><o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
let i++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>28 Fare in modo che <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">alla chiusura di ciascuna propria sessione di lavoro, la lista dei comandi dati fino a quel momento sia salvata automaticamente in un file</span> il cui nome sia del tipo 200802151120-SessioneLavoro.txt<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: blue; background-position: initial initial; background-repeat: initial initial;">trap $(history > $(date +%Y%m%d%H%M)-Sessioneavoro.txt) SIGHUP SIGINT SIGQUIT SIGABRT SIGKILL SIGTERM</span><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>28 <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">Verificare se tra tutti i file con SUID settato presenti nel sistema esiste una coppia di link allo stesso inode</span>.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;">find -xdev -type f -perm +u=s -print -exec ls -li {} \; > suidist.txt<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: lime;">find -xdev -type f -perm +u=s -print -exec ls -li {} \; |awk '{print $1}' > inodelist.txt</span><o:p></o:p></div>
<div class="MsoNormal">
a=$(wc -l inodelist.txt | awk '{print $1}')<o:p></o:p></div>
<div class="MsoNormal">
i=1<o:p></o:p></div>
<div class="MsoNormal">
while [ $i -le $a ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
inode=$(head -$i inodelist.txt | tail -1)<o:p></o:p></div>
<div class="MsoNormal">
echo "L'inode al SUID da verificare è $inode!"<o:p></o:p></div>
<div class="MsoNormal">
cd<o:p></o:p></div>
<div class="MsoNormal">
stringa=$<span style="background-color: lime;">(find -inum "$inode")</span><o:p></o:p></div>
<div class="MsoNormal">
if [ ! -z "$stringa" ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
echo "Non ci sono hard link al SUID!"<o:p></o:p></div>
<div class="MsoNormal">
else<o:p></o:p></div>
<div class="MsoNormal">
echo "L'hard link al SUID è $stringa!"<o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
let i++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>29 Scrivere uno script che tracci al terminale il <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">grafico relativo all'evoluzione temporale del totale della memoria reale (RSS, Resident Set Size) utilizzata dai processi del sistema</span>.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
while :<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: red; background-position: initial initial; background-repeat: initial initial;">ps -a -orss= > lista.txt</span><o:p></o:p></div>
<div class="MsoNormal">
mem=$(head -2 lista.txt | tail -1)<o:p></o:p></div>
<div class="MsoNormal">
echo "***$mem"<o:p></o:p></div>
<div class="MsoNormal">
i=0<o:p></o:p></div>
<div class="MsoNormal">
while [ "$i" -lt "$mem" ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
echo -n "*"<o:p></o:p></div>
<div class="MsoNormal">
let i++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
echo ""<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>29 Fare in modo che tutte le volte che viene <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">eseguito il comando rm, gli elementi dati come argomenti al comando non siano cancellati ma siano spostati nel cestino</span>. Nel caso di precedente <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">esistenza nel cestino di elementi con lo stesso nome di quelli cancellati, il nome di questi ultimi sia modificato</span> con l'aggiunta di un'indicazione temporale.<o:p></o:p></b></div>
<div class="MsoNormal">
<b>Suggerimenti: 1) nella messa a punto del comando usare cp invece di rm; 2) usare una funzione.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="font-family: 'Menlo Regular';">#!/bin/bash<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Menlo Regular';">function CANCELLA {<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Menlo Regular';"> <span style="background-color: magenta; background-position: initial initial; background-repeat: initial initial;">trap "rm $i" EXIT</span><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Menlo Regular';"> return<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Menlo Regular';">}<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Menlo Regular';">for i in $@; do<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Menlo Regular';"> CANCELLA<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Menlo Regular';"> <span style="background-color: red; background-position: initial initial; background-repeat: initial initial;">cestino=$HOME/.Trash/$i</span><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Menlo Regular';"> if [ ! -e $cestino ]<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Menlo Regular';"> then<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Menlo Regular';"> <span style="background-color: lime;"> </span><span style="background-color: lime;">mv "$i" "date-$i"</span><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Menlo Regular';"> else <o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Menlo Regular';"> <span style="background-color: lime;"> </span><span style="background-color: lime;">mv $i -t $HOME/.Trash/</span><span style="color: red;"><o:p></o:p></span></span></div>
<div class="MsoNormal">
<span style="font-family: 'Menlo Regular';"> fi<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Menlo Regular';">done<o:p></o:p></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>30 Scrivere uno script che restituisca il <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">numero di file regolari contenuti in una directory passata come parametro contando una sola volta gli elementi di directory che puntano allo stesso inode</span>.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="background-color: lime;">find . -type f -print0 | xargs -0 stat -f %i | sort | uniq | wc –l</span><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>30 Creare uno script che prenda come argomenti un PID e un valore percentuale C.<o:p></o:p></b></div>
<div class="MsoNormal">
<b>Con l'opzione -k lo script deve <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">interrompere definitivamente il processo di pid PID</span> quando supera la percentuale C di utilizzo della cpu.<o:p></o:p></b></div>
<div class="MsoNormal">
<b>Con l'opzione -s (ed il valore S come argomento dell'opzione) deve <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">interrompere il processo di pid PID tutte le volte che supera la percentuale C</span> di utilizzo della cpu e poi farlo riprendere dopo S secondi.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="background-color: red; background-position: initial initial; background-repeat: initial initial;">echo " $(ps -p 6221 -o %cpu | tail -1) * 10 " | bc</span><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>31 Scrivere uno script bash, da lanciare in background, che <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">avverta l'utente quando in una pagina web</span>, il cui URL Ë passato allo script come primo parametro, <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">si trova una parola</span> passata allo script come secondo parametro. (Suggerimento: usare curl - http://curl.haxx.se/docs/manual.html)<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
a=1<o:p></o:p></div>
<div class="MsoNormal">
finded=$(<span style="background-color: blue; background-position: initial initial; background-repeat: initial initial;">curl "$1" | grep -o -i "$2" | wc -l</span>)<o:p></o:p></div>
<div class="MsoNormal">
if [ $finded -ge $a ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
echo "Stringa trovata 1 o più volte!"<o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>32 Creare uno script che consenta, ogni volta che Ë eseguito su di una macchina, di ottenere 5 indici utili ad una valutazione approssimata delle seguenti grandezze:<o:p></o:p></b></div>
<div class="MsoNormal">
<b>1) <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">Velocit‡ della scrittura su disco</span><o:p></o:p></b></div>
<div class="MsoNormal">
<b>2) <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">Velocit‡ della lettura da disco</span><o:p></o:p></b></div>
<div class="MsoNormal">
<b>3) <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">Velocit‡ di calcolo</span><o:p></o:p></b></div>
<div class="MsoNormal">
<b>4) <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">Velocit‡ di scrittura in RAM</span><o:p></o:p></b></div>
<div class="MsoNormal">
<b>5) <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">Velocit‡ di lettura da RAM</span><o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>Suggerimento: si ricorda che l'utilizzo dello standard error del built-in time Ë reso pi˘<o:p></o:p></b></div>
<div class="MsoNormal">
<b>agevole dalla sua esecuzione in un subshell (tramite il costrutto "()").<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
echo "TEST DI SCRITTURA!"<o:p></o:p></div>
<div class="MsoNormal">
echo "ZEROS DATA:"<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: red; background-position: initial initial; background-repeat: initial initial;">dd if=/dev/zero of=testfile0 bs=8k count=10000; sync;</span><o:p></o:p></div>
<div class="MsoNormal">
echo "RANDOM DATA:"<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: red; background-position: initial initial; background-repeat: initial initial;">dd if=/dev/urandom of=testfileR bs=8k count=10000; sync;</span><o:p></o:p></div>
<div class="MsoNormal">
echo "TEST DI LETTURA!"<o:p></o:p></div>
<div class="MsoNormal">
echo "ZEROS DATA:"<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: red; background-position: initial initial; background-repeat: initial initial;">dd if=testfile0 of=/dev/null</span><o:p></o:p></div>
<div class="MsoNormal">
echo "RANDOM DATA:"<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: red; background-position: initial initial; background-repeat: initial initial;">dd if=testfileR of=/dev/null</span><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>33 Creare uno script al quale sono passati tre parametri A, B e C e che, lanciato in background:<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>1) <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">avverta con tre suoni del fatto che il round-trip time dei pacchetti di echo diretti ad A<o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">oltrepassa in media il valore B</span>;<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>2) <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">avverta con 10 suoni quando la percentuale di pacchetti di echo non ritornati tra quelli<o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">inviati ad A oltrepassa in media il valore C</span>.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>Suggerimento: usare il comando ping.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
dieci=10<o:p></o:p></div>
<div class="MsoNormal">
tre=3<o:p></o:p></div>
<div class="MsoNormal">
echo "Premere CTRL+C per uscire dallo script!"<o:p></o:p></div>
<div class="MsoNormal">
while :<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
dieci=10<o:p></o:p></div>
<div class="MsoNormal">
tre=3<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: blue; background-position: initial initial; background-repeat: initial initial;">ping -c 3 -n $1 | tail -2 | head -1</span> > elenco.txt<o:p></o:p></div>
<div class="MsoNormal">
chmod 755 elenco.txt<o:p></o:p></div>
<div class="MsoNormal">
a=$( cut -f 10 -d " " elenco.txt)<o:p></o:p></div>
<div class="MsoNormal">
b=$( cut -f 6 -d " " elenco.txt | tr -d '%')<o:p></o:p></div>
<div class="MsoNormal">
echo ${a%m*s} > elnum.txt<o:p></o:p></div>
<div class="MsoNormal">
chmod 755 elnum.txt<o:p></o:p></div>
<div class="MsoNormal">
numero=$(head -1 elnum.txt)<o:p></o:p></div>
<div class="MsoNormal">
echo $numero/3 | bc -l > nuovoel.txt<o:p></o:p></div>
<div class="MsoNormal">
chmod 755 nuovoel.txt<o:p></o:p></div>
<div class="MsoNormal">
narr=$(head -1 nuovoel.txt | awk '{printf("%.0f\n", $1)}')<o:p></o:p></div>
<div class="MsoNormal">
if [ "$2" -le "$narr" ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
i=1<o:p></o:p></div>
<div class="MsoNormal">
while [ "$i" -le "$tre" ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
echo -e "\a"<o:p></o:p></div>
<div class="MsoNormal">
let i++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
if [ "$3" -le "$b" ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
k=1<o:p></o:p></div>
<div class="MsoNormal">
while [ "$k" -le "$dieci" ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
echo -e "\a"<o:p></o:p></div>
<div class="MsoNormal">
let k++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>34 Creare uno script al quale sono passati tre parametri A, B e C e che:<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>1) <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">Cambi</span> in C <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">l'estensione di tutti i file</span> che hanno estensione B presenti nella directory A <o:p></o:p></b></div>
<div class="MsoNormal">
<b>(es. file1.B in file1.C, file2.B in file2.C, ecc.);<o:p></o:p></b></div>
<div class="MsoNormal">
<b>2) <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">Dia un resoconto di tutti i file di cui ha cambiato il nome</span><o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
cd<o:p></o:p></div>
<div class="MsoNormal">
percorso=$(find -iname $1)<o:p></o:p></div>
<div class="MsoNormal">
echo "$percorso"<o:p></o:p></div>
<div class="MsoNormal">
cd $percorso<o:p></o:p></div>
<div class="MsoNormal">
x=0; for i in *.$2; do let x++; <span style="background-color: lime;">mv -v $i $(printf "$2%03x.$3" $x)</span>; done<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>34 Creare uno <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">script</span> che produca un output <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">equivalente a quello del comando "top"</span><o:p></o:p></b></div>
<div class="MsoNormal">
<b>(senza utilizzare quest'ultimo) e che si limiti a mostrare per ogni processo esclusivamente<o:p></o:p></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">il nome del proprietario, il pid e la percentuale di %cpu utilizzata</span>.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: red; background-position: initial initial; background-repeat: initial initial;">ps -aux | awk '{print $1" "$2" "$3}'</span><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>35 Creare uno script - al quale viene passato un parametro N (numero intero positivo) -<o:p></o:p></b></div>
<div class="MsoNormal">
<b>che <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">crei nella cartella corrente N soft link agli N file di maggiori dimensioni presenti nel<o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">file system</span>.<o:p></o:p></b></div>
<div class="MsoNormal">
<b>Il nome di tali link deve essere costituito da 12 cifre che esprimano la dimensione del file in bytes seguite da un trattino e dal basename originale del file (es. se un file di nome pippo.txt e dimensioni 10 MB rientra tra gli N pi˘ grandi presenti nel file system, deve essere creato un link di nome 000010485760-pippo.txt).<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
cd<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;">find -type f -exec du -sb {} \; > elenco.txt</span><o:p></o:p></div>
<div class="MsoNormal">
chmod 755 elenco.txt<o:p></o:p></div>
<div class="MsoNormal">
sort -n -r -k 1 elenco.txt > elenco1.txt<o:p></o:p></div>
<div class="MsoNormal">
chmod 755 elenco1.txt<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;">percorsosoft=$(find -iname "esame35")</span><o:p></o:p></div>
<div class="MsoNormal">
echo "$percorsosoft"<o:p></o:p></div>
<div class="MsoNormal">
i=1<o:p></o:p></div>
<div class="MsoNormal">
while [ "$i" -le "$1" ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
files=$(head -$i elenco1.txt | tail -1 | awk '{print $2}')<o:p></o:p></div>
<div class="MsoNormal">
echo "$files"<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;"> </span><span style="background-color: lime;">stat -c%12s $files | tr ' ' '0'</span><o:p></o:p></div>
<div class="MsoNormal">
echo "$dimensione"<o:p></o:p></div>
<div class="MsoNormal">
nome=$(echo "${files##.*/}")<o:p></o:p></div>
<div class="MsoNormal">
echo "$nome"<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;"> </span><span style="background-color: lime;">ln -s $files $percorsosoft/$dimensione-$nome</span><o:p></o:p></div>
<div class="MsoNormal">
let i++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
<b>36 Creare uno script che, <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">utilizzando l'header HTTP Last-Modified, tenga sotto continua osservazione una lista di siti web specificata in un file, e apra in un browser web quelli che rileva essere stati modificati rispetto ad una rilevazione di riferimento</span>.<o:p></o:p></b></div>
<div class="MsoNormal">
<b>(Suggerimento: usare curl - http://curl.haxx.se/docs/manual.html) <o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
conta=$(wc -l elenco.txt | awk '{print $1}')<o:p></o:p></div>
<div class="MsoNormal">
i=1<o:p></o:p></div>
<div class="MsoNormal">
while [ $i -le $conta ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
sito=$(head -$i elenco.txt | tail -1 | awk '{print $1}')<o:p></o:p></div>
<div class="MsoNormal">
echo "+++$sito"<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: blue; background-position: initial initial; background-repeat: initial initial;">curl -b headers http://$sito > ril-$sito.txt</span><o:p></o:p></div>
<div class="MsoNormal">
let i++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
while :<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
sleep 5<o:p></o:p></div>
<div class="MsoNormal">
k=1<o:p></o:p></div>
<div class="MsoNormal">
while [ $k -le $conta ]<o:p></o:p></div>
<div class="MsoNormal">
do <o:p></o:p></div>
<div class="MsoNormal">
sito=$(head -$k elenco.txt | tail -1 | awk '{print $1}')<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: blue; background-position: initial initial; background-repeat: initial initial;">curl -b headers http://$sito > $sito.txt</span><o:p></o:p></div>
<div class="MsoNormal">
stringa=$(diff $sito.txt ril-$sito.txt)<o:p></o:p></div>
<div class="MsoNormal">
if [ ! -z "$stringa" ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
echo "Il sito modificato è $sito!"<o:p></o:p></div>
<div class="MsoNormal">
else<o:p></o:p></div>
<div class="MsoNormal">
echo "Il sito $sito non è stato modificato!"<o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
let k++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>36 Si consideri un metodo di autenticazione cosÏ costituito:<o:p></o:p></b></div>
<div class="MsoNormal">
<b>la password viene passata all'algoritmo md5 e memorizzata. Quando l'utente inserisce la password<o:p></o:p></b></div>
<div class="MsoNormal">
<b>tentativa, questa viene trasformata mediante l'algoritmo md5 e il risultato viene confrontato con<o:p></o:p></b></div>
<div class="MsoNormal">
<b>quello memorizzato. La password viene considerata valida se i due risultati coincidono.<o:p></o:p></b></div>
<div class="MsoNormal">
<b>Si scriva uno script che <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">utilizzi un metodo brute force ed il dizionario /usr/share/dict/words<o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">per scoprire una password di cui si possegga la codifica md5</span>.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
password=dog<o:p></o:p></div>
<div class="MsoNormal">
md5pass=$(<span style="background-color: magenta; background-position: initial initial; background-repeat: initial initial;">echo $password | md5sum</span>)<o:p></o:p></div>
<div class="MsoNormal">
cat /usr/share/dict/words > elencoparole.txt<o:p></o:p></div>
<div class="MsoNormal">
np=$(cat /usr/share/dict/words | wc -l)<o:p></o:p></div>
<div class="MsoNormal">
k=1<o:p></o:p></div>
<div class="MsoNormal">
while [ "$k" -le "$np" ]<o:p></o:p></div>
<div class="MsoNormal">
do <o:p></o:p></div>
<div class="MsoNormal">
parolacercata=$(head -$k elencoparole.txt | tail -1)<o:p></o:p></div>
<div class="MsoNormal">
md5cercato=$(<span style="background-color: magenta; background-position: initial initial; background-repeat: initial initial;">echo $parolacercata | md5sum</span>)<o:p></o:p></div>
<div class="MsoNormal">
if [ "$md5cercato" == "$md5pass" ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
echo "La password scoperta è $parolacercata!"<o:p></o:p></div>
<div class="MsoNormal">
break<o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
let k++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>37 Creare uno script da lanciare con la linea di comando:<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>./weightps N S<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>con N ed S numeri interi positivi, che <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">fornisca pid e basename degli eseguibili corrispondenti<o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">agli N processi che negli ultimi S secondi hanno utilizzato maggiormente la cpu</span>.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
while [ $SECONDS -le $2 ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: red; background-position: initial initial; background-repeat: initial initial;">ps -eo pcpu,user,pid | sed '1d' | sort -n -r -k 1</span> > elenco.txt<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
echo " CPU USER PID"<o:p></o:p></div>
<div class="MsoNormal">
i=1<o:p></o:p></div>
<div class="MsoNormal">
while [ $i -le $1 ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
riga=$(head -$i elenco.txt | tail -1)<o:p></o:p></div>
<div class="MsoNormal">
echo "$riga"<o:p></o:p></div>
<div class="MsoNormal">
let i++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>38 Creare uno uno script che a partire dal momento in cui Ë lanciato registri in un file<o:p></o:p></b></div>
<div class="MsoNormal">
<b>tutti gli avvii e le terminazioni di processi con il seguente formato:<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;"><istante di avvio> <pid1> <nome eseguibile1> avviato<o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;"><istante di avvio> <pid2> <nome eseguibile2> avviato<o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;"><istante di terminazione> <pid2> <nome eseguibile2> terminato<o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;"><istante di terminazione> <pid1> <nome eseguibile1> terminato</span><o:p></o:p></b></div>
<div class="MsoNormal">
<b>ecc. ecc.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: red; background-position: initial initial; background-repeat: initial initial;">ps axo start_time,pid,cmd | sed '1d'</span> > listaprocessi.txt<o:p></o:p></div>
<div class="MsoNormal">
cont=$(wc -l listaprocessi.txt | awk '{print $1}')<o:p></o:p></div>
<div class="MsoNormal">
i=1<o:p></o:p></div>
<div class="MsoNormal">
while [ $i -le $cont ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
avvio=$(head -$i listaprocessi.txt | tail -1 | awk '{print $1}')<o:p></o:p></div>
<div class="MsoNormal">
pid=$(head -$i listaprocessi.txt | tail -1 | awk '{print $2}')<o:p></o:p></div>
<div class="MsoNormal">
nome=$(head -$i listaprocessi.txt | tail -1 | awk '{print $3}')<o:p></o:p></div>
<div class="MsoNormal">
echo "<$avvio> <$pid> <$nome> avviato"<o:p></o:p></div>
<div class="MsoNormal">
let i++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>39 Creare uno uno script che <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">utilizzando un qualsiasi dizionario ad esso fornito come parametro (es. /usr/share/dict/words) stampi a terminale tutte le coppie palindrome di parole</span> che Ë possibile costruire usando le parole del dizionario (es. "a da").<o:p></o:p></b></div>
<div class="MsoNormal">
<b>Suggerimento: per velocizzare le operazioni di test e debugging dello script conviene usare uno pseudo-dizionario di poche righe costruito ad hoc.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;">cat /usr/share/dict/words > elencoparole.txt<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: lime;">np=$(cat /usr/share/dict/words | wc -l)</span><o:p></o:p></div>
<div class="MsoNormal">
k=1<o:p></o:p></div>
<div class="MsoNormal">
while [ "$k" -le "$np" ]<o:p></o:p></div>
<div class="MsoNormal">
do <o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;"> </span><span style="background-color: lime;">parola=$(head -$k elencoparole.txt | tail -1 |tr '[:lower:]' '[:upper:]')<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: lime;"> inversa=$(echo "$parola" | rev)</span><o:p></o:p></div>
<div class="MsoNormal">
if [ $parola == $inversa ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
echo "La parola $parola è palindroma!"<o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
let k++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>39 Scrivere una linea di comando che sia in grado di <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">stampare a terminale le lunghezze in righe e i nomi di tutti e soli gli script Bourne shell o bash presenti nella directory /etc</span>.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;">find /etc -iname "*.sh" > nuovo.txt</span><o:p></o:p></div>
<div class="MsoNormal">
chmod 755 nuovo.txt<o:p></o:p></div>
<div class="MsoNormal">
cont=$(wc -l nuovo.txt | awk '{print $1}')<o:p></o:p></div>
<div class="MsoNormal">
i=1<o:p></o:p></div>
<div class="MsoNormal">
while [ $i -le $cont ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
nomescript=$(head -$i nuovo.txt | tail -1)<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;"> </span><span style="background-color: lime;">nome=$(echo ${nomescript##/*/})</span><o:p></o:p></div>
<div class="MsoNormal">
lunghezza=$(echo ${#nome})<o:p></o:p></div>
<div class="MsoNormal">
echo "Il nome dello script è $nome e la sua lunghezza è $lunghezza!"<o:p></o:p></div>
<div class="MsoNormal">
let i++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>40 Scrivere uno script bash in grado di fornire una rappresentazione <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">grafica della bitmap degli inode nel file system in cui si trova la propria home directory</span> indicando con una 'x' gli inode occupati e con un '.' quelli liberi.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>Suggerimento: per velocizzare le operazioni di test e debugging dello script conviene limitarne l'azione ad una particolare directory e ad un range di inodes (dopo essersi assicurati che tale range abbia qualche elemento all'interno della directory)<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
cd /home/administrator<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;">find -type d > cartelle.txt</span><o:p></o:p></div>
<div class="MsoNormal">
sed -i '1d' cartelle.txt<o:p></o:p></div>
<div class="MsoNormal">
contcartelle=$(wc -l cartelle.txt | awk '{print $1}')<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;">ls -li > inode.txt</span><o:p></o:p></div>
<div class="MsoNormal">
sed -i '1d' inode.txt<o:p></o:p></div>
<div class="MsoNormal">
continode=$(wc -l inode.txt | awk '{print $1}')<o:p></o:p></div>
<div class="MsoNormal">
k=1<o:p></o:p></div>
<div class="MsoNormal">
while [ $k -le $continode ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
inode=$(head -$k inode.txt | tail -1 | awk '{print $1}')<o:p></o:p></div>
<div class="MsoNormal">
a=$(find -inum $inode | wc -l)<o:p></o:p></div>
<div class="MsoNormal">
if [ $a -gt 1 ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
echo "$inode x"<o:p></o:p></div>
<div class="MsoNormal">
else<o:p></o:p></div>
<div class="MsoNormal">
echo "$inode ."<o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
let k++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
i=1<o:p></o:p></div>
<div class="MsoNormal">
while [ $i -le $contcartelle ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
cartella=$(head -$i cartelle.txt | tail -1)<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;">nuovacartella=$(echo ${cartella:2})</span><o:p></o:p></div>
<div class="MsoNormal">
cd /home/administrator/$nuovacartella<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;"> </span><span style="background-color: lime;">ls -li > inode.txt</span><o:p></o:p></div>
<div class="MsoNormal">
sed -i '1d' inode.txt<o:p></o:p></div>
<div class="MsoNormal">
continode1=$(wc -l inode.txt | awk '{print $1}')<o:p></o:p></div>
<div class="MsoNormal">
j=1<o:p></o:p></div>
<div class="MsoNormal">
while [ $j -le $continode1 ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
inode1=$(head -$j inode.txt | tail -1 | awk '{print $1}')<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;"> </span><span style="background-color: lime;">b=$(find -inum $inode1 | wc -l)</span><o:p></o:p></div>
<div class="MsoNormal">
if [ $b -gt 1 ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
echo "$inode1 x"<o:p></o:p></div>
<div class="MsoNormal">
else<o:p></o:p></div>
<div class="MsoNormal">
echo "$inode1 ."<o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
let j++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
cd<o:p></o:p></div>
<div class="MsoNormal">
let i++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
<b>41 Costruire uno script che prenda come unico parametro il nome di una directory <nome directory><o:p></o:p></b></div>
<div class="MsoNormal">
<b>localizzata all'interno della propria home.<o:p></o:p></b></div>
<div class="MsoNormal">
<b>Nell'ipotesi che la struttura e i nomi delle directory contenute nella directory <nome directory><o:p></o:p></b></div>
<div class="MsoNormal">
<b>non cambino, tale script deve essere in grado di effettuare ad <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">ogni ora un backup della cartella</span><o:p></o:p></b></div>
<div class="MsoNormal">
<b><nome directory> col seguente criterio:<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>1) Al solo scopo di semplificare lo script, <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">i backup possono essere localizzati nello stesso volume<o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">della directory originaria</span>;<o:p></o:p></b></div>
<div class="MsoNormal">
<b>2) <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">le cartelle di ciascun backup orario devono trovarsi all'interno di una directory chiamata<o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">backup-<nome directory> e devono contenere nel nome l'orario del backup</span><o:p></o:p></b></div>
<div class="MsoNormal">
<b>(es. 200905071015-<nome directory>, 200905071115-<nome directory> ecc.);<o:p></o:p></b></div>
<div class="MsoNormal">
<b>3) <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">Il primo back-up deve consistere in una copia (effettuata col comando cp) della cartella<o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">originaria</span>;<o:p></o:p></b></div>
<div class="MsoNormal">
<b>4) <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">per i back-up seguenti: se i file contenuti nelle varie cartelle non hanno subito alcun<o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">cambiamento rispetto all'ultimo backup (di nome, nel contenuto dei dati o dell'inode) sono<o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">semplicemente replicati creando un nuovo hard link al file corrispondente nel precedente backup</span>;<o:p></o:p></b></div>
<div class="MsoNormal">
<b>5) <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">se invece i file contenuti nelle varie cartelle hanno subito qualche cambiamento rispetto<o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">all'ultimo backup (di nome, nel contenuto dei dati o dell'inode) o sono stati creati ex-novo,<o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">allora devono essere effettivamente copiati nel backup, nella stessa posizione che hanno<o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">nella cartella di cui si effettua il backup</span>.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
pwd > percorso.txt<o:p></o:p></div>
<div class="MsoNormal">
percorso=$(head -1 percorso.txt)<o:p></o:p></div>
<div class="MsoNormal">
a=1<o:p></o:p></div>
<div class="MsoNormal">
i=1<o:p></o:p></div>
<div class="MsoNormal">
while :<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
while [ $i -ge 1 ]<o:p></o:p></div>
<div class="MsoNormal">
do <o:p></o:p></div>
<div class="MsoNormal">
if [ $i -eq 1 ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
data=$(date +%Y%m%d%H%M)<o:p></o:p></div>
<div class="MsoNormal">
ultimo=$data<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;"> </span><span style="background-color: lime;">cp -r $percorso/$1 $percorso/$data-$1</span><o:p></o:p></div>
<div class="MsoNormal">
chmod 777 $percorso/$data-$1<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;"> </span><span style="background-color: lime;">find $percorso/$ultimo-$1 -type d > cartelle.txt<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: lime;"> find $percorso/$ultimo-$1 -type f > files.txt<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: lime;"> find $percorso/$ultimo-$1 -type f -exec ls -li {} \; > inode.txt</span><o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
if [ $i -gt 1 ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
data2=$(date +%Y%m%d%H%M)<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;"> </span><span style="background-color: lime;">find $percorso/$ultimo-$1 -type d > cartelle1.txt<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: lime;"> find $percorso/$ultimo-$1 -type f > files1.txt<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: lime;"> find $percorso/$ultimo-$1 -type f -exec ls -li {} \; > inode1.txt<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: lime;"> primo=$(diff cartelle.txt cartelle1.txt)<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: lime;"> secondo=$(diff files.txt files1.txt)<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: lime;"> terzo=$(diff inode.txt inode1.txt)</span><o:p></o:p></div>
<div class="MsoNormal">
tot=$primo$secondo$terzo<o:p></o:p></div>
<div class="MsoNormal">
if [ -z "$tot" ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;"> </span><span style="background-color: lime;">ln -s $percorso/$ultimo-$1 $percorso/hl$ultimo-$1 </span><o:p></o:p></div>
<div class="MsoNormal">
else<o:p></o:p></div>
<div class="MsoNormal">
ultimo=$data2<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;"> </span><span style="background-color: lime;">cp -r $1 $percorso/$data2-$1<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: lime;"> find $percorso/$ultimo-$1 -type d > cartelle.txt<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: lime;"> find $percorso/$ultimo-$1 -type f > files.txt<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: lime;"> find $percorso/$ultimo-$1 -type f -exec ls -li {} \; > inode.txt</span><o:p></o:p></div>
<div class="MsoNormal">
fi <o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
sleep 3600<o:p></o:p></div>
<div class="MsoNormal">
let i++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>42 <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">Costruire due script script1.sh e script2.sh che lavorino in maniera alternata senza mai fermarsi</span>.<o:p></o:p></b></div>
<div class="MsoNormal">
<b>Ovvero, quando il primo svolge un'operazione il secondo attende fermo.<o:p></o:p></b></div>
<div class="MsoNormal">
<b>Non appena il primo si ferma il secondo comincia a lavorare.<o:p></o:p></b></div>
<div class="MsoNormal">
<b>Appena il secondo termina la sua operazione riparte il primo e cosÏ via all'infinito.<o:p></o:p></b></div>
<div class="MsoNormal">
<b>Scegliere qualsiasi coppia di operazioni che abbia senso (per es. la scrittura in un file da parte del primo e l'analisi del suo contenuto da parte del secondo).<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
echo "Ciao"<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;">(sleep 1 && ./esercizio2.sh)<o:p></o:p></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
echo "A tutti"<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;">(sleep 1 && ./esercizio1.sh)</span><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>43 Scrivere uno script bash che <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">cerchi tutti i files il cui nome contiene caratteri diversi da lettere o cifre e</span>, per ciascun file trovato, <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">proponga all'utente la sostituzione di ciascuno di tali caratteri</span> con un carattere proposto dall'utente.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
find -type f > file.txt<o:p></o:p></div>
<div class="MsoNormal">
cont=$(wc -l file.txt | awk '{print $1}')<o:p></o:p></div>
<div class="MsoNormal">
i=1<o:p></o:p></div>
<div class="MsoNormal">
while [ $i -le $cont ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;">nome=$(head -$i file.txt | tail -1)<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: lime;"> stringa=$(echo ${nome:1})<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: lime;"> lung=$(echo ${#stringa})<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: lime;"> suffisso=$(echo ${stringa##/*.})<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: lime;"> lung1=$(echo ${#suffisso})<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: lime;"> nlung=$(expr $lung - $lung1)<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: lime;"> stringa1=$(echo ${stringa:1})<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: lime;"> nlung=$(expr $nlung - 2)</span><o:p></o:p></div>
<div class="MsoNormal">
k=0<o:p></o:p></div>
<div class="MsoNormal">
while [ $k -lt $nlung ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
car=$<span style="background-color: lime;">(echo ${stringa1:$k:1})</span><o:p></o:p></div>
<div class="MsoNormal">
if [ "$car" == "." ] || [ "$car" == "|" ] || [ "$car" == "!" ] || [ "$car" == "£" ] || [ "$car" == "$" ] || [ "$car" == "%" ] || [ "$car" == "&" ] || [ "$car" == "/" ] || [ "$car" == "=" ] || [ "$car" == "?" ] || [ "$car" == "^" ] || [ "$car" == "°" ] || [ "$car" == "-" ] || [ "$car" == "_" ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
echo "Inserire carattere da sostituire:" <o:p></o:p></div>
<div class="MsoNormal">
read nuovocar<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;"> </span><span style="background-color: lime;">echo "$nuovocar" | tr -d "\n" >> stringhe.txt</span><o:p></o:p></div>
<div class="MsoNormal">
else<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;"> </span><span style="background-color: lime;">echo "$car" | tr -d "\n" >> stringhe.txt</span><o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
let k++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
nuovonome=$(head -1 stringhe.txt)<o:p></o:p></div>
<div class="MsoNormal">
rm stringhe.txt<o:p></o:p></div>
<div class="MsoNormal">
nometot=$nuovonome.$suffisso<o:p></o:p></div>
<div class="MsoNormal">
echo "$nometot"<o:p></o:p></div>
<div class="MsoNormal">
let i++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
#Per semplicità ho eseguito lo script nella cartella esame43, se volessimo effettuare un controllo su tutti i file presenti nel pc basterebbe inserire il percorso in find e successivamente effettuando diverse operazioni e togliendo il percorso di ogni file avremmo la lista di tutti i file senza percorso, infine rimuovendo e conteggiando le diverse lunghezze delle stringhe escludendo i suffissi possiamo procedere alla sostituzione dei caratteri speciali.<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>44 Scrivere uno script bash che <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">abbia lo stesso funzionamento del comando cp ma conservi la data di modifica del file originario nel file di destinazione</span>.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
echo "1. File testo, sh, tmp"<o:p></o:p></div>
<div class="MsoNormal">
echo "2. Cartella"<o:p></o:p></div>
<div class="MsoNormal">
echo "3. File gz"<o:p></o:p></div>
<div class="MsoNormal">
read scelta<o:p></o:p></div>
<div class="MsoNormal">
case $scelta in<o:p></o:p></div>
<div class="MsoNormal">
1)<o:p></o:p></div>
<div class="MsoNormal">
echo "Inserire nome file o cartella da copiare:"<o:p></o:p></div>
<div class="MsoNormal">
read nome<o:p></o:p></div>
<div class="MsoNormal">
if [ $nome == *.txt ] || [ $nome == *.tmp ] || [ $nome == *.sh ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
echo "Inserire percorso dove copiare il file:"<o:p></o:p></div>
<div class="MsoNormal">
read percorso<o:p></o:p></div>
<div class="MsoNormal">
cat $nome > $percorso/$nome<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;"> </span><span style="background-color: lime;">touch -m -r $nome $percorso/$nome</span><o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
;;<o:p></o:p></div>
<div class="MsoNormal">
2)<o:p></o:p></div>
<div class="MsoNormal">
echo "Inserire nome file o cartella da copiare:"<o:p></o:p></div>
<div class="MsoNormal">
read nome<o:p></o:p></div>
<div class="MsoNormal">
echo "Inserire percorso dove copiare la cartella:"<o:p></o:p></div>
<div class="MsoNormal">
read percorso<o:p></o:p></div>
<div class="MsoNormal">
mkdir $percorso/$nome<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;"> </span><span style="background-color: lime;">ls -l $nome | awk '{print $9}' | sed '1d' > lista.txt</span><o:p></o:p></div>
<div class="MsoNormal">
cont=$(wc -l lista.txt | awk '{print $1}')<o:p></o:p></div>
<div class="MsoNormal">
i=1<o:p></o:p></div>
<div class="MsoNormal">
while [ $i -le $cont ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
nome2=$(head -$i lista.txt | tail -1)<o:p></o:p></div>
<div class="MsoNormal">
if [ $nome2 == *.txt ] || [ $nome2 == *.tmp ] || [ $nome2 == *.sh ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;"> </span><span style="background-color: lime;">cat $nome/$nome2 > $percorso/$nome/$nome2<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: lime;"> touch -m -r $nome/$nome2 $percorso/$nome/$nome2</span><o:p></o:p></div>
<div class="MsoNormal">
let i++<o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
if [ $nome2 == *.gz ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: magenta; background-position: initial initial; background-repeat: initial initial;">gunzip $nome2</span><o:p></o:p></div>
<div class="MsoNormal">
nome3=$(echo ${nome2%.*z})<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;"> </span><span style="background-color: lime;">cat $nome/$nome3 > $percorso/$nome/$nome3<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: lime;"> touch -m -r $nome/$nome3 $percorso/$nome/$nome3</span><o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: magenta; background-position: initial initial; background-repeat: initial initial;">gzip $percorso/$nome/$nome3<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: magenta; background-position: initial initial; background-repeat: initial initial;"> gzip $nome/$nome3</span><o:p></o:p></div>
<div class="MsoNormal">
touch -m -r $nome/$nome2 $percorso/$nome/$nome3<o:p></o:p></div>
<div class="MsoNormal">
let i++<o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
;;<o:p></o:p></div>
<div class="MsoNormal">
3)<o:p></o:p></div>
<div class="MsoNormal">
echo "Inserire nome file o cartella da copiare:"<o:p></o:p></div>
<div class="MsoNormal">
read nome<o:p></o:p></div>
<div class="MsoNormal">
if [ $nome == *.gz ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: magenta; background-position: initial initial; background-repeat: initial initial;">gunzip $nome</span><o:p></o:p></div>
<div class="MsoNormal">
nome1=$(echo ${nome%.*z})<o:p></o:p></div>
<div class="MsoNormal">
echo "Inserire percorso dove copiare il file:"<o:p></o:p></div>
<div class="MsoNormal">
read percorso<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;"> </span><span style="background-color: lime;">cat $nome1 > $percorso/$nome1<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: lime;"> touch -m -r $nome1 $percorso/$nome1</span><o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: magenta; background-position: initial initial; background-repeat: initial initial;">gzip $percorso/$nome1<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: magenta; background-position: initial initial; background-repeat: initial initial;"> gzip $nome1</span><o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;"> </span><span style="background-color: lime;">touch -m -r $nome $percorso/$nome</span><o:p></o:p></div>
<div class="MsoNormal">
fi <o:p></o:p></div>
<div class="MsoNormal">
;;<o:p></o:p></div>
<div class="MsoNormal">
esac<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>45 Creare uno script che produca un <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">log che registri tutti i processi lanciati dall'avvio dello<o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">script con l'indicazione di quale Ë il parent che li ha lanciati</span><o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="background-color: red; background-position: initial initial; background-repeat: initial initial;">pid=(`ps axo pid)</span><o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: red; background-position: initial initial; background-repeat: initial initial;">ppid=(`ps axo ppid`)</span><o:p></o:p></div>
<div class="MsoNormal">
echo “Il processo ${ppid[$i]} ha lanciato il processo ${pid[$i]}” > log.txt<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>45 <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">Trasformare ricorsivamente tutti i nomi di file contenuti in una directory sostituendo<o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">i caratteri maiuscoli con i minuscoli</span>.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
for file in *<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;"> </span><span style="background-color: lime;">fnome=`basename $file`<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: lime;"> n=ècho $fnome | tr a-z A-Z`</span><o:p></o:p></div>
<div class="MsoNormal">
echo $n<o:p></o:p></div>
<div class="MsoNormal">
if [“$fnome” != “$n” ]<o:p></o:p></div>
<div class="MsoNormal" style="text-indent: 35.4pt;">
then<o:p></o:p></div>
<div class="MsoNormal" style="text-indent: 35.4pt;">
<span style="background-color: lime;"> </span><span style="background-color: lime;">mv $fnome $n</span><o:p></o:p></div>
<div class="MsoNormal" style="text-indent: 35.4pt;">
fi<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
exit $?<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>45 Creare uno script che <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">aggiorni continuamente l'ora completa dei secondi</span><o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
While :<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;">date<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: lime;"> sleep 1</span><o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>46 Fare in modo che il proprio prompt principale <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">indichi il numero di utenti che hanno almeno una sessione interattiva aperta nel sistema</span><o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: red; background-position: initial initial; background-repeat: initial initial;">ps aux | sed '1d' | sort -n -r -k 3 | head -1</span><o:p></o:p></div>
<div class="MsoNormal" style="text-indent: 35.4pt;">
<br /></div>
<div class="MsoNormal">
<b>47 Supporre di avere in un file una lista di alcuni file eseguibili sulla propria macchina, insieme<o:p></o:p></b></div>
<div class="MsoNormal">
<b>con i loro digest md5. Il file potrebbe avere il seguente formato:<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>/usr/bin/cat <TAB> 0039cd507d558781869e1b6b861d7d9e<o:p></o:p></b></div>
<div class="MsoNormal">
<b>/usr/bin/find <TAB> af07b42f06eb72336317a1d23c7c4557<o:p></o:p></b></div>
<div class="MsoNormal">
<b>ecc.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>Si realizzi uno script che, eseguito in background, <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">consideri periodicamente i processi<o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">originati da un eseguibile il cui nome Ë presente nel file suddetto</span>.<o:p></o:p></b></div>
<div class="MsoNormal">
<b>Per tali eseguibili si <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">verifichi che il digest md5 sia uguale a quello indicato nel file</span>.<o:p></o:p></b></div>
<div class="MsoNormal">
<b>In caso contrario, lo script riporti i dati rilevanti in un file di log e, in <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">presenza<o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">di un'opzione -d sulla linea di comando, interrompa i processi per cui Ë stata<o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">rilevata la differenza</span>.<o:p></o:p></b></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
while :<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
sleep 5<o:p></o:p></div>
<div class="MsoNormal">
conto=$(wc -l elenco.txt | awk '{print $1}')<o:p></o:p></div>
<div class="MsoNormal">
echo "$conto"<o:p></o:p></div>
<div class="MsoNormal">
i=1<o:p></o:p></div>
<div class="MsoNormal">
while [ $i -le $conto ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
processo=$(awk '{print $1}' elenco.txt | head -$i | tail -1)<o:p></o:p></div>
<div class="MsoNormal">
codice=$(<span style="background-color: red; background-position: initial initial; background-repeat: initial initial;">ps aux | grep $processo | grep ?? | awk '{print $11}' | md5</span>)<o:p></o:p></div>
<div class="MsoNormal">
codiceoriginale=$(awk '{print $3}' elenco.txt | head -$i | tail -1)<o:p></o:p></div>
<div class="MsoNormal">
if [ "$codice" == "$codiceoriginale" ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
echo "Digest md5 del processo $processo uguale!" <o:p></o:p></div>
<div class="MsoNormal">
else<o:p></o:p></div>
<div class="MsoNormal">
if [ "$codice" == "d41d8cd98f00b204e9800998ecf8427e" ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
echo "Processo già killato!"<o:p></o:p></div>
<div class="MsoNormal">
else<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;">diff -a $codice $codiceoriginale</span><o:p></o:p></div>
<div class="MsoNormal">
echo "Il processo $processo con digest md5 originale $codiceoriginale cambiato in $codice" >> log.txt<o:p></o:p></div>
<div class="MsoNormal">
pid=$(<span style="background-color: red; background-position: initial initial; background-repeat: initial initial;">ps aux | grep $processo | awk '{print $2}'</span>)<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: red; background-position: initial initial; background-repeat: initial initial;">kill $pid</span><o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
let i++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<b>48 Scrivere uno script che <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">richieda una password all'utente e che possa verificarne l'esattezza solo tramite l'inserimento di una chiavetta USB ("pendrive") nel computer</span>.<o:p></o:p></b></div>
<div class="MsoNormal">
<b>La chiavetta non deve contenere in alcun modo la password leggibile in chiaro.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
while :<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
echo "Inserire la password:"<o:p></o:p></div>
<div class="MsoNormal">
read password<o:p></o:p></div>
<div class="MsoNormal">
passmd=$(<span style="background-color: magenta; background-position: initial initial; background-repeat: initial initial;">md5 -s $password | awk '{print $4}'</span>)<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;">nome=$(ls -l /Volumes | grep staff | awk '{print $9}')</span><o:p></o:p></div>
<div class="MsoNormal">
percorso<span style="background-color: red; background-position: initial initial; background-repeat: initial initial;">=/Volumes/$nome</span><o:p></o:p></div>
<div class="MsoNormal">
cd $percorso<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;">password=$(cat password.txt | head -1)</span><o:p></o:p></div>
<div class="MsoNormal">
if [ "$passmd" == "$password" ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
echo "La password inserita è corretta!"<o:p></o:p></div>
<div class="MsoNormal">
break<o:p></o:p></div>
<div class="MsoNormal">
else<o:p></o:p></div>
<div class="MsoNormal">
echo "Password sbagliata!"<o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
done <o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>48 Scrivere uno script che calcoli il <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">totale della memoria fisica utilizzata dai processi in esecuzione nel sistema all'istante del lancio e ne valuti il valore percentuale rispetto alla quantit‡ di RAM installata nel sistema</span>.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: red; background-position: initial initial; background-repeat: initial initial;">ps -eo %mem | sed '1d' > elenco.txt</span><o:p></o:p></div>
<div class="MsoNormal">
cont=$(awk '{ SUM += $1} END { print SUM }' elenco.txt)<o:p></o:p></div>
<div class="MsoNormal">
echo "La percentuale di memoria totale usata è $cont!"<o:p></o:p></div>
<div class="MsoNormal">
echo "ATTENDERE....."<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: red; background-position: initial initial; background-repeat: initial initial;">system_profiler | grep -A 9 "BANK [0-9]/DIMM[0-9]" | grep Size > ram.txt</span><o:p></o:p></div>
<div class="MsoNormal">
a=$(<span style="background-color: red; background-position: initial initial; background-repeat: initial initial;">system_profiler | grep -A 9 "BANK [0-9]/DIMM[0-9]" | grep Size | wc -l</span>)<o:p></o:p></div>
<div class="MsoNormal">
i=1<o:p></o:p></div>
<div class="MsoNormal">
ramtot=0<o:p></o:p></div>
<div class="MsoNormal">
while [ $i -le $a ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
ram=$(head -$i ram.txt | tail -1 | awk '{print $2}')<o:p></o:p></div>
<div class="MsoNormal">
ramtot=$(($ramtot+$ram))<o:p></o:p></div>
<div class="MsoNormal">
let i++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
ramtk=$(($ramtot*1024*1024))<o:p></o:p></div>
<div class="MsoNormal">
echo "La ram totale in kilobyte è $ramtk!"<o:p></o:p></div>
<div class="MsoNormal">
echo "I kilobyte di ram usata sono:"<o:p></o:p></div>
<div class="MsoNormal">
echo 'scale=1; '$ramtk' * '$cont' / 100' | bc<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>49 Un minorenne trascorre troppo tempo giocando con due computer games. Siamo vicini alla fine dell'anno scolastico e volete in questo periodo limitare questo comportamento facendo in modo che, a tre minuti dall'avvio di ciascuno di tali programmi, la loro esecuzione sia interrotta senza cheil ragazzo si renda conto del motivo.<o:p></o:p></b></div>
<div class="MsoNormal">
<b>Predisporre uno script (che qualcun altro inserir‡ tra i login items) che svolga la funzione richiesta.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>[Suggerimento: a scopo di test, immaginare che i due giochi siano due qualsiasi altri programmi<o:p></o:p></b></div>
<div class="MsoNormal">
<b>presenti sul computer sul quale si prepara lo script]<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
while :<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
pid1=$(<span style="background-color: red; background-position: initial initial; background-repeat: initial initial;">ps aux | grep Contacts | grep Applications | awk '{print $2}'</span>)<o:p></o:p></div>
<div class="MsoNormal">
pid2=$(<span style="background-color: red; background-position: initial initial; background-repeat: initial initial;">ps aux | grep Notes | grep Applications | awk '{print $2}'</span>)<o:p></o:p></div>
<div class="MsoNormal">
if [ ! -z $pid1 ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
i=0<o:p></o:p></div>
<div class="MsoNormal">
while [ $i -le 180 ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
sleep 1<o:p></o:p></div>
<div class="MsoNormal">
if [ $i -eq 180 ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: red; background-position: initial initial; background-repeat: initial initial;">kill $pid1</span><o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
let i++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
if [ ! -z $pid2 ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
k=0<o:p></o:p></div>
<div class="MsoNormal">
while [ $k -le 180 ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
sleep 1<o:p></o:p></div>
<div class="MsoNormal">
if [ $k -eq 180 ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: red; background-position: initial initial; background-repeat: initial initial;">kill $pid2</span><o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
let k++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>50 Senza utilizzare il comando diff, si scriva uno script bash che si <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">comporti come il comando "diff -r"</span> quando gli argomenti forniti siano due directory.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="background-color: lime;">find $percorso2 -type f > file2.txt<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: lime;">a2=$(wc -l file2.txt | awk '{print $1}')</span><o:p></o:p></div>
<div class="MsoNormal">
i1=1<o:p></o:p></div>
<div class="MsoNormal">
while [ $i1 -le $a1 ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;"> </span><span style="background-color: lime;">file1=$(head -$i1 file1.txt | tail -1)<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: lime;"> st1=$(echo ${file1##.*/})<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: lime;"> diversi=$(grep "$st1" file2.txt)</span><o:p></o:p></div>
<div class="MsoNormal">
if [ -z $diversi ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
echo "***Il file $file1 non esiste nella $cartella2!***"<o:p></o:p></div>
<div class="MsoNormal">
cat $file1<o:p></o:p></div>
<div class="MsoNormal">
else<o:p></o:p></div>
<div class="MsoNormal">
echo "***Il file $file1 esiste nella $cartella2!***"<o:p></o:p></div>
<div class="MsoNormal">
cfile1=$(cat $file1 | wc -l)<o:p></o:p></div>
<div class="MsoNormal">
cont1=1<o:p></o:p></div>
<div class="MsoNormal">
while [ $cont1 -le $cfile1 ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
riga1=$(head -$cont1 $percorso1/$st1| tail -1)<o:p></o:p></div>
<div class="MsoNormal">
riga2=$(head -$cont1 $percorso2/$st1| tail -1)<o:p></o:p></div>
<div class="MsoNormal">
if [ "$riga1" != "$riga2" ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
echo "Differenza alla riga $cont1 per i file $file1 nelle due cartelle!"<o:p></o:p></div>
<div class="MsoNormal">
echo ">$riga1"<o:p></o:p></div>
<div class="MsoNormal">
echo "<$riga2"<o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
let cont1++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
let i1++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
#<o:p></o:p></div>
<div class="MsoNormal">
#<o:p></o:p></div>
<div class="MsoNormal">
#<o:p></o:p></div>
<div class="MsoNormal">
i2=1<o:p></o:p></div>
<div class="MsoNormal">
while [ $i2 -le $a2 ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;"> </span><span style="background-color: lime;">file2=$(head -$i2 file2.txt | tail -1)<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: lime;"> st2=$(echo ${file2##.*/})<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: lime;"> diversi=$(grep "$st2" file1.txt)</span><o:p></o:p></div>
<div class="MsoNormal">
if [ -z $diversi ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
echo "***Il file $file2 non esiste nella $cartella1!***"<o:p></o:p></div>
<div class="MsoNormal">
cat $file2<o:p></o:p></div>
<div class="MsoNormal">
else<o:p></o:p></div>
<div class="MsoNormal">
echo "***Il file $file2 esiste nella $cartella1!***"<o:p></o:p></div>
<div class="MsoNormal">
cfile2=$(cat $file2 | wc -l)<o:p></o:p></div>
<div class="MsoNormal">
cont2=1<o:p></o:p></div>
<div class="MsoNormal">
while [ $cont2 -le $cfile2 ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
riga1=$(head -$cont2 $percorso2/$st2| tail -1)<o:p></o:p></div>
<div class="MsoNormal">
riga2=$(head -$cont2 $percorso1/$st2| tail -1)<o:p></o:p></div>
<div class="MsoNormal">
if [ "$riga1" != "$riga2" ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
echo "Differenza alla riga $cont2 per i file $file2 nelle due cartelle!"<o:p></o:p></div>
<div class="MsoNormal">
echo ">$riga1"<o:p></o:p></div>
<div class="MsoNormal">
echo "<$riga2"<o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
let cont2++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
let i2++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
#<o:p></o:p></div>
<div class="MsoNormal">
#<o:p></o:p></div>
<div class="MsoNormal">
#<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
find $percorso1 -type d > cartella1.txt<o:p></o:p></div>
<div class="MsoNormal">
b1=$(wc -l cartella1.txt | awk '{print $1}')<o:p></o:p></div>
<div class="MsoNormal">
find $percorso2 -type d > cartella2.txt<o:p></o:p></div>
<div class="MsoNormal">
b2=$(wc -l cartella2.txt | awk '{print $1}')<o:p></o:p></div>
<div class="MsoNormal">
k1=1<o:p></o:p></div>
<div class="MsoNormal">
while [ $k1 -le $b1 ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
cart1=$(head -$k1 cartella1.txt | tail -1)<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;"> </span><span style="background-color: lime;">sc1=$(echo ${cart1##.*/})<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: lime;"> cdiverse=$(grep "$sc1" cartella2.txt)</span><o:p></o:p></div>
<div class="MsoNormal">
if [ -z $cdiverse ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
echo "***La cartella $cart1 non esiste nella $cartella2!***"<o:p></o:p></div>
<div class="MsoNormal">
else<o:p></o:p></div>
<div class="MsoNormal">
echo "***La cartella $cart1 esiste nella $cartella2!***"<o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
let k1++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
#<o:p></o:p></div>
<div class="MsoNormal">
#<o:p></o:p></div>
<div class="MsoNormal">
#<o:p></o:p></div>
<div class="MsoNormal">
find $percorso1 -type d > cartella1.txt<o:p></o:p></div>
<div class="MsoNormal">
b1=$(wc -l cartella1.txt | awk '{print $1}')<o:p></o:p></div>
<div class="MsoNormal">
find $percorso2 -type d > cartella2.txt<o:p></o:p></div>
<div class="MsoNormal">
b2=$(wc -l cartella2.txt | awk '{print $1}')<o:p></o:p></div>
<div class="MsoNormal">
k2=1<o:p></o:p></div>
<div class="MsoNormal">
while [ $k2 -le $b2 ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
cart2=$(head -$k2 cartella2.txt | tail -1)<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;">sc2=$(echo ${cart2##.*/})<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: lime;"> cdiverse=$(grep "$sc2" cartella1.txt)</span><o:p></o:p></div>
<div class="MsoNormal">
if [ -z $cdiverse ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
echo "***La cartella $cart2 non esiste nella $cartella1!***"<o:p></o:p></div>
<div class="MsoNormal">
else<o:p></o:p></div>
<div class="MsoNormal">
echo "***La cartella $cart2 esiste nella $cartella1!***"<o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
let k2++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>51 <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">Creare uno script e un soft link ad esso</span>. Fare in modo che a seconda del nome con cui lo (stesso) script viene invocato svolga operazioni differenti.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
echo "Invocare lo script:"<o:p></o:p></div>
<div class="MsoNormal">
read nome<o:p></o:p></div>
<div class="MsoNormal">
while [ "$nome" != "softlink" ] || [ "$nome" != "esercizio1.sh" ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
if [ "$nome" == "softlink" ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
echo "Softlink"<o:p></o:p></div>
<div class="MsoNormal">
break<o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
if [ "$nome" == "esercizio1.sh" ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
echo "Script"<o:p></o:p></div>
<div class="MsoNormal">
break<o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
echo "Nome errato invocare nuovamente lo script:"<o:p></o:p></div>
<div class="MsoNormal">
read nome<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>51 <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">Generare in sequenza dei numeri casuali e fermarsi quando esiste un file il cui numero di inodesia uguale all'ultimo numero generato</span>.<o:p></o:p></b></div>
<div class="MsoNormal">
<b>Di tale file si stampino tutti i nomi assunti e le directory in cui Ë contenuto.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
while :<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;"> </span><span style="background-color: lime;">a1=$((RANDOM%10))<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: lime;"> a2=$((RANDOM%10))<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: lime;"> a3=$((RANDOM%10))<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: lime;"> a4=$((RANDOM%10))<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: lime;"> a5=$((RANDOM%10))<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: lime;"> a6=$((RANDOM%10))</span><o:p></o:p></div>
<div class="MsoNormal">
inode=$a1$a2$a3$a4$a5$a6<o:p></o:p></div>
<div class="MsoNormal">
cercato=$(<span style="background-color: lime;">find . -inum $inode</span>)<o:p></o:p></div>
<div class="MsoNormal">
if [ ! -z $cercato ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
nomefile=$(<span style="background-color: lime;">echo ${cercato##.*/}</span>)<o:p></o:p></div>
<div class="MsoNormal">
echo "Il nome del file che ha numero di inode $inode è $nomefile!"<o:p></o:p></div>
<div class="MsoNormal">
echo "Il percorso del file è $cercato!"<o:p></o:p></div>
<div class="MsoNormal">
break<o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>52 Creare una cartella nella propria home su hplinux2.unisalento.it e una cartella sulla propria home Mac OS X e scrivere uno script che ogni ora <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">sincronizzi le due cartelle usando il comando rsync</span>.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
while :<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;"> </span><span style="background-color: lime;">rsync -a --delete /Users/danilo/Desktop/SISTEMI-OPERATIVI/ESERCIZI\ SVOLTI/esame52/A /Users/danilo/Desktop/SISTEMI-OPERATIVI/ESERCIZI\ SVOLTI/esame52/B</span><o:p></o:p></div>
<div class="MsoNormal">
sleep 3600<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>53 Usando il <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">comando dd creare un file di contenuto casuale e aggiungere ad esso un blocco alla volta fermandosi quando in esso compare la stringa ASCII "ab"</span>.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
while :<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;">dd if=/dev/random count=1 >> file.txt<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: lime;"> stringa=$(grep -a "ab" file.txt)</span><o:p></o:p></div>
<div class="MsoNormal">
if [ ! -z "$stringa" ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
echo "Trovato!"<o:p></o:p></div>
<div class="MsoNormal">
break<o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>54 Inserire nello script denominato nff.sh, contenuto nella stessa directory del presente testo, le istruzioni necessarie a far <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">disegnare allo standard output un'indicazione grafica</span> (per esempio, una barra di completamento) che, istante per istante, permetta di capire <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">quale percentuale del compito complessivo sia stata gi‡ svolta</span>.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
function showBar {<o:p></o:p></div>
<div class="MsoNormal">
percDone=$(echo 'scale=2;'$1/$2*100 | bc)<o:p></o:p></div>
<div class="MsoNormal">
barLen=$(<span style="background-color: lime;">echo ${percDone%'.00'})</span><o:p></o:p></div>
<div class="MsoNormal">
bar=''<o:p></o:p></div>
<div class="MsoNormal">
fills=''<o:p></o:p></div>
<div class="MsoNormal">
for (( b=0; b<$barLen; b++ ))<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
bar=$bar"="<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
blankSpaces=$<span style="background-color: lime;">(echo $((100-$barLen)))</span><o:p></o:p></div>
<div class="MsoNormal">
for (( f=0; f<$blankSpaces; f++ ))<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
fills=$fills"_"<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
clear<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;"> echo '['$bar'>'$fills'] - '$barLen'%'</span><o:p></o:p></div>
<div class="MsoNormal">
}<o:p></o:p></div>
<div class="MsoNormal">
i=0<o:p></o:p></div>
<div class="MsoNormal">
while [ $i -le 20 ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
echo "$i"<o:p></o:p></div>
<div class="MsoNormal">
let i++<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;">showBar $i 21</span><o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>55 Scrivere uno script che:<o:p></o:p></b></div>
<div class="MsoNormal">
<b>1) individui quali siano i <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">processi lanciati all'avvio del sistema</span>;<o:p></o:p></b></div>
<div class="MsoNormal">
<b>2) li <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">stampi nell'ordine in cui sono stati lanciati</span>;<o:p></o:p></b></div>
<div class="MsoNormal">
<b>3) li stampi <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">ordinandoli secondo il consumo di CPU</span> che hanno effettuato.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
oracompleta=$(<span style="background-color: red; background-position: initial initial; background-repeat: initial initial;">ps aux | sed '1d' | sort -n -k 2 | head -1 | awk '{print $9}'</span>)<o:p></o:p></div>
<div class="MsoNormal">
ora=$(echo ${oracompleta:0:1})<o:p></o:p></div>
<div class="MsoNormal">
fuso=$(echo ${oracompleta:4})<o:p></o:p></div>
<div class="MsoNormal">
minuti=$(echo ${oracompleta:2:2})<o:p></o:p></div>
<div class="MsoNormal">
let "minuti1 = $minuti + 1"<o:p></o:p></div>
<div class="MsoNormal">
let "minuti2 = $minuti1 + 1"<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: red; background-position: initial initial; background-repeat: initial initial;">ps aux | sed '1d' | sort -n -k 2 | grep "$ora:$minuti$fuso" | grep "??" > elenco.txt<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: red; background-position: initial initial; background-repeat: initial initial;">ps aux | sed '1d' | sort -n -k 2 | grep "$ora:$minuti1$fuso" | grep "??" >> elenco.txt<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: red; background-position: initial initial; background-repeat: initial initial;">ps aux | sed '1d' | sort -n -k 2 | grep "$ora:$minuti2$fuso" | grep "??" >> elenco.txt</span><o:p></o:p></div>
<div class="MsoNormal">
echo "I processi lanciati all'avvio del sistema sono:"<o:p></o:p></div>
<div class="MsoNormal">
cat elenco.txt<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: red; background-position: initial initial; background-repeat: initial initial;">ps aux | sed '1d' | grep "$ora:$minuti$fuso" | grep "??" > cpu.txt<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: red; background-position: initial initial; background-repeat: initial initial;">ps aux | sed '1d' | grep "$ora:$minuti1$fuso" | grep "??" >> cpu.txt<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: red; background-position: initial initial; background-repeat: initial initial;">ps aux | sed '1d' | grep "$ora:$minuti2$fuso" | grep "??" >> cpu.txt</span><o:p></o:p></div>
<div class="MsoNormal">
echo "I processi ordinati secondo la CPU sono:"<o:p></o:p></div>
<div class="MsoNormal">
sort -n -k 3 | cat cpu.txt<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>56 Creare uno script che, <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">utilizzando l'header HTTP Last-Modified</span>, <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">tenga sotto continua osservazione un sito web</span> specificato sulla linea di comando, <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">e lo apra in un browser web</span> quando risulta modificato rispetto ad una rilevazione di riferimento.<o:p></o:p></b></div>
<div class="MsoNormal">
<b>(Suggerimento: usare curl - </b><a href="http://curl.haxx.se/docs/manual.html"><b>http://curl.haxx.se/docs/manual.html</b></a><b>)<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Esercizio già dato in precedenza.<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>56 Di una <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">password si possiede il digest 0b74bb1d4ec4e8714b6b60685302d21eea3e9afd</span> .<o:p></o:p></b></div>
<div class="MsoNormal">
<b>Si sospetta anche che tale password possa essere una parola della lingua inglese.<o:p></o:p></b></div>
<div class="MsoNormal">
<b>Si scriva uno script che, usando un <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">metodo brute force ed il dizionario /usr/share/dict/words, scopra<o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">il metodo scelto per il digest e la password</span>. [Suggerimento: usare il comando openssl dgst]<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;">cat /usr/share/dict/words > elenco.txt</span><o:p></o:p></div>
<div class="MsoNormal">
a=$(wc -l elenco.txt | awk '{print $1}')<o:p></o:p></div>
<div class="MsoNormal">
i=1<o:p></o:p></div>
<div class="MsoNormal">
while [ $i -le $a ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
parola=$(head -$i elenco.txt | tail -1)<o:p></o:p></div>
<div class="MsoNormal">
head -$i elenco.txt | tail -1 > parola.txt<o:p></o:p></div>
<div class="MsoNormal">
codice=$(<span style="background-color: magenta; background-position: initial initial; background-repeat: initial initial;">openssl dgst -md5 parola.txt | awk '{print $2}'</span>)<o:p></o:p></div>
<div class="MsoNormal">
if [ "$codice" == "0b74bb1d4ec4e8714b6b60685302d21eea3e9afd" ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
echo "La password è $parola!"<o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
let i++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
<b> <o:p></o:p></b></div>
<div class="MsoNormal">
<b>57 Creare uno script che, con un periodo dato come parametro, verifichi se siano in esecuzione<o:p></o:p></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">processi per i quali l'effective ID sia diverso dal real ID</span>.<o:p></o:p></b></div>
<div class="MsoNormal">
<b>[Suggerimento: provare lo script utilizzando il programma passwd]<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
while :<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: red; background-position: initial initial; background-repeat: initial initial;">ps -e -opid,ruid,uid,comm > elenco.txt</span><o:p></o:p></div>
<div class="MsoNormal">
cont=$(wc -l elenco.txt | awk '{print $1}')<o:p></o:p></div>
<div class="MsoNormal">
i=1<o:p></o:p></div>
<div class="MsoNormal">
while [ $i -le $cont ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
ruid=$(head -$i elenco.txt | tail -1 | awk '{print $2}')<o:p></o:p></div>
<div class="MsoNormal">
euid=$(head -$i elenco.txt | tail -1 | awk '{print $3}')<o:p></o:p></div>
<div class="MsoNormal">
processo=$(head -$i elenco.txt | tail -1 | awk '{print $4}')<o:p></o:p></div>
<div class="MsoNormal">
if [ $ruid != $euid ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
echo "Il realuserid è diverso dall'effectiveid per il processo $processo!"<o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
let i++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
echo "PER USCIRE DALLO SCRIPT PREMERE CTRL + C!"<o:p></o:p></div>
<div class="MsoNormal">
sleep $1<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>57 Un <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">sistema di backup</span> dei dati contenuti in una directory agisce nel seguente modo:<o:p></o:p></b></div>
<div class="MsoNormal">
<b>1) <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">al primo backup crea una copia della directory originale</span>.<o:p></o:p></b></div>
<div class="MsoNormal">
<b>2) <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">in ciascuno dei backup che compie periodicamente in seguito, crea una ulteriore directory copia della directory originale, nella quale</span>:<o:p></o:p></b></div>
<div class="MsoNormal">
<b>a) <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">dei file non modificati, per contenuto e per posizione, rispetto alla prima copia, fa un hard link alla versione del primo backup</span>;<o:p></o:p></b></div>
<div class="MsoNormal">
<b>b) <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">degli altri fa una copia nella stessa posizione che hanno nella directory originale</span>.<o:p></o:p></b></div>
<div class="MsoNormal">
<b>Scrivere uno script che, prese come argomento due versioni del backup, evidenzi quali sono i file effettivamente copiati nella pi˘ recente (invece che semplicemente hard linked).<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;">find ./$1 -type f -exec ls -li {} \; > elenco1.txt<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: lime;">find ./$2 -type f -exec ls -li {} \; > elenco2.txt</span><o:p></o:p></div>
<div class="MsoNormal">
conta1=$(wc -l elenco1.txt | awk '{print $1}')<o:p></o:p></div>
<div class="MsoNormal">
conta2=$(wc -l elenco2.txt | awk '{print $1}')<o:p></o:p></div>
<div class="MsoNormal">
i=1<o:p></o:p></div>
<div class="MsoNormal">
while [ $i -le $conta2 ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
percorso=$(head -$i elenco2.txt | tail -1 | awk '{print $10}')<o:p></o:p></div>
<div class="MsoNormal">
inode=$(head -$i elenco2.txt | tail -1 | awk '{print $1}')<o:p></o:p></div>
<div class="MsoNormal">
inodecercato=<span style="background-color: lime;">$(grep $inode elenco1.txt)</span><o:p></o:p></div>
<div class="MsoNormal">
if [ -z "$inodecercato" ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
echo "Il file $percorso è un file copiato!"<o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
let i++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>58 Creare uno script che <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">individui tutte le librerie dinamiche</span> caricate in memoria dai processi<o:p></o:p></b></div>
<div class="MsoNormal">
<b>in esecuzione nel sistema al momento del suo lancio e, per ciascuna di esse, <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">indichi da quanti<o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">processi sia utilizzata</span>.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
ora=$(<span style="background-color: red; background-position: initial initial; background-repeat: initial initial;">ps aux | sed '1d' | sort -n -r -k 2 | tail -1 | awk '{print $9}'</span>)<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: red; background-position: initial initial; background-repeat: initial initial;">ps aux | grep Library | grep ?? | grep $ora > elenco.txt</span><o:p></o:p></div>
<div class="MsoNormal">
cont=$(wc -l elenco.txt | awk '{print $1}')<o:p></o:p></div>
<div class="MsoNormal">
i=1<o:p></o:p></div>
<div class="MsoNormal">
while [ $i -le $cont ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
processo=$(head -$i elenco.txt | tail -1 | awk '{print $2}')<o:p></o:p></div>
<div class="MsoNormal">
libreria=$(head -$i elenco.txt | tail -1 | awk '{print $11}')<o:p></o:p></div>
<div class="MsoNormal">
stringa=$(<span style="background-color: red; background-position: initial initial; background-repeat: initial initial;">lsof -p $processo</span> )<o:p></o:p></div>
<div class="MsoNormal">
if [ -z "$stringa" ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
echo "Per il processso che utilizza la libreria $libreria i processi utilizzati sono 1!"<o:p></o:p></div>
<div class="MsoNormal">
else<o:p></o:p></div>
<div class="MsoNormal">
a=$(<span style="background-color: red; background-position: initial initial; background-repeat: initial initial;">lsof -p $processo | sed '1d' | wc -l</span>)<o:p></o:p></div>
<div class="MsoNormal">
echo "Per il processo che utilizza la libreria $libreria i processi utilizzati sono $a!"<o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
let i++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>58 Creare uno script che <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">trasformi la codifica di un file di testo da UTF-8 a ISO_8859-1</span><o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: magenta; background-position: initial initial; background-repeat: initial initial;">iconv -f UTF-8 -t ISO_8859-1 testo.txt</span><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>59 Avete montato nel vostro computer un volume esterno (<span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">PenDrive, CD, DVD, HD etc</span>.) e quando date il comando per espellerlo ricevete il messaggio "Impossibile espellere il volume perché utilizzato da un'applicazione".<o:p></o:p></b></div>
<div class="MsoNormal">
<b>Creare uno script che, dopo aver elencato le <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">applicazioni che utilizzano il volume</span>, ne <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">interrompa l'esecuzione</span> dopo avervi chiesto il permesso di farlo.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
usb=<span style="background-color: lime;">$(ls -li /Volumes | sed '1d' | head -1 | awk '{print $10}')</span><o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: red; background-position: initial initial; background-repeat: initial initial;">lsof | grep $usb > elenco.txt</span><o:p></o:p></div>
<div class="MsoNormal">
cont=$(wc -l elenco.txt | awk '{print $1}')<o:p></o:p></div>
<div class="MsoNormal">
echo "Le applicazioni che utilizzano i processi sono le seguenti:"<o:p></o:p></div>
<div class="MsoNormal">
i=1<o:p></o:p></div>
<div class="MsoNormal">
while [ $i -le $cont ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
applicazione=$(head -$i elenco.txt | tail -1 | awk '{print $9}')<o:p></o:p></div>
<div class="MsoNormal">
echo "$applicazione"<o:p></o:p></div>
<div class="MsoNormal">
let i++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
echo "Siete sicuri di voler interrompere i seguenti processi per poter togliere la chiavetta (rispondere SI oppure NO):"<o:p></o:p></div>
<div class="MsoNormal">
read risposta<o:p></o:p></div>
<div class="MsoNormal">
if [ "$risposta" == "SI" ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
k=1<o:p></o:p></div>
<div class="MsoNormal">
while [ $k -le $cont ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
pid=$(head -$k elenco.txt | awk '{print $2}')<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: red; background-position: initial initial; background-repeat: initial initial;">kill -9 $pid</span><o:p></o:p></div>
<div class="MsoNormal">
let k++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
echo "Ora potete togliere la chiavetta!"<o:p></o:p></div>
<div class="MsoNormal">
else<o:p></o:p></div>
<div class="MsoNormal">
echo "Sarà impossibile togliere la chiavetta chiudere prima i processi che la utilizzano!"<o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>59 Progettare un metodo che permetta ad un(a) vostro/a amico/a con il quale condividete una password segreta e che riceva un vostro file in chiaro, di essere certo che il file è effettivamente stato scritto da voi e non è stato modificato da alcuno. Implementare il metodo in uno script che eventualmente passerete al(la) vostro/a amico/a perché lo possa eseguire al momento opportuno.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;">titolol=$(find . -iname filecriptato.zip)<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: lime;">titoloc=$(echo ${titolol##.*/})</span><o:p></o:p></div>
<div class="MsoNormal">
if [ "$titoloc" != "filecriptato.zip" ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
echo "Il file è stato manomesso!"<o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
codicefile=794d732c529bfeb15a8ecb7858f1d551<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: magenta; background-position: initial initial; background-repeat: initial initial;">unzip filecriptato.zip</span><o:p></o:p></div>
<div class="MsoNormal">
codiceconferma=$(cat filecrittografato.txt | md5)<o:p></o:p></div>
<div class="MsoNormal">
if [ $codicefile == $codiceconferma ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
echo "Il file non è stato manomesso!"<o:p></o:p></div>
<div class="MsoNormal">
echo "Adesso lo puoi visualizzare!"<o:p></o:p></div>
<div class="MsoNormal">
else<o:p></o:p></div>
<div class="MsoNormal">
echo "Il file è stato manomesso!"<o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>60 Dato un processo A (scelto a caso tra quelli in esecuzione nella macchina sulla quale si lavora), creare uno script che <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">al ricevimento di un certo segnale effettui una misura<o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">dell'occupazione di memoria fisica e di memoria virtuale</span> da parte del processo A e<o:p></o:p></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">al ricevimento di un altro segnale effettui una misura della percentuale di CPU utilizzata</span><o:p></o:p></b></div>
<div class="MsoNormal">
<b>dal processo A <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">e di quella totale utilizzata da tutti i processi del sistema</span>.<o:p></o:p></b></div>
<div class="MsoNormal">
<b>Le misure devono essere raccolte in due separati file di log (uno per la memoria e l'altro per la CPU) insieme con l'indicazione dell'istante relativo a ciascuna misura.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
function primo {<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: red; background-position: initial initial; background-repeat: initial initial;">ps aux | sed '1d' | sort -k 1 | grep $pid | grep ?? > elenco0.txt</span><o:p></o:p></div>
<div class="MsoNormal">
tempo=$(date)<o:p></o:p></div>
<div class="MsoNormal">
echo "La data di rilevamento è $tempo!" >> log.txt<o:p></o:p></div>
<div class="MsoNormal">
memoriav=$(head -1 elenco0.txt | awk '{print $5}')<o:p></o:p></div>
<div class="MsoNormal">
echo "La memoria virtuale del processo è $memoriav!" >> log.txt<o:p></o:p></div>
<div class="MsoNormal">
memoriaf=$(head -1 elenco0.txt | awk '{print $6}')<o:p></o:p></div>
<div class="MsoNormal">
echo "La memoria virtuale del processo è $memoriaf!" >> log.txt<o:p></o:p></div>
<div class="MsoNormal">
echo -n >> log.txt<o:p></o:p></div>
<div class="MsoNormal">
}<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
function secondo {<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="background-color: red; background-position: initial initial; background-repeat: initial initial;">ps -eo pid,vsize,rss,%cpu,tt | sed '1d' | sort -k 1 | grep $pid | grep ?? > elenco1.txt</span><o:p></o:p></div>
<div class="MsoNormal">
tempo1=$(date)<o:p></o:p></div>
<div class="MsoNormal">
echo "La data di rilevamento è $tempo1!" >> log1.txt<o:p></o:p></div>
<div class="MsoNormal">
cpup=$(head -1 elenco1.txt | awk '{print $4}')<o:p></o:p></div>
<div class="MsoNormal">
echo "La CPU del processo è $cpup!" >> log1.txt<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: red; background-position: initial initial; background-repeat: initial initial;">ps aux | sed '1d' > elenco2.txt</span><o:p></o:p></div>
<div class="MsoNormal">
echo "La percentuale totale di CPU è:" >> log1.txt<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;"> </span><span style="background-color: lime;">awk '{ SUM += $3} END { print SUM }' elenco2.txt >> log1.txt</span><o:p></o:p></div>
<div class="MsoNormal">
}<o:p></o:p></div>
<div class="MsoNormal">
echo "Inserire il pid e poi inviare il segnale CTRL+Z per ottenere mem virtuale e fisica e CTRL+\ per ottenere cpu processo e cpu totale:"<o:p></o:p></div>
<div class="MsoNormal">
while :<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
read pid<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: magenta; background-position: initial initial; background-repeat: initial initial;">trap primo SIGTSTP<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: magenta; background-position: initial initial; background-repeat: initial initial;"> trap secondo SIGQUIT</span><o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>61 Realizzare uno script che periodicamente, in presenza di un file chiamato con il suo stesso nome ad un certo <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">URL*, lo scarichi e, se lo trova differente da se stesso, cessi la propria esecuzione per passare all'esecuzione del file scaricato</span>.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>Note:<o:p></o:p></b></div>
<div class="MsoNormal">
<b>il tipo di URL può essere scelto a proprio piacimento (file, http, afp etc.) purché funzionante.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: blue; background-position: initial initial; background-repeat: initial initial;">curl -o esercizio1.html http://www.diretta.it</span><o:p></o:p></div>
<div class="MsoNormal">
while :<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: blue; background-position: initial initial; background-repeat: initial initial;">curl -o file.html http://www.diretta.it</span><o:p></o:p></div>
<div class="MsoNormal">
stringa=$(diff esercizio1.html file.html)<o:p></o:p></div>
<div class="MsoNormal">
if [ ! -z "$stringa" ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: red; background-position: initial initial; background-repeat: initial initial;">emacs file.html && exit</span><o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
sleep 3<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<b>62 Il <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">digest md5</span> di un file contenente 2 caratteri è <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">e0aa021e21dddbd6d8cecec71e9cf564</span>.<o:p></o:p></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">Scrivere uno script che stampi il contenuto del file e indicare il tempo macchina<o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">consumato in modalità utente e in modalità sistema</span> eseguendo tale script.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;">./esercizio2.sh</span><o:p></o:p></div>
<div class="MsoNormal">
lista=$(echo {A..z} {0..9})<o:p></o:p></div>
<div class="MsoNormal">
for c1 in $lista<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
for c2 in $lista<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
decr=$(<span style="background-color: lime;">echo -n $c1$c2 </span>| <span style="background-color: magenta; background-position: initial initial; background-repeat: initial initial;">md5 |</span> <span style="background-color: lime;">rev | cut -c 4- | rev</span>)<o:p></o:p></div>
<div class="MsoNormal">
if [ "$decr" == "e0aa021e21dddbd6d8cecec71e9cf" ]<o:p></o:p></div>
<div class="MsoNormal">
then <o:p></o:p></div>
<div class="MsoNormal">
echo "Trovato!"<o:p></o:p></div>
<div class="MsoNormal">
echo "Le lettere sono : $c1$c2"<o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
exit<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
echo "Il tempi richiesti sono:"<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: red; background-position: initial initial; background-repeat: initial initial;">time (./esercizio1.sh | exit)</span><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>63 Scrivere uno script che prenda come argomento il nome di un <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">file e restituisca il<o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">numero di zeri e di uni (cifre binarie) presenti nel file</span>.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
cont=$(wc -l $1 | awk '{print $1}')<o:p></o:p></div>
<div class="MsoNormal">
cont0=0<o:p></o:p></div>
<div class="MsoNormal">
cont1=0<o:p></o:p></div>
<div class="MsoNormal">
i=1<o:p></o:p></div>
<div class="MsoNormal">
while [ $i -le $cont ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
riga=$(head -$i $1 | tail -1)<o:p></o:p></div>
<div class="MsoNormal">
lunghezza<span style="background-color: lime;">=$(echo ${#riga})</span><o:p></o:p></div>
<div class="MsoNormal">
while [ $lunghezza -ge 0 ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
carattere<span style="background-color: lime;">=$(echo ${riga:$lunghezza:1})</span><o:p></o:p></div>
<div class="MsoNormal">
if [ "$carattere" == "1" ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
let cont1++<o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
if [ "$carattere" == "0" ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
let cont0++<o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
let lunghezza--<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
let i++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
echo "Il numero di 1 presenti nel file è $cont1!"<o:p></o:p></div>
<div class="MsoNormal">
echo "Il numero di 0 presenti nel file è $cont0!"<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>63 Scrivere uno script che <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">rilevi la presenza di siti web nella subnet</span> in cui si trova la macchina su cui viene eseguito e <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">avvisi l'utente qualora la home page di uno qualunque di tali siti contenga una parola passata come parametro</span>.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: blue; background-position: initial initial; background-repeat: initial initial;">ifconfig | grep inet | grep -v inet6 | awk '{print $2}' > elenco.txt</span><o:p></o:p></div>
<div class="MsoNormal">
a=$(wc -l elenco.txt | awk '{print $1}')<o:p></o:p></div>
<div class="MsoNormal">
i=1<o:p></o:p></div>
<div class="MsoNormal">
while [ $i -le $a ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
indirizzo=$(head -$i elenco.txt | tail -1)<o:p></o:p></div>
<div class="MsoNormal">
stringa=$(<span style="background-color: blue; background-position: initial initial; background-repeat: initial initial;">ping -c1 $indirizzo | grep -o -i $1</span>)<o:p></o:p></div>
<div class="MsoNormal">
if [ ! -z "$stringa" ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
echo "Ho trovato la parola al seguente indirizzo IP $indirizzo!"<o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
let i++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>64 Scrivere uno script che stampi a terminale un <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">grafico</span> che abbia l'ascissa in verticale (crescente con il numero di riga nella finestra terminale) e l'ordinata in orizzontale (crescente con il numero di colonna nella finestra terminale) <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">e che rappresenti memoria fisica</span> occupata dal processo cheesegue lo script in funzione della dimensione di un array allocato dallo stesso script.<o:p></o:p></b></div>
<div class="MsoNormal">
<b>Determinare in che misura la deallocazione dell'array influisca sull'uso di memoria reale da partedel processo.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
pid=$(<span style="background-color: red; background-position: initial initial; background-repeat: initial initial;">ps aux | sed '1d' | grep esercizio1.sh | grep /bin/bash | tail -1 | awk '{print $2}'</span>)<o:p></o:p></div>
<div class="MsoNormal">
i=0<o:p></o:p></div>
<div class="MsoNormal">
while :<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
sleep 1<o:p></o:p></div>
<div class="MsoNormal">
memoria=$(<span style="background-color: red; background-position: initial initial; background-repeat: initial initial;">ps aux | grep $pid | awk '{print $6}'</span>)<o:p></o:p></div>
<div class="MsoNormal">
array[$i]=$memoria<o:p></o:p></div>
<div class="MsoNormal">
k=0<o:p></o:p></div>
<div class="MsoNormal">
while [ $k -le $memoria ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
if [ $k -eq $memoria ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
echo "x"<o:p></o:p></div>
<div class="MsoNormal">
else<o:p></o:p></div>
<div class="MsoNormal">
echo -n "|"<o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
let k++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
let i++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
#Se dealloco l'array e lo stampo come grafico non cambia nulla!<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>65 Scrivere uno script che effettui un <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">monitoraggio degli accessi ad un certo file</span> e che <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">interrompai processi</span> che tentano di aprirlo se essi non sono stati generati dall'esecuzione di un programma il cui percorso è elencato in un'apposita lista di programmi autorizzati.<o:p></o:p></b></div>
<div class="MsoNormal">
<b>[Suggerimento: per poter testare lo script si scelgano file e programmi tali da non richiedere privilegi particolari. Rimane sottinteso che, per poter funzionare con qualunque set di dati,lo script avrà necessità di essere lanciato con il comando sudo]<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
echo "Premere CTRL+C per uscire!"<o:p></o:p></div>
<div class="MsoNormal">
while :<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: red; background-position: initial initial; background-repeat: initial initial;">lsof | grep $1 > processi.txt</span><o:p></o:p></div>
<div class="MsoNormal">
cont=$(wc -l processi.txt | awk '{print $1}')<o:p></o:p></div>
<div class="MsoNormal">
i=1<o:p></o:p></div>
<div class="MsoNormal">
while [ $i -le $cont ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
programma=$(head -$i processi.txt | tail -1 | awk '{print $1}')<o:p></o:p></div>
<div class="MsoNormal">
pid=$(head -$i processi.txt | tail -1 | awk '{print $2}')<o:p></o:p></div>
<div class="MsoNormal">
stringa=$(grep $programma elenco.txt)<o:p></o:p></div>
<div class="MsoNormal">
if [ -z $stringa ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: red; background-position: initial initial; background-repeat: initial initial;">kill $pid</span><o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
let i++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
sleep 3<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<b>66 <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">Senza utilizzare il comando file</span>, scrivere uno script che prenda come argomento il nome di un file che si sa contenere del testo italiano puro (non formattato) e <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">stampi a terminale il nome della codifica</span> con cui il testo è rappresentato.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash <o:p></o:p></div>
<div class="MsoNormal">
FILE=$1 <o:p></o:p></div>
<div class="MsoNormal">
PATTERN1=UTF-8<o:p></o:p></div>
<div class="MsoNormal">
PATTERN2=UTF-16 <o:p></o:p></div>
<div class="MsoNormal">
for enc in $( iconv -l | sed 's/..$//') <o:p></o:p></div>
<div class="MsoNormal">
do <o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: magenta; background-position: initial initial; background-repeat: initial initial;">iconv -f $enc -t UTF-8 $FILE 2>/dev/null | grep $PATTERN1 && echo $enc <o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: magenta; background-position: initial initial; background-repeat: initial initial;"> iconv -f $enc -t UTF-16 $FILE 2>/dev/null | grep $PATTERN2 && echo $enc</span> <o:p></o:p></div>
<div class="MsoNormal">
done <o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>67 <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">Scrivere due script bash che si alternino all'infinito</span> nell'esecuzione stampando ciascuno una propria stringa a terminale. Fare in modo che la semplice <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">pressione del tasto "s" arresti entrambi</span>.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
echo "Premere s per uscire o altro per continuare!"<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: red; background-position: initial initial; background-repeat: initial initial;">read keypress</span><o:p></o:p></div>
<div class="MsoNormal">
echo "Ciao"<o:p></o:p></div>
<div class="MsoNormal">
if [ "$keypress" == "s" ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
exit<o:p></o:p></div>
<div class="MsoNormal">
else<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;">./esercizio2.sh</span><o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
echo "Premere s per uscire o altro per continuare!"<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: red; background-position: initial initial; background-repeat: initial initial;">read keypress</span><o:p></o:p></div>
<div class="MsoNormal">
echo "a tutti!"<o:p></o:p></div>
<div class="MsoNormal">
if [ "$keypress" == "s" ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
exit<o:p></o:p></div>
<div class="MsoNormal">
else<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;"> </span><span style="background-color: lime;">./esercizio1.sh</span><o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>67 Si vogliono <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">salvare tutti i propri file su una pendrive</span> ma ci si rende presto conto del fatto che non esistono pendrive di dimensioni sufficienti a salvarli tutti. Allora si decide di <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">salvare solo i file più recenti di un certo numero di anni</span>. Scrivere un script bash che aiuti a capire per ciascuna dimensione di pendrive quanti sono gli anni più recenti che questa può contenere.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
somma=0<o:p></o:p></div>
<div class="MsoNormal">
echo "Inserire dimensione pendrive in byte:"<o:p></o:p></div>
<div class="MsoNormal">
read dimensione<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;">ls -lT | sort -k 9 -n | sed '1d' > elenco.txt<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: lime;">a=$(wc -l elenco.txt | awk '{print $1}')</span><o:p></o:p></div>
<div class="MsoNormal">
i=1<o:p></o:p></div>
<div class="MsoNormal">
while [ $i -le $a ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
partenza=$(head -1 elenco.txt | awk '{print $9}')<o:p></o:p></div>
<div class="MsoNormal">
grandezza=$(head -$i elenco.txt | tail -1 | awk '{print $5}')<o:p></o:p></div>
<div class="MsoNormal">
anno=$(head -$i elenco.txt | tail -1 | awk '{print $9}')<o:p></o:p></div>
<div class="MsoNormal">
somma=$(<span style="background-color: lime;">echo "$[$grandezza+$somma]")</span><o:p></o:p></div>
<div class="MsoNormal">
if [ "$dimensione" -lt "$somma" ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
let anno--<o:p></o:p></div>
<div class="MsoNormal">
if [ "$anno" -lt "$partenza" ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
echo "Comprare una chiavetta più grande!"<o:p></o:p></div>
<div class="MsoNormal">
exit<o:p></o:p></div>
<div class="MsoNormal">
else<o:p></o:p></div>
<div class="MsoNormal">
echo "Puoi copiare i file fino all'anno $anno!"<o:p></o:p></div>
<div class="MsoNormal">
exit<o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
let i++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>68 Scrivere uno script bash che, preso come primo argomento un <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">file di tipo immagine (es. JPEG, PNG, etc.), lo modifichi facendolo apparire al comando "file" un eseguibile (di tipo Mach-O su Mac OS X e di tipo ELF su Linux)</span>, curando anche che le informazioni necessarie a visualizzare l'immagine siano sempre contenute nel file risultante e facilmente estraibili da esso.<o:p></o:p></b></div>
<div class="MsoNormal">
<b>Il nome del file risultante dalla modifica sia passato allo script come secondo argomento.<o:p></o:p></b></div>
<div class="MsoNormal">
<b>Provare il funzionamento dello script con un'immagine reale.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
percorso=$(pwd)<o:p></o:p></div>
<div class="MsoNormal">
if [ "$percorso" == "/Users/danilo/Desktop" ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;">cp /Users/danilo/Desktop/lago-alpino.jpg /Users/danilo/Desktop/$1.bundle</span><o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: magenta; background-position: initial initial; background-repeat: initial initial;">file --mime $1.bundle</span><o:p></o:p></div>
<div class="MsoNormal">
else<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;">cp /Users/danilo/Desktop/lago-alpino.jpg /Users/danilo/Desktop/$1.elf</span><o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: magenta; background-position: initial initial; background-repeat: initial initial;">file --mime $1.bundle</span><o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>69 Scrivere uno script bash che, preso come primo argomento il nome di un altro script A esistente ed<o:p></o:p></b></div>
<div class="MsoNormal">
<b>eseguibile, dia indicazione ad <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">intervalli di un secondo</span> delle seguenti quantità istantanee:<o:p></o:p></b></div>
<div class="MsoNormal">
<b>1) <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">numero di processi in esecuzione all'istante della misura generati dal lancio di A</span>;<o:p></o:p></b></div>
<div class="MsoNormal">
<b>2) <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">somma delle quantità di memoria reale utilizzate all'istante dai processi in esecuzione generati dal lancio di A</span>;<o:p></o:p></b></div>
<div class="MsoNormal">
<b>[per i soli studenti che sostengono l'esame per il corso da 9 CFU:]<o:p></o:p></b></div>
<div class="MsoNormal">
<b>3) numero totale dei file aperti dai processi in esecuzione all'istante della misura generati dal lancio di A.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>Per il test della propria implementazione utilizzare lo script DoesNothing.sh, contenuto nella stessa directory del presente testo.<o:p></o:p></b></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
while :<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
sleep 1<o:p></o:p></div>
<div class="MsoNormal">
numprocessi=$(<span style="background-color: red; background-position: initial initial; background-repeat: initial initial;">ps -ef | grep -v 'grep' | grep -v esercizio1.sh | grep $1 | awk '{print $2}' | wc -l | awk '{print $1}'</span>)<o:p></o:p></div>
<div class="MsoNormal">
echo "Il numero di processi generati da $1 è $numprocessi!"<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: red; background-position: initial initial; background-repeat: initial initial;">ps aux | grep -v 'grep' | grep -v esercizio1.sh | grep $1 | awk '{print $4}' > memoriareale.txt</span><o:p></o:p></div>
<div class="MsoNormal">
cat memoriareale.txt<o:p></o:p></div>
<div class="MsoNormal">
exec 0<memoriareale.txt<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;"> </span><span style="background-color: lime;">awk '{ somma += $1 } ; END { print "totale della colonna:", somma }'</span><o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<b>70 Scrivere uno script bash che <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">a partire da un indirizzo di un sito web, esplori automaticamente il web per determinare una statistica dei programmi usati per allestire i server web dei siti esplorati (es. Apache, IIS, ecc)</span>.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
if [ $# -lt 1 ]; then<o:p></o:p></div>
<div class="MsoNormal">
echo "Usare ./ServersStats.sh <sito web> [<iterazioni>]";<o:p></o:p></div>
<div class="MsoNormal">
echo "sito web = l'indirizzo web di partenza";<o:p></o:p></div>
<div class="MsoNormal">
echo "iterazioni = livello di ricorsioni (default=5)";<o:p></o:p></div>
<div class="MsoNormal">
exit;<o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
iterations=$2<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
SERVERSFILE=$(<span style="background-color: lime;">date "+%Y%m%d%H%M%S"</span>)-Servers.txt<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
if [ -f sites.txt ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;"> rm sites.txt</span><o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
if [ -f sites2.txt ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;"> </span><span style="background-color: lime;">rm sites2.txt</span><o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
if [ -f Servers2.txt ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;"> </span><span style="background-color: lime;">rm Servers2.txt</span><o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="background-color: blue; background-position: initial initial; background-repeat: initial initial;">curl -s $1 | tr '"' \\n | tr '=' \\n | tr ' ' \\n | tr '?' \\n | grep ^http: | sort | uniq | tr '/' \\n | grep ^www | sort | uniq >> sites.txt<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: blue; background-position: initial initial; background-repeat: initial initial;">curl -s $1 | tr '"'' ''?''=''%' \\n 2>/dev/null | grep ^http: | cut -c8- | cut -f1 -d'/' | sort | uniq >> sites.txt</span><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
for (( i=1; i<=${iterations:=5}; i++ ))<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
sites_array=($(cat sites.txt))<o:p></o:p></div>
<div class="MsoNormal">
for j in ${sites_array[*]}<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: blue; background-position: initial initial; background-repeat: initial initial;">curl -s $j | tr '"' \\n | tr '=' \\n | tr ' ' \\n | tr '?' \\n | grep ^http: | sort | uniq | tr '/' \\n | tr '?' \\n | grep ^www | sort | uniq >> sites.txt</span><o:p></o:p></div>
<div class="MsoNormal">
if curl -sI $j >/dev/null 2>&1<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: blue; background-position: initial initial; background-repeat: initial initial;">curl -s $j | tr '"'' ''?''=''%' \\n 2>/dev/null | grep ^http: | cut -c8- | cut -f1 -d'/' | sort | uniq >> sites.txt</span><o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;"> sort sites.txt | uniq > sites2.txt<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: lime;"> cp sites2.txt sites.txt</span><o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
unset sites_array<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
sites_array=($(cat sites.txt))<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
echo Trovati ${#sites_array[*]} siti ...<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
for j in ${sites_array[*]}<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: blue; background-position: initial initial; background-repeat: initial initial;">curl -sI $j | grep "^Server:" | cut -c9- >> $SERVERSFILE</span><o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
SERVERSFILESIZE=$(<span style="background-color: lime;">cat $SERVERSFILE | wc -l)</span><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
echo<o:p></o:p></div>
<div class="MsoNormal">
echo Percentuale server Apache: <span style="background-color: lime;">$(( 100 * $(grep Apache $SERVERSFILE | wc -</span><span style="background-color: lime;">l)/$SERVERSFILESIZE ))'%'</span> di tutti i server Apache<o:p></o:p></div>
<div class="MsoNormal">
echo Percentuale server Microsoft IIS: <span style="background-color: lime;">$(( 100 * $(grep Microsoft $SERVERSFILE | wc -</span><span style="background-color: lime;">l)/$SERVERSFILESIZE ))'%'</span> di tutti i server Microsoft IIS<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="background-color: lime;">sort $SERVERSFILE | uniq -c | sort -nr > Servers2.txt<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="background-color: lime;">mv Servers2.txt $SERVERSFILE</span><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
echo<o:p></o:p></div>
<div class="MsoNormal">
echo "Vedere file $SERVERSFILE per la lista completa dei server copiati"<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>71 Un dispositivo mobile supporta la memorizzazione di files, ma non con la consueta struttura gerarchica presente nel file system di un computer.<o:p></o:p></b></div>
<div class="MsoNormal">
<b>Si desidera trasferire nel dispositivo mobile i file presenti in una directory A organizzata<o:p></o:p></b></div>
<div class="MsoNormal">
<b>gerarchicamente nel proprio computer e, per permettere tale trasferimento con un unica operazione di drag&drop, occorre <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">eliminare la sua struttura gerarchica e portare tutti i file allo stesso livello</span>.<o:p></o:p></b></div>
<div class="MsoNormal">
<b>Scrivere uno script bash che, a partire dalla directory A passata come argomento, crei un'altra directory B nella quale tutti i file contenuti in A siano ancora presenti ma tutti allo stesso livello. Fare ciò curando che la directory A sia lasciata intatta e, dal momento che l'operazione<o:p></o:p></b></div>
<div class="MsoNormal">
<b>si svolge in un disco quasi pieno, fare anche in modo che sia consumata la minore quantità di memoria permanente possibile.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
percorso=$(pwd)<o:p></o:p></div>
<div class="MsoNormal">
mkdir $2<o:p></o:p></div>
<div class="MsoNormal">
find ./$1 -type f > elenco.txt<o:p></o:p></div>
<div class="MsoNormal">
a=$(wc -l elenco.txt | awk '{print $1}')<o:p></o:p></div>
<div class="MsoNormal">
i=1<o:p></o:p></div>
<div class="MsoNormal">
while [ $i -le $a ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
riga=$(head -$i elenco.txt | tail -1)<o:p></o:p></div>
<div class="MsoNormal">
riganuova=$(echo ${riga:1})<o:p></o:p></div>
<div class="MsoNormal">
nome=$(echo ${riga##.*/})<o:p></o:p></div>
<div class="MsoNormal">
echo "***$percorso$riganuova $percorso/$2/$nome"<o:p></o:p></div>
<div class="MsoNormal">
cp $percorso$riganuova $percorso/$2/$nome<o:p></o:p></div>
<div class="MsoNormal">
let i++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>71 Trovare, tra quelli che possono essere lanciati dalla linea di comando senza indicare esplicitamente il loro percorso, <span style="background-color: yellow; background-position: initial initial; background-repeat: initial initial;">l'eseguibile che ha la maggiore dimensione del proprio codice (ovvero della propria sezione testo)</span>.<o:p></o:p></b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
#!/bin/bash<o:p></o:p></div>
<div class="MsoNormal">
<span style="background-color: lime;">find . -perm +111 -type f > elenco.txt</span><o:p></o:p></div>
<div class="MsoNormal">
a=$(wc -l elenco.txt | awk '{print $1}')<o:p></o:p></div>
<div class="MsoNormal">
max=0<o:p></o:p></div>
<div class="MsoNormal">
i=1<o:p></o:p></div>
<div class="MsoNormal">
while [ $i -le $a ]<o:p></o:p></div>
<div class="MsoNormal">
do<o:p></o:p></div>
<div class="MsoNormal">
file=$(head -$i elenco.txt | tail -1)<o:p></o:p></div>
<div class="MsoNormal">
grandezza=$(cat $file | wc -l | awk '{print $1}')<o:p></o:p></div>
<div class="MsoNormal">
if [ $grandezza -gt $max ]<o:p></o:p></div>
<div class="MsoNormal">
then<o:p></o:p></div>
<div class="MsoNormal">
max=$grandezza<o:p></o:p></div>
<div class="MsoNormal">
filemax<span style="background-color: lime;">=$(echo ${file##.*/})</span><o:p></o:p></div>
<div class="MsoNormal">
fi<o:p></o:p></div>
<div class="MsoNormal">
let i++<o:p></o:p></div>
<div class="MsoNormal">
done<o:p></o:p></div>
<div class="MsoNormal">
echo "Il file più grande è $filemax!"<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<b><span style="color: red;">PROCESSI, MEMORIA, SISTEMA E COMANDI<o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="color: blue;">WEB E SEGNALI<o:p></o:p></span></b></div>
<div class="MsoNormal">
<b><span style="color: lime;">COPIA, RICERCA, SPOSTAMENTO, TRASFORMAZIONI, LINK, SCRIPT, RANDOM ECC ECC</span><span style="color: green;"><o:p></o:p></span></b></div>
<div class="MsoNormal">
</div>
<div class="MsoNormal">
<b><span style="color: magenta;">PASSWORD, INSERIMENTI, PERMESSI, CODIFICHE, ESTENSIONI FILE E ARCHIVI</span></b></div>
</div>
dany27041991http://www.blogger.com/profile/00521762883252590985noreply@blogger.com0tag:blogger.com,1999:blog-9056225403758620615.post-91918816029521540282013-11-06T05:18:00.002-08:002013-11-06T05:18:49.560-08:00Traduzione Versione Latina "Libro VIII - Par. 4" de "De Bello Gallico" di "Aulo Irzio"<div style="background-color: white; color: #4c4c4c; font-family: 'Bree Serif', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 10px;">
<strong>Testo Originale Latino</strong></div>
<div style="background-color: white; color: #4c4c4c; font-family: 'Bree Serif', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 10px;">
Caesar militibus pro tanto labore ac patientia, qui brumalibus diebus itineribus difficillimis, frigoribus intolerandis studiosissime permanserant in labore, ducenos sestertios, centurionibus tot milia nummum praedae nomine condonanda pollicetur legionibusque in hiberna remissis ipse se recipit die XXXX Bibracte. Ibi cum ius diceret, Bituriges ad eum legatos mittunt auxilium petitum contra Carnutes, quos intulisse bellum sibi querebantur. Qua re cognita, cum dies non amplius decem et octo in hibernis esset moratus, legiones XIIII et VI ex hibernis ab Arare educit, quas ibi collocatas explicandae rei frumentariae causa superiore commentario demonstratum est: ita cum duabus legionibus ad persequendos Carnutes proficiscitur.</div>
<div style="background-color: white; color: #4c4c4c; font-family: 'Bree Serif', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 10px;">
<br /></div>
<div style="background-color: white; color: #4c4c4c; font-family: 'Bree Serif', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 10px;">
<strong>Traduzione Italiana</strong></div>
<div style="background-color: white; color: #4c4c4c; font-family: 'Bree Serif', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 10px;">
Ai soldati, che avevano senza sosta condotto le operazioni con straordinario impegno anche nelle giornate invernali, lungo strade davvero disagevoli e con un freddo insopportabile, come premio a titolo di bottino Cesare promette, per le tante fatiche e sopportazioni, duecento sesterzi a testa, e ai centurioni mille. Invia le legioni ai quartieri d'inverno e ritorna a Bibracte dopo quaranta giorni. Mentre vi amministrava la giustizia, i Biturigi gli inviano emissari per chiedergli aiuto contro i Carnuti, lamentando attacchi da parte loro. Appena ne è informato, dopo aver sostato nei campi invernali non più di diciotto giorni, richiama la diciottesima e la sesta legione dagli accampamenti sulla Saona, dove erano state dislocate per occuparsi del vettovagliamento, come si è detto nel libro precedente. Così, con due legioni parte all'inseguimento dei Carnuti.</div>
dany27041991http://www.blogger.com/profile/00521762883252590985noreply@blogger.com0tag:blogger.com,1999:blog-9056225403758620615.post-39292846310168287822013-11-06T05:17:00.002-08:002013-11-06T05:17:17.238-08:00Traduzione Versione Latina "Libro VIII - Par. 3" de "De Bello Gallico" di "Aulo Irzio"<div style="background-color: white; color: #4c4c4c; font-family: 'Bree Serif', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 10px;">
<strong>Testo Originale Latino</strong></div>
<div style="background-color: white; color: #4c4c4c; font-family: 'Bree Serif', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 10px;">
Repentino adventu Caesaris accidit, quod imparatis disiectisque accidere fuit necesse, ut sine timore ullo rura colentes prius ab equitatu opprimerentur quam confugere in oppida possent. Namque etiam illud vulgare incursionis hostium signum, quod incendiis aedificiorum intellegi consuevit, Caesaris erat interdicto sublatum, ne aut copia pabuli frumentique, si longius progredi vellet, deficeretur, aut hostes incendius terrerentur. Multis hominum milibus captis perterriti Bituriges; qui primum adventum potuerant effugere Romanorum, in finitimas civitates aut privatis hospitiis confisi aut societate consiliorum confugerant. Frustra: nam Caesar magni sitineribus omnibus locis occurrit nec dat ulli civitati spatium de aliena potius quam de domestica salute cogitandi; qua celeritate et fideles amicos retinebat et dubitantes terrore ad condiciones pacis adducebat. Tali condicione proposita Bituriges, cum sibi viderent clementia Caesaris reditum patere in eius amicitiam finitimasque civitates sine ulla poena dedisse obsides atque in fidem receptas esse, idem fecerunt.</div>
<div style="background-color: white; color: #4c4c4c; font-family: 'Bree Serif', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 10px;">
<br /></div>
<div style="background-color: white; color: #4c4c4c; font-family: 'Bree Serif', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 10px;">
<strong>Traduzione Italiana</strong></div>
<div style="background-color: white; color: #4c4c4c; font-family: 'Bree Serif', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 10px;">
Al repentino arrivo di Cesare accadde l'inevitabile per gente colta alla sprovvista e sparpagliata: mentre i nemici, senza timore alcuno, attendevano ai lavori nei campi, vennero sopraffatti dalla cavalleria prima di potersi rifugiare nelle città. Infatti, per ordine di Cesare, era stato eliminato anche l'indizio più comune di un'incursione nemica, ovvero il fuoco appiccato agli edifici, sia perché in caso di ulteriore avanzata non venissero a mancare foraggio e grano, sia perché i nemici non fossero messi in allarme dagli incendi stessi. Dopo la cattura di molte migliaia di uomini, chi tra i Biturigi, in preda alla paura, era riuscito a sfuggire al primo attacco dei Romani, era riparato presso i popoli vicini, fidando o in vincoli personali d'ospitalità oppure nell'alleanza comune. Invano: a marce forzate Cesare accorre dappertutto e non lascia a nessun popolo il tempo di pensare alla salvezza altrui più che alla propria. Con la rapidità della sua azione teneva a freno gli alleati fedeli, con il terrore costringeva alla pace i titubanti. Di fronte a tale situazione, i Biturigi, vedendo che la clemenza di Cesare lasciava spazio per un ritorno all'alleanza con lui e che i popoli limitrofi non avevano subito pena alcuna, ma dietro la consegna di ostaggi erano stati accolti sotto la sua protezione, ne seguirono l'esempio.</div>
dany27041991http://www.blogger.com/profile/00521762883252590985noreply@blogger.com0tag:blogger.com,1999:blog-9056225403758620615.post-2920862526923587782013-11-06T05:15:00.005-08:002013-11-06T05:15:57.808-08:00Traduzione Versione Latina "Libro VIII - Par. 2" de "De Bello Gallico" di "Aulo Irzio"<div style="background-color: white; color: #4c4c4c; font-family: 'Bree Serif', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 10px;">
<strong>Testo Originale Latino</strong></div>
<div style="background-color: white; color: #4c4c4c; font-family: 'Bree Serif', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 10px;">
Quae ne opinio Gallorum confirmaretur, Caesar Marcum Antonium quaestorem suis praefecit hibernis; ipse equitum praesidio pridie Kal. Ianuarias ab oppido Bibracte proficiscitur ad legionem XIII, quam non longe a finibus Aeduorum collocaverat in finibus Biturigum, eique adiungit legionem XI, quae proxima fuerat. Binis cohortibus ad impedimenta tuenda relictis reliquum exercitum in copiosissimos agros Biturigum inducit, qui, cum latos fines et complura oppida haberent, unius legionis hibernis non potuerint contineri quin bellum pararent coniurationesque facerent.</div>
<div style="background-color: white; color: #4c4c4c; font-family: 'Bree Serif', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 10px;">
<br /></div>
<div style="background-color: white; color: #4c4c4c; font-family: 'Bree Serif', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 10px;">
<strong>Traduzione Italiana</strong></div>
<div style="background-color: white; color: #4c4c4c; font-family: 'Bree Serif', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 10px;">
Per evitare che le aspettative dei Galli trovassero conferme, Cesare affida al questore M. Antonio il comando dei suoi quartieri d'inverno; la vigilia delle calende di gennaio, con una scorta di cavalieri parte da Bibracte verso la tredicesima legione, da lui stanziata nei territori dei Biturigi, non lontano dagli Edui. Alla tredicesima unisce l'undicesima legione, la più vicina. Lasciate due coorti a guardia delle salmerie, guida il resto dell'esercito nelle fertilissime campagne dei Biturigi. Quest'ultimi avevano vasti territori e molte città, per cui la presenza di una sola legione nei campi invernali non era valsa a impedire i preparativi di guerra e i patti di alleanza.</div>
dany27041991http://www.blogger.com/profile/00521762883252590985noreply@blogger.com0tag:blogger.com,1999:blog-9056225403758620615.post-58886431633142945922013-11-06T05:14:00.001-08:002013-11-06T05:14:19.886-08:00Traduzione Versione Latina "Libro VIII - Par. 1" de "De Bello Gallico" di "Aulo Irzio"<div style="background-color: white; color: #4c4c4c; font-family: 'Bree Serif', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 10px;">
<strong>Testo Originale Latino</strong></div>
<div style="background-color: white; color: #4c4c4c; font-family: 'Bree Serif', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 10px;">
Omni Gallia devicta Caesar cum a superiore aestate nullum bellandi tempus intermisisset militesque hibernorum quiete reficere a tantis laboribus vellet, complures eodem tempore civitates renovare belli consilia nuntiabantur coniurationesque facere. Cuius rei verisimilis causa adferebatur, quod Gallis omnibus cogrutum esset neque ulla multitudine in unum locum coacta resisti posse Romanis, nec, si diversa bella complures eodem tempore intulissent civitates, satis auxili aut spati aut copiarum habiturum exercitum populi Romani ad omnia persequenda; non esse autem alicui civitati sortem incommodi recusandam, si tali mora reliquae possent se vindicare in libertatem.</div>
<div style="background-color: white; color: #4c4c4c; font-family: 'Bree Serif', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 10px;">
<br /></div>
<div style="background-color: white; color: #4c4c4c; font-family: 'Bree Serif', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 10px;">
<strong>Traduzione Italiana</strong></div>
<div style="background-color: white; color: #4c4c4c; font-family: 'Bree Serif', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 10px;">
Piegata tutta la Gallia, Cesare, che dall'estate precedente non aveva mai cessato di combattere, voleva concedere un po' di riposo ai soldati negli accampamenti invernali, dopo tante fatiche. Giungeva, però, notizia che diversi popoli contemporaneamente rinnovavano i piani di guerra e stringevano alleanze. Motivo di tali iniziative, verosimilmente, era che tutti i Galli ben sapevano che nessun esercito concentrato in un solo luogo poteva resistere ai Romani e che, se parecchie genti, nello stesso istante, li avessero attaccati su diversi fronti, l'esercito del popolo romano non avrebbe avuto appoggi, tempo, truppe sufficienti per fronteggiare tutti. E nessun popolo doveva sottrarsi al destino d'un rovescio, se, impegnando i Romani, avesse permesso agli altri di riacquistare la libertà.</div>
dany27041991http://www.blogger.com/profile/00521762883252590985noreply@blogger.com0tag:blogger.com,1999:blog-9056225403758620615.post-60701459373223949392013-11-06T05:11:00.001-08:002013-11-06T05:11:19.726-08:00Traduzione Versione Latina "Libro VIII - Prologo" de "De Bello Gallico" di "Aulo Irzio"<div style="background-color: white; color: #4c4c4c; font-family: 'Bree Serif', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 10px;">
<strong>Testo Originale Latino</strong></div>
<div style="background-color: white; color: #4c4c4c; font-family: 'Bree Serif', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 10px;">
Coactus assiduis tuis vocibus, Balbe, cum cotidiana mea recusatio non difficultatis excusationem, sed inertiae videretur deprecationem habere, rem difficillimam suscepi. Caesaris nostri commentarios rerum gestarum Galliae, non comparantibus superioribus atque insequentibus eius scriptis, contexui novissimumque imperfectum ab rebus gestis Alexandriae confeci usque ad exitum non quidem civilis dissensionis, cuius finem nullum videmus, sed vitae Caesaris. Quos utinam qui legent scire possint quam invitus susceperim scribendos, qua facilius caream stultitiae atque arrogantiae crimine, qui me mediis interposuerim Caesaris scriptis. Constat enim inter omnes nihil tam operose ab aliis esse perfectum, quod non horum elegantia commentariorum superetur: qui sunt editi, ne scientia tantarum rerum scriptoribus deesset, adeoque probantur omnium iudicio ut praerepta, non praebita, facultas scriptoribus videatur. Cuius tamen rei maior nostra quam reliquorum est admiratio: ceteri enim, quam bene atque emendate, nos etiam, quam facile atque celeriter eos perfecerit scimus. Erat autem in Caesare cum facultas atque elegantia summa scribendi, tum verissima scientia suorum consiliorum explicandorum. Mihi ne illud quidem accidit, ut Alexandrino atque Africano bello interessem; quae bella quamquam ex parte nobis Caesaris sermone sunt nota, tamen aliter audimus ea, quae rerum novitate aut admiratione nos capiunt, aliter, quae pro testimonio sumus dicturi. Sed ego nimirum, dum omnes excusationis causas colligo ne cum Caesare conferar, hoc ipsum crimen arrogantiae subeo, quod me iudicio cuiusquam existimem posse cum Caesare comparari. Vale.</div>
<div style="background-color: white; color: #4c4c4c; font-family: 'Bree Serif', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 10px;">
<br /></div>
<div style="background-color: white; color: #4c4c4c; font-family: 'Bree Serif', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 10px;">
<strong>Traduzione Italiana</strong></div>
<div style="background-color: white; color: #4c4c4c; font-family: 'Bree Serif', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 10px;">
Costretto dalle tue assidue esortazioni, Balbo, visto che il mio quotidiano rifiuto non sembrava ammettere la scusa della difficoltà, ma incontrava il biasimo dell'inerzia, ho assunto un compito davvero difficile: i commentari del nostro Cesare sulle sue imprese in Gallia, li ho integrati con le vicende che non comparivano e li ho collegati ai suoi scritti successivi; inoltre, l'ultima opera, da lui lasciata incompiuta, l'ho terminata a partire dalle imprese alessandrine per arrivare non dico al termine della guerra civile, di cui non vediamo ancora la fine, ma alla morte di Cesare. Vorrei che i lettori sapessero quanto malvolentieri mi sia assunto il compito di scriverli, per essere con più facilità assolto dall'accusa di stoltezza e arroganza, io che ho inserito tra gli scritti di Cesare i miei. Tutti lo sanno: non c'è opera di altri autori che sia stata composta con altrettanta cura e che non sia superata dall'eleganza di questi commentari. Furono pubblicati perché agli storici non mancasse il materiale su imprese così grandi; ma tutti ne riconobbero il valore, al punto che sembrava preclusa, e non offerta, la possibilità di narrarle. In tal senso, comunque, la nostra ammirazione supera quella degli altri: perché tutti ne vedono la bellezza e la perfezione. ma noi sappiamo anche con quale facilità e rapidità li abbia composti. Cesare, infatti, aveva sia una straordinaria disposizione ed eleganza nello scrivere, sia un'autentica capacità di illustrare i suoi disegni. Io non ho partecipato direttamente alla guerra alessandrina e africana; sebbene in parte esse mi siano note per bocca di Cesare, tuttavia un conto è udire i fatti che ci colpiscono per la loro singolarità o che ci riempiono d'ammirazione, un altro è esporre gli avvenimenti per testimonianza diretta. Ma proprio mentre cerco ogni motivo di scusa per non essere accostato a Cesare, mi espongo all'accusa di arroganza, per aver pensato che qualcuno possa paragonarmi a lui. Stammi bene.</div>
dany27041991http://www.blogger.com/profile/00521762883252590985noreply@blogger.com0tag:blogger.com,1999:blog-9056225403758620615.post-44208496419472253442013-06-07T12:11:00.000-07:002013-06-07T12:11:47.142-07:00L'ombra dell'Africano Maggiore si manifesta a Scipione<span style="color: #0b5394; font-family: Verdana, sans-serif;"><b><span style="background-color: white; font-size: 16px;">Post autem apparatu regio accepti, sermonem in multam produximus noctem, cum senex nihil nisi de Africano loqueretur, omniaque eius non facta solum sed etiam dicta meminisset. Deinde, ut cubitum discessimus, me et de via fessum, et qui ad multam noctem vigilassem, artior quam solebat somnus complexus est. Hic mihi - credo equidem ex hoc quod eramus locuti; fit enim fere ut cogitationes sermonesque nostri pariant aliquid in somno tale, quale de Homero</span><br style="background-color: white; border: none; font-size: 16px; margin: 0px; outline: none; padding: 0px; vertical-align: baseline;" /><span style="background-color: white; font-size: 16px;">scribit Ennius, de quo videlicet saepissime vigilans solebat cogitare et loqui – Africanus se ostendit ea forma quae mihi ex imagine eius quam ex ipso erat notior. Quem ubi agnovi, equidem cohorrui; sed ille: “Ades” inquit “animo et omitte timorem, Scipio, et quae dicam memoriae trade.”</span></b></span><br />
<span style="background-color: white; color: #3e3e3e; font-size: 16px;"><span style="font-family: Verdana, sans-serif;"><br /></span></span>
<span style="background-color: white; color: #3e3e3e; font-size: 16px;"><span style="font-family: Verdana, sans-serif;"><br /></span></span>
<span style="background-color: white; color: #464646; font-size: 14px; line-height: 22.390625px;"><span style="font-family: Verdana, sans-serif;">Infatti, dopo essere stati accolti da un'accoglienza regale, parlammo per molto tempo durante molte ore della notte. Il vecchio parlando di nient'altro se non dell'Africano e avendo ricordato non solo tutte le sue imprese, ma anche le sue parole. In séguito, non appena andammo a dormire, un sonno più profondo di quanto soleva s'impadronì di me, sia per il viaggio sia perchè avevo vegliato tutta la notte. Quand'ecco che (credo, a dire il vero, che dipendesse dall'argomento della nostra discussione: accade infatti generalmente che i nostri pensieri e le conversazioni producano durante il sonno un qualcosa di simile a ciò che Ennio dice a proposito di Omero, al quale, è evidente, di solito pensava da sveglio e del quale discuteva) m'apparve l'Africano, nell'aspetto che mi era noto più dal suo ritratto che dalle sue fattezze reali; non appena lo riconobbi, un brivido davvero mi percorse; ma quello disse: «Sta' sereno, deponi il tuo timore, Scipione, e tramanda alla memoria le parole che ti sto per dire».</span></span><br />
<span style="background-color: white; color: #3e3e3e; font-family: Arial, 'Helvetica CY', 'Nimbus Sans L', sans-serif; font-size: 16px;"><br /></span>
dany27041991http://www.blogger.com/profile/00521762883252590985noreply@blogger.com0tag:blogger.com,1999:blog-9056225403758620615.post-7074881061357828892013-06-07T11:56:00.002-07:002013-06-07T11:56:43.797-07:00L'INVETTIVA DI DIDONE<span style="background-color: white; color: #464646; line-height: 22.390625px;"><span style="font-family: Verdana, sans-serif;"><span style="font-size: 14px;"> </span></span></span><br />
<span style="background-color: white; font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.390625px;"><span style="color: #0b5394;"><b>Talia dicentem iamdudum aversa tuetur huc illuc volvens oculos totumque pererrat luminibus tacitis et sic accensa profatur: 'nec tibi diva parens generis nec Dardanus auctor, perfide, sed duris genuit te cautibus horrens Caucasus Hyrcanaeque admorunt ubera tigres. nam quid dissimulo aut quae me ad maiora reservo? num fletu ingemuit nostro? num lumina flexit? num lacrimas victus dedit aut miseratus amantem est? quae quibus anteferam? iam iam nec maxima Iuno nec Saturnius haec oculis pater aspicit aequis. nusquam tuta fides. eiectum litore, egentem excepi et regni demens in parte locavi. amissam classem, socios a morte reduxi heu furiis incensa feror: nunc augur Apollo, nunc Lyciae sortes, nunc et Iove missus ab ipso interpres divum fert horrida iussa per auras. scilicet is superis labor est, ea cura quietos sollicitat. neque te teneo neque dicta refello: i, sequere Italiam ventis, pete regna per undas. spero equidem mediis, si quid pia numina possunt, supplicia hausurum scopulis et nomine Dido saepe vocaturum. sequar atris ignibus absens et, cum frigida mors anima seduxerit artus, omnibus umbra locis adero. dabis, improbe, poenas. audiam et haec Manis veniet mihi fama sub imos.' his medium dictis sermonem abrumpit et auras aegra fugit seque ex oculis avertit et aufert, linquens multa metu cunctantem et multa parantem dicere. suscipiunt famulae conlapsaque membra marmoreo referunt thalamo stratisque reponunt.</b></span></span><br />
<span style="background-color: white; color: #464646; font-size: 14px; line-height: 22.390625px;"><span style="font-family: Verdana, sans-serif;"><br /></span></span>
<span style="color: #464646; font-family: Verdana, sans-serif;"><span style="font-size: 14px; line-height: 22.390625px;">Da un po' Didone lo guarda torva, mentre dice queste parole volgendo gli occhi qua e là e lo scruta tutto con le luci silenziose così incendiata dall'ira dice: "O perfido, tu non hai nè una dea come madre nè Dardano come iniziatore della stirpe, ma generò te dalle terribili rocce il terribile Caucaso e le tigri Ircane diedero a te il latte. Infatti perchè mi fingo (non credere) a quali eventi superiori io mi riservo? forse che si commosse al mio pianto? forse che piegò gli occhi? forse che vinto dal dolore pianse l'amante? quali situazioni potrei anteporre a questi? Ormai nè la grandissima Giunone nè il padre Saturno guarda queste situazioni con occhi misericordiosi. Accolsi lui cacciato via dal mare (sbarcato) bisognoso di cure e pazza lo collocai in una parte del mio regno, salvai la flotta persa e salvai i suoi alleati dalla morte. Ahimè sono trascinata con la testa incendiata dalla furia, ora l'indovino Apollo ora la profezia di Licia, ora anche il messaggero degli Dei mandato dallo stesso Giove porta terribili comandi attraverso l'aria. sicuramente questa è una fatica per gli Dei questa preoccupazione angoscia loro che erano tranquilli. Io non ti trattengo nè rimargino le parole: vai, prosegui per l'Italia con il favore dei venti, circa i regni attraverso il male; spero in verità se qualcosa ancora tu sconterai le pene in mezzo agli scogli e spero che spesso invocherai Didone per nome. Pur lontano ti seguirò con maledizioni terribili e, quando la fredda morte avrà separato le membra dell'anima, io sarò presente come ombra in tutti i luoghi. Sconterai, o scellerato, le tue pene; sentirò, e questa voce mi arriverà anche sotto i profondi Mani (nel regno sei morti)". Con queste parole ruppe a metà il discorso e l'aria affranta fugge e si volge e si sottrae al suo sguardo, lasciandolo molto esitante per paura e preparandosi a dire molte cose. La sorreggono le ancelle e riportano le membra crollate sul letto marmoreo e la ripongono sui cuscini. Ma i pio Enea, benchè desideri calmare la dolente confortandola e con le sue parole allontanare le pene, gemendo molto e scosso nell'animo dal grande amore, esegue tuttavia i comandi degli dei e rivisita la flotta. </span></span><br />
<br />
<br />
<span style="color: #464646; font-family: OpenSansLight, Trebuchet MS, Arial, Helvetica, sans-serif;"><span style="font-size: 14px; line-height: 22.390625px;"><br /></span></span>
<span style="color: #464646; font-family: OpenSansLight, Trebuchet MS, Arial, Helvetica, sans-serif;"><span style="font-size: 14px; line-height: 22.390625px;"><br /></span></span>
<span style="color: #464646; font-family: OpenSansLight, Trebuchet MS, Arial, Helvetica, sans-serif;"><span style="font-size: 14px; line-height: 22.390625px;"><br /></span></span>
<span style="color: #464646; font-family: OpenSansLight, Trebuchet MS, Arial, Helvetica, sans-serif;"><span style="font-size: 14px; line-height: 22.390625px;"><br /></span></span>dany27041991http://www.blogger.com/profile/00521762883252590985noreply@blogger.com0tag:blogger.com,1999:blog-9056225403758620615.post-27241315659681187392013-06-01T12:28:00.001-07:002013-06-01T12:28:22.023-07:00Versione "Libro VIII - Par. 5" di Aulo IrzioTesto Originale Latino<br />
<br />
Cum fama exercitus ad hostes esset perlata, calamitate ceterorum ducti Carnutes desertis vicis oppidisque, quae tolerandae hiemis causa constitutis repente exiguis ad necessitatem aedificiis incolebant (nuper enim devicti complura oppida dimiserant), dispersi profugiunt. Caesar erumpentes eo maxime tempore acerrimas tempestates cum subire milites nollet, in oppido Carnutum Cenabo castra ponit atque in tecta partim Gallorum, partim quae coniectis celeriter stramentis tentoriorum integendorum gratia erant inaedificata, milites compegit. Equites tamen et auxiliarios pedites in omnes partes mittit quascumque petisse dicebantur hostes; nec frustra: nam plerumque magna praeda potiti nostri revertuntur. Oppressi Carnutes hiemis difficultate, terrore periculi, cum tectis expulsi nullo loco diutius consistere auderent nec silvarum praesidio tempestatibus durissimis tegi possent, dispersi magna parte amissa suorum dissipantur in finitimas civitates.<br />
<br />
<br />
<br />
Traduzione Italiana<br />
<br />
Quando la notizia di truppe in movimento giunse ai nemici, i Carnuti, edotti dalle sciagure altrui, abbandonano i villaggi e le città in cui abitavano dopo aver frettolosamente allestito piccole costruzioni per ripararsi dall'inverno (infatti, in seguito alla recente sconfitta avevano perduto parecchie città) e fuggono sbandati. Cesare non voleva che i soldati affrontassero i rigori della stagione, tremendi proprio in quel periodo: pone il campo in una città dei Carnuti, Cenabo, ammassa parte dei soldati nelle case dei Galli, parte in ripari approntati gettando alla svelta paglia sulle tende. Comunque, manda i cavalieri e i fanti ausiliari in tutte le direzioni in cui si diceva che si fossero mossi i nemici. E non invano: i nostri, infatti, rientrano per lo più con un ricco bottino. I Carnuti si trovarono stretti dalle difficoltà dell'inverno e atterriti dal pericolo; cacciati dalle loro case, non osavano fermarsi stabilmente in nessun luogo, né potevano sfruttare il riparo delle selve per l'inclemenza della stagione. Divisi, perdono gran parte dei loro e si sparpagliano presso le popolazioni vicine.dany27041991http://www.blogger.com/profile/00521762883252590985noreply@blogger.com0tag:blogger.com,1999:blog-9056225403758620615.post-17804841676342081862013-06-01T12:27:00.001-07:002013-06-01T12:27:22.949-07:00Versione "Libro VIII - Par. 4" di Aulo IrzioTesto Originale Latino<br />
<br />
Caesar militibus pro tanto labore ac patientia, qui brumalibus diebus itineribus difficillimis, frigoribus intolerandis studiosissime permanserant in labore, ducenos sestertios, centurionibus tot milia nummum praedae nomine condonanda pollicetur legionibusque in hiberna remissis ipse se recipit die XXXX Bibracte. Ibi cum ius diceret, Bituriges ad eum legatos mittunt auxilium petitum contra Carnutes, quos intulisse bellum sibi querebantur. Qua re cognita, cum dies non amplius decem et octo in hibernis esset moratus, legiones XIIII et VI ex hibernis ab Arare educit, quas ibi collocatas explicandae rei frumentariae causa superiore commentario demonstratum est: ita cum duabus legionibus ad persequendos Carnutes proficiscitur.<br />
<br />
<br />
<br />
Traduzione Italiana<br />
<br />
Ai soldati, che avevano senza sosta condotto le operazioni con straordinario impegno anche nelle giornate invernali, lungo strade davvero disagevoli e con un freddo insopportabile, come premio a titolo di bottino Cesare promette, per le tante fatiche e sopportazioni, duecento sesterzi a testa, e ai centurioni mille. Invia le legioni ai quartieri d'inverno e ritorna a Bibracte dopo quaranta giorni. Mentre vi amministrava la giustizia, i Biturigi gli inviano emissari per chiedergli aiuto contro i Carnuti, lamentando attacchi da parte loro. Appena ne è informato, dopo aver sostato nei campi invernali non più di diciotto giorni, richiama la diciottesima e la sesta legione dagli accampamenti sulla Saona, dove erano state dislocate per occuparsi del vettovagliamento, come si è detto nel libro precedente. Così, con due legioni parte all'inseguimento dei Carnuti.dany27041991http://www.blogger.com/profile/00521762883252590985noreply@blogger.com0tag:blogger.com,1999:blog-9056225403758620615.post-58694052100678458592013-06-01T12:26:00.001-07:002013-06-01T12:26:13.600-07:00Versione "Libro VIII - Par. 3" di Aulo IrzioTesto Originale Latino<br />
<br />
Repentino adventu Caesaris accidit, quod imparatis disiectisque accidere fuit necesse, ut sine timore ullo rura colentes prius ab equitatu opprimerentur quam confugere in oppida possent. Namque etiam illud vulgare incursionis hostium signum, quod incendiis aedificiorum intellegi consuevit, Caesaris erat interdicto sublatum, ne aut copia pabuli frumentique, si longius progredi vellet, deficeretur, aut hostes incendius terrerentur. Multis hominum milibus captis perterriti Bituriges; qui primum adventum potuerant effugere Romanorum, in finitimas civitates aut privatis hospitiis confisi aut societate consiliorum confugerant. Frustra: nam Caesar magni sitineribus omnibus locis occurrit nec dat ulli civitati spatium de aliena potius quam de domestica salute cogitandi; qua celeritate et fideles amicos retinebat et dubitantes terrore ad condiciones pacis adducebat. Tali condicione proposita Bituriges, cum sibi viderent clementia Caesaris reditum patere in eius amicitiam finitimasque civitates sine ulla poena dedisse obsides atque in fidem receptas esse, idem fecerunt.<br />
<br />
<br />
<br />
Traduzione Italiana<br />
<br />
Al repentino arrivo di Cesare accadde l'inevitabile per gente colta alla sprovvista e sparpagliata: mentre i nemici, senza timore alcuno, attendevano ai lavori nei campi, vennero sopraffatti dalla cavalleria prima di potersi rifugiare nelle città. Infatti, per ordine di Cesare, era stato eliminato anche l'indizio più comune di un'incursione nemica, ovvero il fuoco appiccato agli edifici, sia perché in caso di ulteriore avanzata non venissero a mancare foraggio e grano, sia perché i nemici non fossero messi in allarme dagli incendi stessi. Dopo la cattura di molte migliaia di uomini, chi tra i Biturigi, in preda alla paura, era riuscito a sfuggire al primo attacco dei Romani, era riparato presso i popoli vicini, fidando o in vincoli personali d'ospitalità oppure nell'alleanza comune. Invano: a marce forzate Cesare accorre dappertutto e non lascia a nessun popolo il tempo di pensare alla salvezza altrui più che alla propria. Con la rapidità della sua azione teneva a freno gli alleati fedeli, con il terrore costringeva alla pace i titubanti. Di fronte a tale situazione, i Biturigi, vedendo che la clemenza di Cesare lasciava spazio per un ritorno all'alleanza con lui e che i popoli limitrofi non avevano subito pena alcuna, ma dietro la consegna di ostaggi erano stati accolti sotto la sua protezione, ne seguirono l'esempio.dany27041991http://www.blogger.com/profile/00521762883252590985noreply@blogger.com0tag:blogger.com,1999:blog-9056225403758620615.post-86161871526835054222013-06-01T12:25:00.000-07:002013-06-01T12:25:00.693-07:00Versione "Libro VIII - Par. 2" di Aulo Irzio<div>
Testo Originale Latino</div>
<div>
<br /></div>
<div>
Quae ne opinio Gallorum confirmaretur, Caesar Marcum Antonium quaestorem suis praefecit hibernis; ipse equitum praesidio pridie Kal. Ianuarias ab oppido Bibracte proficiscitur ad legionem XIII, quam non longe a finibus Aeduorum collocaverat in finibus Biturigum, eique adiungit legionem XI, quae proxima fuerat. Binis cohortibus ad impedimenta tuenda relictis reliquum exercitum in copiosissimos agros Biturigum inducit, qui, cum latos fines et complura oppida haberent, unius legionis hibernis non potuerint contineri quin bellum pararent coniurationesque facerent.</div>
<div>
<br /></div>
<div>
</div>
<div>
<br /></div>
<div>
Traduzione Italiana</div>
<div>
<br /></div>
<div>
Per evitare che le aspettative dei Galli trovassero conferme, Cesare affida al questore M. Antonio il comando dei suoi quartieri d'inverno; la vigilia delle calende di gennaio, con una scorta di cavalieri parte da Bibracte verso la tredicesima legione, da lui stanziata nei territori dei Biturigi, non lontano dagli Edui. Alla tredicesima unisce l'undicesima legione, la più vicina. Lasciate due coorti a guardia delle salmerie, guida il resto dell'esercito nelle fertilissime campagne dei Biturigi. Quest'ultimi avevano vasti territori e molte città, per cui la presenza di una sola legione nei campi invernali non era valsa a impedire i preparativi di guerra e i patti di alleanza.</div>
dany27041991http://www.blogger.com/profile/00521762883252590985noreply@blogger.com0tag:blogger.com,1999:blog-9056225403758620615.post-2754662128378353112013-06-01T12:23:00.002-07:002013-06-01T12:23:34.286-07:00Versione "Libro VIII - Par. 1" di Aulo IrzioTesto Originale Latino<br />
<br />
Omni Gallia devicta Caesar cum a superiore aestate nullum bellandi tempus intermisisset militesque hibernorum quiete reficere a tantis laboribus vellet, complures eodem tempore civitates renovare belli consilia nuntiabantur coniurationesque facere. Cuius rei verisimilis causa adferebatur, quod Gallis omnibus cogrutum esset neque ulla multitudine in unum locum coacta resisti posse Romanis, nec, si diversa bella complures eodem tempore intulissent civitates, satis auxili aut spati aut copiarum habiturum exercitum populi Romani ad omnia persequenda; non esse autem alicui civitati sortem incommodi recusandam, si tali mora reliquae possent se vindicare in libertatem.<br />
<br />
<br />
<br />
Traduzione Italiana<br />
<br />
Piegata tutta la Gallia, Cesare, che dall'estate precedente non aveva mai cessato di combattere, voleva concedere un po' di riposo ai soldati negli accampamenti invernali, dopo tante fatiche. Giungeva, però, notizia che diversi popoli contemporaneamente rinnovavano i piani di guerra e stringevano alleanze. Motivo di tali iniziative, verosimilmente, era che tutti i Galli ben sapevano che nessun esercito concentrato in un solo luogo poteva resistere ai Romani e che, se parecchie genti, nello stesso istante, li avessero attaccati su diversi fronti, l'esercito del popolo romano non avrebbe avuto appoggi, tempo, truppe sufficienti per fronteggiare tutti. E nessun popolo doveva sottrarsi al destino d'un rovescio, se, impegnando i Romani, avesse permesso agli altri di riacquistare la libertà.dany27041991http://www.blogger.com/profile/00521762883252590985noreply@blogger.com0tag:blogger.com,1999:blog-9056225403758620615.post-80537438811846613312013-06-01T12:22:00.002-07:002013-06-01T12:22:19.379-07:00Versione "Libro VIII - Prologo" di Aulo IrzioTesto Originale Latino<br />
<br />
Coactus assiduis tuis vocibus, Balbe, cum cotidiana mea recusatio non difficultatis excusationem, sed inertiae videretur deprecationem habere, rem difficillimam suscepi. Caesaris nostri commentarios rerum gestarum Galliae, non comparantibus superioribus atque insequentibus eius scriptis, contexui novissimumque imperfectum ab rebus gestis Alexandriae confeci usque ad exitum non quidem civilis dissensionis, cuius finem nullum videmus, sed vitae Caesaris. Quos utinam qui legent scire possint quam invitus susceperim scribendos, qua facilius caream stultitiae atque arrogantiae crimine, qui me mediis interposuerim Caesaris scriptis. Constat enim inter omnes nihil tam operose ab aliis esse perfectum, quod non horum elegantia commentariorum superetur: qui sunt editi, ne scientia tantarum rerum scriptoribus deesset, adeoque probantur omnium iudicio ut praerepta, non praebita, facultas scriptoribus videatur. Cuius tamen rei maior nostra quam reliquorum est admiratio: ceteri enim, quam bene atque emendate, nos etiam, quam facile atque celeriter eos perfecerit scimus. Erat autem in Caesare cum facultas atque elegantia summa scribendi, tum verissima scientia suorum consiliorum explicandorum. Mihi ne illud quidem accidit, ut Alexandrino atque Africano bello interessem; quae bella quamquam ex parte nobis Caesaris sermone sunt nota, tamen aliter audimus ea, quae rerum novitate aut admiratione nos capiunt, aliter, quae pro testimonio sumus dicturi. Sed ego nimirum, dum omnes excusationis causas colligo ne cum Caesare conferar, hoc ipsum crimen arrogantiae subeo, quod me iudicio cuiusquam existimem posse cum Caesare comparari. Vale.<br />
<br />
<br />
<br />
Traduzione Italiana<br />
<br />
Costretto dalle tue assidue esortazioni, Balbo, visto che il mio quotidiano rifiuto non sembrava ammettere la scusa della difficoltà, ma incontrava il biasimo dell'inerzia, ho assunto un compito davvero difficile: i commentari del nostro Cesare sulle sue imprese in Gallia, li ho integrati con le vicende che non comparivano e li ho collegati ai suoi scritti successivi; inoltre, l'ultima opera, da lui lasciata incompiuta, l'ho terminata a partire dalle imprese alessandrine per arrivare non dico al termine della guerra civile, di cui non vediamo ancora la fine, ma alla morte di Cesare. Vorrei che i lettori sapessero quanto malvolentieri mi sia assunto il compito di scriverli, per essere con più facilità assolto dall'accusa di stoltezza e arroganza, io che ho inserito tra gli scritti di Cesare i miei. Tutti lo sanno: non c'è opera di altri autori che sia stata composta con altrettanta cura e che non sia superata dall'eleganza di questi commentari. Furono pubblicati perché agli storici non mancasse il materiale su imprese così grandi; ma tutti ne riconobbero il valore, al punto che sembrava preclusa, e non offerta, la possibilità di narrarle. In tal senso, comunque, la nostra ammirazione supera quella degli altri: perché tutti ne vedono la bellezza e la perfezione. ma noi sappiamo anche con quale facilità e rapidità li abbia composti. Cesare, infatti, aveva sia una straordinaria disposizione ed eleganza nello scrivere, sia un'autentica capacità di illustrare i suoi disegni. Io non ho partecipato direttamente alla guerra alessandrina e africana; sebbene in parte esse mi siano note per bocca di Cesare, tuttavia un conto è udire i fatti che ci colpiscono per la loro singolarità o che ci riempiono d'ammirazione, un altro è esporre gli avvenimenti per testimonianza diretta. Ma proprio mentre cerco ogni motivo di scusa per non essere accostato a Cesare, mi espongo all'accusa di arroganza, per aver pensato che qualcuno possa paragonarmi a lui. Stammi bene.dany27041991http://www.blogger.com/profile/00521762883252590985noreply@blogger.com0tag:blogger.com,1999:blog-9056225403758620615.post-14416666466497569182013-05-17T10:54:00.001-07:002013-05-17T10:54:25.023-07:00ANALISI 2dany27041991http://www.blogger.com/profile/00521762883252590985noreply@blogger.com0tag:blogger.com,1999:blog-9056225403758620615.post-28537398397937553872013-05-17T10:53:00.003-07:002013-05-17T11:08:55.287-07:00VERSIONI LATINO<br />
<ul>
<li><span style="color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: x-small;"><a href="http://notiziespaziogames.blogspot.it/2013/05/versione-una-banda-di-ladroni-di-apuleio.html">VERSIONE "UNA BANDA DI LADRONI" DI APULEIO</a></span></li>
<li><span style="color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: x-small;"><a href="http://notiziespaziogames.blogspot.it/2013/05/versione-metamorfosi-iv-30-di-apuleio.html">VERSIONE " METAMORFOSI IV 30" DI APULEIO </a></span></li>
<li><span style="color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: x-small;"><a href="http://notiziespaziogames.blogspot.it/2013/05/versione-metamorfosi-iv-29-di-apuleio.html">VERSIONE " METAMORFOSI IV 29" DI APULEIO </a></span></li>
<li><span style="color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: x-small;"><a href="http://notiziespaziogames.blogspot.it/2013/05/versione-metamorfosi-iv-28-di-apuleio.html">VERSIONE " METAMORFOSI IV 28" DI APULEIO </a></span></li>
<li><span style="color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: x-small;"><a href="http://notiziespaziogames.blogspot.it/2013/05/versione-i-piu-grandi-generali-romani.html">VERSIONE "I PIU' GRANDI GENERALI ROMANI DELLA SECONDA GUERRA PUNICA" DI APULEIO</a></span></li>
<li><span style="color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: x-small;"><a href="http://notiziespaziogames.blogspot.it/2013/05/versione-alessandro-magno-si-fece.html">VERSIONE "ALESSANDRO MAGNO SI FECE RITRARRE SOLO DA GRANDI ARTISTI" DI APULEIO</a></span></li>
<li><span style="color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: x-small;">VERSIONE "PARAGRAFO 20" DI APULEIO</span></li>
<li><span style="color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: x-small;">VERSIONE "ANDROCLO E IL LEONE" DI GELLIO</span></li>
<li><span style="color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: x-small;">VERSIONE "XIV, 28 - PREROGATIVE DELLE DUE CITTA'' DI AGOSTINO</span></li>
<li><span style="color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: x-small;">VERSIONE "CONFESSIONES 3, 4, 7" DI AGOSTINO</span></li>
<li><span style="color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: x-small;">VERSIONE "CONFESSIONES 3, 1, 1" DI AGOSTINO</span></li>
<li><span style="color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: x-small;">VERSIONE "CONFESSIONES 2, 4 " DI AGOSTINO</span></li>
<li><span style="color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: x-small;">EPIGRAMMI TRADOTTI DI MARZIALE</span></li>
<li><span style="color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: x-small;">VERSIONE "QUINTILIANO E I DOVERI DEGLI ALUNNI"</span></li>
<li><span style="color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: x-small;">VERSIONE "QUINTILIANO L'INSEGNANTE IDEALE"</span></li>
</ul>
dany27041991http://www.blogger.com/profile/00521762883252590985noreply@blogger.com0tag:blogger.com,1999:blog-9056225403758620615.post-50828719146602047002013-05-17T10:53:00.001-07:002013-05-17T10:53:46.173-07:00TEMI SVOLTIdany27041991http://www.blogger.com/profile/00521762883252590985noreply@blogger.com0tag:blogger.com,1999:blog-9056225403758620615.post-77349173951943867042013-05-17T10:51:00.003-07:002013-05-17T10:51:25.808-07:00Versione "Una banda di ladroni" di Apuleio<br />
<div style="background-color: white; border: 0px; color: #464646; line-height: 1.6em; margin-bottom: 20px; margin-left: 10px; outline: 0px; padding: 0px; vertical-align: baseline;">
<strong style="background-color: transparent; border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><span style="font-family: Arial, Helvetica, sans-serif;">Testo Originale Latino</span></strong></div>
<div style="background-color: white; border: 0px; color: #464646; line-height: 1.6em; margin-bottom: 20px; margin-left: 10px; outline: 0px; padding: 0px; vertical-align: baseline;">
<span style="font-family: Arial, Helvetica, sans-serif;">Narrat Apuleius fabulam mirificam da Lucio, incauto nimiumque curioso iuvene. Lucius quondam in Thessalia magae, inscius, hospes erat et in asinum conversus est multaque pericola subiit. Postea denuo Isidis deae auxilio homo factus est et casus suos narravit. Primus omnium raptus asini a latronibus fuit : < Nec mora fuit et aedes vi patefactea sunt: a latronum globo invasa erant omnia et singula domus membra cingebatur armata factione. Auxilia hinc inde convolaverant, obsistit discursus hostilis.</span></div>
<div style="background-color: white; border: 0px; color: #464646; line-height: 1.6em; margin-bottom: 20px; margin-left: 10px; outline: 0px; padding: 0px; vertical-align: baseline;">
<br /></div>
<div style="background-color: white; border: 0px; color: #464646; line-height: 1.6em; margin-bottom: 20px; margin-left: 10px; outline: 0px; padding: 0px; vertical-align: baseline;">
<strong style="background-color: transparent; border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><span style="font-family: Arial, Helvetica, sans-serif;">Traduzione Italiana</span></strong></div>
<div style="background-color: white; border: 0px; color: #464646; line-height: 1.6em; margin-bottom: 20px; margin-left: 10px; outline: 0px; padding: 0px; vertical-align: baseline;">
<span style="font-family: Arial, Helvetica, sans-serif;">Apuleio racconta una meravigliosa storia su Lucio, un giovano incauto e troppo curioso.Un giorno, Lucio, inconsapevole, era ospite di una maga in Tessaglia, e fu tramutato in asino e subì molti pericoli. In seguito, grazio all'aiuto della dea Iside, ritornò uomo e raccontò le sue vicende. Tra tutti, il primo ratto dell'asino fu compiuto da dei ladroni: "Non ci fu nemmeno un indugio e la casa fu aperta con la forza: tutto era stato preso dalla combriccola di ladroni, e ogni stanza della casa era assediata dal gruppo armato. Indi, erano accorse in massa delle truppe ausiliarie, (ma) si oppose il muoversi del nemico</span></div>
dany27041991http://www.blogger.com/profile/00521762883252590985noreply@blogger.com0tag:blogger.com,1999:blog-9056225403758620615.post-48699267143126370762013-05-17T10:50:00.003-07:002013-05-17T10:50:27.807-07:00Versione "Metamorfosi IV, 30 " di Apuleio<br />
<div style="background-color: white; border: 0px; color: #464646; line-height: 1.6em; margin-bottom: 20px; margin-left: 10px; outline: 0px; padding: 0px; vertical-align: baseline;">
<strong style="background-color: transparent; border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><span style="font-family: Arial, Helvetica, sans-serif;">Testo Originale Latino</span></strong></div>
<div style="background-color: white; border: 0px; color: #464646; line-height: 1.6em; margin-bottom: 20px; margin-left: 10px; outline: 0px; padding: 0px; vertical-align: baseline;">
<span style="font-family: Arial, Helvetica, sans-serif;">"En rerum naturae prisca parens, en elementorum origo initialis, en orbis totius alma Venus, quae cum mortali puella partiario maiestatis honore tractor et nomen meum caelo conditum terrenis sordibus profanatur! Nimirum communi numinis piamento vicariae venerationis incertum sustinebo et imaginem meam circumferet puella moritura. Frustra me pastor ille, cuius iustitiam fidemque magnus comprobavit luppiter, ob eximiam speciem tantis praetulit deabus. Sed non adeo gaudens ista, quaecumque est, meos honores usurpabit: iam faxo eam huius etiam ipsius inlicitae formonsitatis paeniteat". Et vocat confestim puerum suum pinnatum illum et satis temerarium, qui malis suis moribus contempta disciplina publica, flammis et sagittis armatus, per alienas domos nocte discurrens et omnium matrimonia corrumpens impune committit tanta flagitia et nihil prorsus boni facit. Hunc, quanquam genuina licentia procacem, verbis quoque insuper stimulat et perducit ad illam civitatem et Psychen - hoc enim nomine puella nuncupabatur - coram ostendit et tota illa perlata de formonsitatis aemulatione fabula gemens ac fremens indignatione:</span></div>
<div style="background-color: white; border: 0px; color: #464646; line-height: 1.6em; margin-bottom: 20px; margin-left: 10px; outline: 0px; padding: 0px; vertical-align: baseline;">
<br /></div>
<div style="background-color: white; border: 0px; color: #464646; line-height: 1.6em; margin-bottom: 20px; margin-left: 10px; outline: 0px; padding: 0px; vertical-align: baseline;">
<strong style="background-color: transparent; border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><span style="font-family: Arial, Helvetica, sans-serif;">Traduzione Italiana</span></strong></div>
<div style="background-color: white; border: 0px; color: #464646; line-height: 1.6em; margin-bottom: 20px; margin-left: 10px; outline: 0px; padding: 0px; vertical-align: baseline;">
<span style="font-family: Arial, Helvetica, sans-serif;">"Ecco che io antica genitrice della natura, origine prima degli elementi, io, Venere, anima del mondo, io sono costretta a dividere con una fanciulla mortale l'onore degli altari, e a tollerare che il mio nome, venerato nel cielo, sia profanato con volgarità terrene. E dovrò anche sopportare, con umiliazione della mia divinità, di essere sostituita con una equivoca venerazione, e che una fanciulla mortale porti in giro la mia immagine. Invano quel pastore, la cui fede e il cui giudizio approvò il sommo Giove, invano antepose la mia bellezza alle più grandi Dee. Ma questa, chiunque sia, non godrà a lungo dell'attribuzione degli onori a me dovuti: perché io farò che si debba pentire di questa illecita bellezza". Chiama subito il suo alato e alquanto temerario figliuolo, quello che, diprezzando coi suoi cattivi costumi la pubblica disciplina, armato di fiaccole e saette, va di notte qua e là per le case altrui corromendo le mogli di tutti, e commette impunemente tante azioni vergognose, e insomma non fa nulla di buono. E costui, già insolente e sfrenato per natura, ella conduce a quella città, e gli mostra Psiche, come si chiamava quella fanciulla, e raccontatagli per filo e per segno il fatto di quella bellezza rivale, gemendo e fremendo di indignazione gli dice:</span></div>
dany27041991http://www.blogger.com/profile/00521762883252590985noreply@blogger.com0tag:blogger.com,1999:blog-9056225403758620615.post-29257725103526123292013-05-17T10:49:00.001-07:002013-05-17T10:49:22.522-07:00Versione "Metamorfosi IV, 29 " di Apuleio<br />
<div style="background-color: white; border: 0px; color: #464646; line-height: 1.6em; margin-bottom: 20px; margin-left: 10px; outline: 0px; padding: 0px; vertical-align: baseline;">
<strong style="background-color: transparent; border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><span style="font-family: Arial, Helvetica, sans-serif;">Testo Originale Latino</span></strong></div>
<div style="background-color: white; border: 0px; color: #464646; line-height: 1.6em; margin-bottom: 20px; margin-left: 10px; outline: 0px; padding: 0px; vertical-align: baseline;">
<span style="font-family: Arial, Helvetica, sans-serif;">Sic immensum procedit in dies opinio, sic insulas iam proxumas et terrae plusculum provinciasque plurimas fama porrecta pervagatur. Iam multi mortalium longis itineribus atque altissimis maris meatibus ad saeculi specimen gloriosum confluebant. Paphon nemo, Cnidon nemo ac ne ipsa quidem Cythera ad conspectum deae Veneris navigabant; sacra differuntur, templa deformantur, pulvinaria praetereuntur, caerimoniae negleguntur; incoronata simulacra et arae viduae frigido cinere foedatae. Puellae suplicatur et in humanis vultibus deae tantae numina placantur, et in matutino progressu virginis victimis et epulis Veneris absentis nomen propitiatur, iamque per plateas commeantem populi frequenter floribus sertis et solutis adprecantur. Haec honorum caelestium ad puellae mortalis cultum inmodica translatio verae Veneris vehementer incendit animos et inpatiens indignationis capite quassanti fremens altius sic secum disserit:</span></div>
<div style="background-color: white; border: 0px; color: #464646; line-height: 1.6em; margin-bottom: 20px; margin-left: 10px; outline: 0px; padding: 0px; vertical-align: baseline;">
<br /></div>
<div style="background-color: white; border: 0px; color: #464646; line-height: 1.6em; margin-bottom: 20px; margin-left: 10px; outline: 0px; padding: 0px; vertical-align: baseline;">
<strong style="background-color: transparent; border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><span style="font-family: Arial, Helvetica, sans-serif;">Traduzione Italiana</span></strong></div>
<div style="background-color: white; border: 0px; color: #464646; line-height: 1.6em; margin-bottom: 20px; margin-left: 10px; outline: 0px; padding: 0px; vertical-align: baseline;">
<span style="font-family: Arial, Helvetica, sans-serif;">Così la fama andava crescendo sempre più di giorno in giorno, si spandeva, si diffondeva già nelle vicine isole e anche in moltissime regioni della terra. Già molti dei mortali accorrevano per vedere la nuova meraviglia del secolo compiendo lunghi viaggi e traversando mari profondissimi. Nessuno più navigava verso Pafo, nessuno verso Cnido, e neppure alla stessa Citera in cospetto della dea Venere. I sacrifici si differivano, i templi si spogliavano del loro splendore, si passava senza far caso davanti ai templi, si trascuravano le cerimonie; senza corone erano i simulacri, disadorni gli altari e bruttati di fredda cenere. Si dicevano preghiere alla fanciulla e si voleva implorare la maestà di una dea così grande nel volto umano di quella. Nelle mattutine passeggiate della vergine si propiziava il nome di Venere assente con vittime e banchetti, e ormai, quando ella si aggirava per le piazze, il popolo tutto la pregava intrecciando corone e buttando fiori al suo passaggio. Ma questa irriverente attribuzione di onori celesti al culto di una fanciulla mortale accese di violento sdegno la verace Venere la quale squassando indignata il capo fremente d'indignazione così diceva fra sé:</span></div>
dany27041991http://www.blogger.com/profile/00521762883252590985noreply@blogger.com2tag:blogger.com,1999:blog-9056225403758620615.post-90648825538497004982013-05-17T10:48:00.000-07:002013-05-17T10:48:02.724-07:00Versione "Metamorfosi IV, 28" di Apuleio<br />
<div style="background-color: white; border: 0px; color: #464646; line-height: 1.6em; margin-bottom: 20px; margin-left: 10px; outline: 0px; padding: 0px; vertical-align: baseline;">
<strong style="background-color: transparent; border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><span style="font-family: Arial, Helvetica, sans-serif;">Testo Originale Latino</span></strong></div>
<div style="background-color: white; border: 0px; color: #464646; line-height: 1.6em; margin-bottom: 20px; margin-left: 10px; outline: 0px; padding: 0px; vertical-align: baseline;">
<span style="font-family: Arial, Helvetica, sans-serif;">Erant in quadam civitate rex et regina. Hi tres numero filias forma conspicuas habuere, sed maiores quidem natu, quamvis gratissima specie, idonee tamen celebrari posse laudibus humanis credebantur, at vero puellae iunioris tam praecipua, tam praeclara pulchritudo nec exprimi ac ne sufficienter quidem laudari sermonis humani penuria poterat. Multi denique civium et advenae copiosi, quos eximii spectaculi rumor studiosa celebritate congregabat, inaccessae formonsitatis admiratione stupidi et admoventes oribus suis dexteram primore digito in erectum pollicem residente eam ut ipsam prorsus deam Venerem religiosis venerabantur adorationibus. Iamque proximas civitates et attiguas regiones fama pervaserat deam, quam caerulum profundum pelagi peperit et ros spumantium fluctuum educavit, iam numinis sui passim tributa venia in medias conversari populi coetibus, vel certe rursum novo caelestium stillarum germine non maria, sed terras Venerem aliam virginali flore praeditam pullulasse.</span></div>
<div style="background-color: white; border: 0px; color: #464646; line-height: 1.6em; margin-bottom: 20px; margin-left: 10px; outline: 0px; padding: 0px; vertical-align: baseline;">
<br /></div>
<div style="background-color: white; border: 0px; color: #464646; line-height: 1.6em; margin-bottom: 20px; margin-left: 10px; outline: 0px; padding: 0px; vertical-align: baseline;">
<strong style="background-color: transparent; border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><span style="font-family: Arial, Helvetica, sans-serif;">Traduzione Italiana</span></strong></div>
<div style="background-color: white; border: 0px; color: #464646; line-height: 1.6em; margin-bottom: 20px; margin-left: 10px; outline: 0px; padding: 0px; vertical-align: baseline;">
<span style="font-family: Arial, Helvetica, sans-serif;">Vi erano in una citta' un re e una regina. Questi avevano tre bellissime figliuole. Ma le due piu' grandi, quantunque di aspetto leggiadrissimo, pure era possibile celebrarle degnamente con parole umane; mentre la splendida bellezza della minore non si poteva descrivere, e non esistevano parole per lodarla adeguatamente. lnfatti molti cittadini e molti stranieri che la fama della mirabile visione faceva accorrere ininterrottamente, rimanevano a bocca aperta dalla maraviglia per la inarrivabile bellezza, e mettendo davanti alle labbra la destra, e accostando il dito indice al pollice dritto, la veneravano come si fa nei templi, quasi fosse addirittura Venere in persona. E gia' si era sparsa nelle citta' vicine e nelle regioni confinanti la fama che la dea generata dal ceruleo abisso del mare e nutrita dalla rugiada degli spumeggianti flutti fosse scesa in terra e si aggirasse fra le adunanze del popolo, e che certo da un nuovo germe di stille celesti non piu' i mari ma la terra avesse fatto germogliare un'altra Venere adorna del fiore verginale.</span></div>
dany27041991http://www.blogger.com/profile/00521762883252590985noreply@blogger.com0tag:blogger.com,1999:blog-9056225403758620615.post-81856803031736973292013-05-17T10:46:00.003-07:002013-05-17T10:46:45.525-07:00Versione "I più grandi generali romani della seconda guerra punica" di Apuleio<br />
<div style="background-color: white; border: 0px; color: #464646; line-height: 1.6em; margin-bottom: 20px; margin-left: 10px; outline: 0px; padding: 0px; vertical-align: baseline;">
<strong style="background-color: transparent; border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><span style="font-family: Arial, Helvetica, sans-serif;">Testo Originale Latino</span></strong></div>
<div style="background-color: white; border: 0px; color: #464646; line-height: 1.6em; margin-bottom: 20px; margin-left: 10px; outline: 0px; padding: 0px; vertical-align: baseline;">
<span style="font-family: Arial, Helvetica, sans-serif;">tertìam apud Trasimenum, vastato Flamini exercitu; quartam apud Cannas, deletis duobus ( = "due") exércitibus Pauli consulis. Quem inter Romanos duces Punici belli gloriam sibi vindicantes insigniorem indicare possumus? Utrum Fabium Cunctatorem, qui imminentem urbi Hannibàlem mora fregit, an Marcellum, qui primus Hannibali apud Nolani restìtit et inclinatam eius aciem penìtus trucidavit? Maximam autem gloriam sibi adquisivit Claudius Nero, qui venientem ab Hispania Hasdrubàlem cum ingentibus copiis priusquam se Hannibali ìungéret excepit et ingenti proelio vicit. Num vero omittere possumus Scipionem Africanum, qui in Africani expeditis legionibus devicit totum Poenorum exercitum apud Zamam, quo proelio ab Hannibalis perì**** tandem rem publicam vindicavit?</span></div>
<div style="background-color: white; border: 0px; color: #464646; line-height: 1.6em; margin-bottom: 20px; margin-left: 10px; outline: 0px; padding: 0px; vertical-align: baseline;">
<br /></div>
<div style="background-color: white; border: 0px; color: #464646; line-height: 1.6em; margin-bottom: 20px; margin-left: 10px; outline: 0px; padding: 0px; vertical-align: baseline;">
<strong style="background-color: transparent; border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><span style="font-family: Arial, Helvetica, sans-serif;">Traduzione Italiana</span></strong></div>
<div style="background-color: white; border: 0px; color: #464646; line-height: 1.6em; margin-bottom: 20px; margin-left: 10px; outline: 0px; padding: 0px; vertical-align: baseline;">
<span style="font-family: Arial, Helvetica, sans-serif;">La terza presso il Trasimeno, devastato l'esercito di Flaminio, la quarta presso Canne sconfitti i due eserciti del console Paolo. Quale tra i comandanti tra i romani possiamo indicare il più insigne rivendicando per se stesso la gloria della guerra punica? Forse Fabio Cunctatore, che (cerca fregit mora) Annibale che arrivava alla città, o Marcello che per primo resis***** ad Annibale presso Nola e trucidò quasi completamente la sua schiera? Claudio Nerone acquisì per se stesso la grande gloria che colse Asdrubale che veniva dalla spagna con ingenti truppe prima che si unisse con Annibale e lo vinse in un ingente combattimento. Forse in vero possiamo omettere che Scipione l'Africano, che sconfisse con legioni scelte in africa tutto l'esercito dei cartaginesi presso Zama, nel quale combattimento liberò lo stato dal pericolo di Annibale?</span></div>
dany27041991http://www.blogger.com/profile/00521762883252590985noreply@blogger.com0tag:blogger.com,1999:blog-9056225403758620615.post-53776014452575062912013-05-17T10:45:00.003-07:002013-05-17T10:45:48.456-07:00Versione "Alessandro Magno si fece ritrarre solo da grandi artisti" di Apuleio<br />
<div style="background-color: white; border: 0px; color: #464646; line-height: 1.6em; margin-bottom: 20px; margin-left: 10px; outline: 0px; padding: 0px; vertical-align: baseline;">
<strong style="background-color: transparent; border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><span style="font-family: Arial, Helvetica, sans-serif;">Testo Originale Latino</span></strong></div>
<div style="background-color: white; border: 0px; color: #464646; line-height: 1.6em; margin-bottom: 20px; margin-left: 10px; outline: 0px; padding: 0px; vertical-align: baseline;">
<span style="font-family: Arial, Helvetica, sans-serif;">Alexandro, longe omnium excellentissimo regi, cognomentum Magnus inditum est, ne ille vir gloriosissimus sine laude ominaretur. Nam solus Alexander fortuna sua maior fuit et successus eius amplissimos provocavit, quia maxime strenus fuit. Eius igitus Alexadri multa sublimia facinora sunt, sed unum in primis praeclarum: nam voluit solum Apellem pictorem, solum Lysippum statuarum artificem imaginem suam effiongere, quo certius ea posteris proderetur. Solus Alexander igitur in omnibus imaginibus simillimus est; in omnibus statuis et tabulis idem vigor acerrimi bellatopris, idem ingenium maximi honoris, eadem forma iuventae, eadem gratia cernitus.</span></div>
<div style="background-color: white; border: 0px; color: #464646; line-height: 1.6em; margin-bottom: 20px; margin-left: 10px; outline: 0px; padding: 0px; vertical-align: baseline;">
<br /></div>
<div style="background-color: white; border: 0px; color: #464646; line-height: 1.6em; margin-bottom: 20px; margin-left: 10px; outline: 0px; padding: 0px; vertical-align: baseline;">
<strong style="background-color: transparent; border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><span style="font-family: Arial, Helvetica, sans-serif;">Traduzione Italiana</span></strong></div>
<div style="background-color: white; border: 0px; color: #464646; line-height: 1.6em; margin-bottom: 20px; margin-left: 10px; outline: 0px; padding: 0px; vertical-align: baseline;">
<span style="font-family: Arial, Helvetica, sans-serif;">Ad Alessandro, il più eccellente re di tutti, venne dato il soprannome di Magno, affinchè quell'uomo assai glorioso non fosse nominato senza lode. Non solo Alessandro fu grande per sua sorte ma provocò anche amplissimi successi, poichè fu soprattutto strenue. Vi sono molte azioni dello stesso Alessandro, ma una soprattutto è più famosa: infatti volle che solo il pittore Apelle, l'autore di statue Lisippo ritraesse la sua immagine, affinchè fosse più sicuramente tramandato ai posteri. Solo Alessandro dunque è più simile in tutte le immagini, in tutti le statue e pitture vi è lo stesso vigore di acerrimo guerreggiatore, lo stesso ingegno di grande onore, la stessa forma di gioventù, la stessa grazia dello sguardo</span></div>
dany27041991http://www.blogger.com/profile/00521762883252590985noreply@blogger.com0tag:blogger.com,1999:blog-9056225403758620615.post-63062124673532351602013-05-17T10:44:00.003-07:002013-05-17T10:44:42.365-07:00Versione "Paragrafo 20" di Apuleio<br />
<div style="background-color: white; border: 0px; color: #464646; line-height: 1.6em; margin-bottom: 20px; margin-left: 10px; outline: 0px; padding: 0px; vertical-align: baseline;">
<strong style="background-color: transparent; border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><span style="font-family: Arial, Helvetica, sans-serif;">Testo Originale Latino</span></strong></div>
<div style="background-color: white; border: 0px; color: #464646; line-height: 1.6em; margin-bottom: 20px; margin-left: 10px; outline: 0px; padding: 0px; vertical-align: baseline;">
<span style="font-family: Arial, Helvetica, sans-serif;">Sapientis viri super mensam celebre dictum est:"Prima" inquit "creterra ad sitim pertinet secunda ad hilaritatem tertia ad voluptatem quarta ad insaniam". Verum enimvero Musarum creterra versa vice quanto crebrior quantoque meracior tanto propior ad animi sanitatem. Prima creterra litteratoris rudimento excitat secunda grammatici doctrina instruit tertia rhetoris eloquentia armat. Hactenus a plerisque potatur. Ego et alias creterras Athenis bibi: poeticae comptam geometriae limpidam musicae dulcem dialecticae austerulam iam vero universae philosophiae inexplebilem scilicet et nectaream. Canit enim Empedocles carmina Plato dialogos Socrates hymnos Epicharmus modos Xenophon historias Xenocrates satiras: Apuleius vester haec omnia novemque Musas pari studio colit maiore scilicet voluntate quam facultate.</span></div>
<div style="background-color: white; border: 0px; color: #464646; line-height: 1.6em; margin-bottom: 20px; margin-left: 10px; outline: 0px; padding: 0px; vertical-align: baseline;">
<br /></div>
<div style="background-color: white; border: 0px; color: #464646; line-height: 1.6em; margin-bottom: 20px; margin-left: 10px; outline: 0px; padding: 0px; vertical-align: baseline;">
<strong style="background-color: transparent; border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><span style="font-family: Arial, Helvetica, sans-serif;">Traduzione Italiana</span></strong></div>
<div style="background-color: white; border: 0px; color: #464646; line-height: 1.6em; margin-bottom: 20px; margin-left: 10px; outline: 0px; padding: 0px; vertical-align: baseline;">
<span style="font-family: Arial, Helvetica, sans-serif;">C'è un celebre motto di un filosofo riguardo al banchetto: "La prima coppa (di vino)-così recita- disseta (lett. riguarda la sete), la seconda serve ad essere gioviali, la terza riguarda i sensi, (ma) la quarta ha come scopo la follia!". Il contrario, invece, (avviene) per il nettare delle Muse: quanto più viene versato con frequenza e quanto più è puro, tanto più è adatto (conviene) alla salute dell'anima. Il primo calice (ci) incoraggia, con l'infarinatura del maestro elementare, il secondo (ci) fortifica, con la dottrina del grammatico; la terza (ci) arma, con l'eloquenza propria del retore. Fino a questo punto viene bevuto dalla maggior parte (degli uomini). Io, per quanto mi riguarda, in Atene, ho bevuto anche ad altri calici: quello elegante dell'arte poetica, quello limpido della geometria, quello dolce della musica, quello rigoroso della dialettica e, in ultimo, (mi sono abbeverato al calice) insaziabile, naturalmente - e soave come il nettare – della filosofia universale. Infatti Empedocle compone poemi (filosofici), Platone dialoghi, Socrate inni, Epicarmo poetici ritmi, Senofonte opere storiche e Cratete satire: il vostro Apuleio (invece) coltiva tutti questi generi e venera, con pari passione, le nove Muse: sicuramente con più dedizione che abilità.</span></div>
dany27041991http://www.blogger.com/profile/00521762883252590985noreply@blogger.com0tag:blogger.com,1999:blog-9056225403758620615.post-23822057750212909532013-05-17T10:43:00.000-07:002013-05-17T10:43:11.011-07:00Versione "Androclo e il leone" di Gellio<br />
<div style="background-color: white; border: 0px; color: #464646; line-height: 1.6em; margin-bottom: 20px; margin-left: 10px; outline: 0px; padding: 0px; vertical-align: baseline;">
<strong style="background-color: transparent; border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><span style="font-family: Arial, Helvetica, sans-serif;">Testo Originale Latino</span></strong></div>
<div style="background-color: white; border: 0px; color: #464646; line-height: 1.6em; margin-bottom: 20px; margin-left: 10px; outline: 0px; padding: 0px; vertical-align: baseline;">
<span style="font-family: Arial, Helvetica, sans-serif;">Servo Androclo in circum introducto leo atrocissimus pepercerat; interrogatusque homo hanc rem mirificam narravit: "Ego in Africa inquis domini verberibus ad fugam coactus in arenarum solitudines concessi. Tum, dum sol flagrat, in specum remotam me penetro et recondo. Neque multo post ad specum venit hic leo, debili et cruento pede, gemitus edens et murmura dolorum vulneris significantia. Atque primo quidem conspectu advenientis leonis territus obstupui. Sed postquam leo videt me procul delitescentem, mitis et mansuetus accessit et pedem mihi ostendit ac porrexit. Ibi ego spinam ingentem, vestigio pedis haerentem, revelli, conceptamque saniem vulnere intimo expressi. Leo tunc mea opera et medela levatus, pedem in manibus meis posuit, inde recubuit et quievit; atque ex eo die triennium ego et leo in specu una viximus".</span></div>
<div style="background-color: white; border: 0px; color: #464646; line-height: 1.6em; margin-bottom: 20px; margin-left: 10px; outline: 0px; padding: 0px; vertical-align: baseline;">
<br /></div>
<div style="background-color: white; border: 0px; color: #464646; line-height: 1.6em; margin-bottom: 20px; margin-left: 10px; outline: 0px; padding: 0px; vertical-align: baseline;">
<strong style="background-color: transparent; border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><span style="font-family: Arial, Helvetica, sans-serif;">Traduzione Italiana</span></strong></div>
<div style="background-color: white; border: 0px; color: #464646; line-height: 1.6em; margin-bottom: 20px; margin-left: 10px; outline: 0px; padding: 0px; vertical-align: baseline;">
<span style="font-family: Arial, Helvetica, sans-serif;">Un leone assai feroce aveva risparmiato il servo Androclo introdotto nel circo, interrogato l'uomo narrò questa meravigliosa storia: " Io in africa, costretto dalle percosse del padrone alla fuga, mi nascosi nei deserti delle sabbie. Allora, mentre il sole brucia, entrai e mi nascosi una grotta nascosta. E non molto tempo dopo venne alla grotta questo leone, con una zampa ferita e sanguinante, emettendo un gemito e significativi mormorii dei dolori della ferita. E al primo cospetto del leone che arrivava mi coprìì atterrito. Ma dopo che il leone vide che io mi nascondevo, avanzò mite e mansueto e mi mostrò e porse la zampa. Qui io tolsi una grande spina, che si era conficcata nella pianta del piede, e feci uscire l'infezione che si era formata in fondo alla ferita. Il leone allora sollevato dalla mia opera e dal mio intervento, pose la zampa nelle mie mani, si sdraiò e riposò, e da quel giorno per tre anni io e il leone vivemmo insieme nella stessa grotta.</span></div>
dany27041991http://www.blogger.com/profile/00521762883252590985noreply@blogger.com0