Laboratorio di Amministrazione di Sistemi L-A

Prova pratica del 10 luglio 2007

Descrizione generale del problema

Un generico client (si utilizzi Virtual1 per i test, prevedendo ove opportuno di generalizzare il codice perchè funzioni con qualsiasi client) può accedere alle risorse di calcolo di un server noto (Virtual2) seguendo il protocollo dettagliato di seguito.
  1. Il client inserisce nella directory LDAP sul server la richiesta di eseguire un'elaborazione, specificando oltre al proprio IP il nome del programma ed il nome dell'utente che lo vuole eseguire.
  2. Il server periodicamente controlla se nella directory LDAP sono presenti nuove richieste, e nel caso, per ogni richiesta:
    1. controlla via SNMP se sull'IP registrato nella richiesta è in esecuzione lo script client.sh
    2. se il controllo è positivo:
    3. se il controllo è negativo cancella l'entry LDAP
  3. Il client verifica se la propria entry è stata aggiornata
    1. se il controllo è positivo, viene eseguito il comando sul server via ssh
    2. se il controllo è negativo, viene ripetuto dopo una pausa per un numero stabilito di volte, superato il quale il client termina l'esecuzione.
  4. Il server verifica periodicamente la presenza di entry di età superiore ad una certa soglia, e trovandone fa pulizia di tutto quanto ad esse relativo (eventuali connessioni ssh, abilitazioni all'accesso, possibilità di eseguire programmi, entry LDAP)
Si ipotizzi che:

Componenti da progettare

File da consegnare: richiesta.schema (2) - Schema da inserire nella configurazione della directory LDAP su Virtual2, che definisce gli attributi stato, utente, ip e programma di tipo stringa, timestamp di tipo intero, ed utilizzandoli definisce la classe richiesta.


File da consegnare: client.sh (10)- Questo script, lanciato sul client, realizza l'intera parte client del protocollo. Viene lanciato specificando come parametro (uno ed uno solo) il nome di un programma che il client vuole eseguire sul server, e procede in questo modo:
File da consegnare: snmpd.conf (2) - File di configurazione del demone SNMP di Virtual1 che permetta di osservare se esiste un processo attivo di nome client.sh.


File da consegnare: check.sh (4) - Questo script, lanciato su Virtual2, controlla via SNMP se sulla macchina identificata dall'IP passato sulla riga di comando c'è un processo di nome client.sh attivo, ritornando codice di uscita 0 (true) in tal caso e 1 (false) se invece non rileva il processo.


File da consegnare: serveropen.sh (6) - Questo script, girando senza interruzione su Virtual2:

File da consegnare: serverok.sh (8) - Questo script, lanciato su Virtual2 da serveropen.sh che gli passa sulla riga di comando un IP, un nome utente ed un nome di programma:

File da consegnare: serverclose.sh (8) - Questo script, girando senza interruzione su Virtual2:

Durata della prova: 3 ore

Modalità di consegna

Utilizzare l'interfaccia di gestione dell'esame per caricare indipendentemente ciascuno dei file.

I file devono avere esattamente i nomi specificati nel testo.