Laboratorio
di Amministrazione di Sistemi L-A
Prova pratica - 4 aprile 2007
Una
rete di workstation con indirizzi compresi tra 172.20.2.1 e 172.20.2.14
dispone di un servizio di scambio dati peer-to-peer
organizzato come segue:
- Vengono considerate risorse da scambiare non i singoli file
ma le
directory
- Un server centrale (172.20.2.254) si occupa del censimento
delle risorse,
memorizzando su LDAP i relativi dettagli
- Ogni volta che una workstation vuole rendere disponibile
una directory, ne registra i dati su LDAP
- Quando una workstation necessita di una directory, effettua
una
ricerca su LDAP per determinare le fonti disponibili
- In caso siano disponibili più fonti, la
workstation
richiedente si occuperà di selezionare quella più
adatta
in base a criteri di traffico, passando alle successive in
caso di problemi.
Dettagli
e file da
consegnare:
Tutti gli script sono in
esecuzione sulle workstation, nessuno sul server LDAP, e sono collocati
nella directory /root.
- resource.schema (2)-
definire gli
attributi seguenti:
- dirname
- nome assoluto della directory, ricercabile per sottostringhe
- hostaddr
- indirizzo IP della wokstation che contiene la directory
e le classi dir
e source
che consentano di inserire le entry in modo da formare un
albero a due
livelli, il primo formato dai nomi di directory ed il secondo dagli
indirizzi degli host.
- share.sh
(6)- Comando che accetta come parametro un nome di directory, ne verifica
l'esistenza, deduce l'indirizzo della workstation su cui viene
lanciato, e registra sul server LDAP la disponibilità della
risorsa.
- search.sh (6)- Comando che accetta come
parametro un nome (anche parziale) di directory e ne effettua la
ricerca sul server LDAP
- nel caso trovi più risorse con nomi
compatibili con la chiave di ricerca, ne elenca i nomi
- nel caso trovi un'unica risorsa con nome compatibile con
la chiave di ricerca, mostra il nome completo su standard error ed
elenca su standard output gli indirizzi delle workstation su cui
è reperibile
- init.sh
(4)- Comando che predispone la workstation alla raccolta delle statistiche
di utilizzo:
- configura il packet filter perchè si possa
contare il
traffico complessivo tra la workstation su cui viene lanciato e le
altre workstation (quindi server escluso)
- inserisce nel pianificatore periodico l'esecuzione di stats.sh ogni 5
minuti, nei soli giorni lavorativi tra le 8 e le 19
- stats.sh (4)- Comando che raccoglie sulla
workstation le
statistiche di utilizzo. Ad ogni esecuzione deve inviare al system
logger il valore totale del traffico (input+ouput) generato
dall'attività di scambio file rispetto all'ultima esecuzione
dello script. Utilizzare una
facility/priority
tale che, sul sistema ubuntu standard delle macchine virtuali del
laboratorio, i messaggi vengano inviati al file /var/log/user.log
- get.sh (4)- Comando che accetta come primo
parametro
l'indirizzo IP di una workstatio:n e coreme secondo parametro un nome
completo di directory. Utilizzando ssh e tar effettua un
trasferimento dell'intera directory remota, copiando nella
directory corrente della macchina da cui viene lanciato l'intera
struttura di sottodirectory e file.
- sort.sh (6)- Comando che accetta come
parametri un elenco di
indirizzi IP di workstation, contatta ogni workstation via ssh per
leggere la più recente registrazione di e traffico
dal
log, e restituisce l'elenco di IP ordinato dalla
workstation con traffico meno elevato a quella con traffico più elevato.
- fetch.sh
(8)- Comando che accetta come parametro un nome
completo di directory (quindi che si assume per ipotesi essere unico all'interno di LDAP), ed usando search.sh,
sort.sh
e get.sh
la scarica secondo questo algoritmo:
- individua le fonti disponibili
- tenta il trasferimento dalla workstation con meno traffico
- in caso di fallimento tenta con la successiva workstation in ordine di traffico
- terminati gli indirizzi disponibili, fetch.sh rischedula da capo la
propria esecuzione con un ritardo di 10 minuti, limitando a 5 il numero
di tentativi