Nome file
|
Testo
|
estensioni.sh
|
Contare
quanti file
esistono con una certa estensione,
definita come la stringa posta dopo l'ultimo carattere "punto" presente
nel nome del file, per tutte le estensioni trovate nei file presenti
nel direttorio passato come parametro sulla riga di comando e
sottodirettori. Limitare l'output alle sole 5 estensioni più
numerose.
|
estparam.sh
|
Modificare
l'esercizio precedente per contare quanti file
esistono con una certa estensione, limitatamente all'elenco di
estensioni passate
come parametri sulla riga di comando
|
iscritti.sh
|
Questo comando deve
accettare un nome di file come parametro. Tale file deve contenere un
elenco di righe nella forma nome spazio
cognome. La prima parte dell'output dello script deve essere l'elenco
in ordine alfabetico delle lettere iniziali dei cognomi trovate nel
file, ciascuna seguita da due numeri: il primo deve riportare quanti
cognomi iniziano con tale lettera, il secondo quanti cognomi sono stati
elaborati fino a quel momento. Es:
A 10 10
B 4 14
C 7 21
...
Al termine, lo script deve indicare a quale lettera corrisponde il
superamento della metà dei presenti, ad esempio se il risultato
è "L" significa che tra A e K ci sono meno della metà dei
cognomi mentre tra A ed L più della metà o esattamente la
metà.
|
motd.sh
|
Questo script deve
inviare, per posta elettronica, a tutti gli utenti del sistema, ogni
giorno lavorativo alle 9 di mattina, il contenuto del file di testo
/etc/motd. In caso di fallimento nell'invio ad un utente, deve
ritentare dopo 10 minuti, e continuare a tentare ogni 10 minuti
finchè l'invio non ha successo o finchè non raggiunge un
massimo stabilito in 20 tentativi (per utente).
È possibile risolvere l'esercizio predisponendo script ausiliari
richiamati dallo script principale. Se si sceglie questa strada,
chiamare gli script secondari motd1.sh, motd2.sh, ecc...
|
presenze.schema
ldapgrow.sh
findabs.sh
|
Prima di iniziare
può tornare utile questo piccolissimo prontuario.
L'esercizio prevede 4 passi:
- includere lo schema studenti nel server LDAP
come fatto in laboratorio e popolare la directory di studenti di test
(vedi istruzioni)
- definire (nel file presenze.schema) una
classe labammreti che
contenga due attributi: dataUltimaPresenza
di tipo stringa e numeroPresenze
di tipo numerico. ATTENZIONE all'unicità degli OID, usate numeri
simili a quelli contenuti nello schema studenti incrementando l'ultima
cifra
- (file ldapgrow.sh) leggere tutte le entry dalla
directory LDAP installata sulle macchine virtuali (uml), e sostituire
nella directory ogni entry che eredita dalla classe studente con una nuova entry che
erediti anche dalla classe labammreti
e che abbia i nuovi attributi inizializzati a zero
- variante: ...e se labammreti discendesse da
studente anzichè da top?
- (file findabs.sh) stampare a video nome e
cognome di tutti gli studenti per cui l'attributo numeroPresenze
è minore di 3.
|
usermon.sh
|
Monitorare
continuamente il sistema e avvertire immediatamente root (vedere la man
page del comando mail) appena
un
utente specificato come argomento lancia un nuovo processo.
L'avvertimento deve essere inviato solo una volta per ogni nuovo
processo individuato.
|
sshnum.sh
|
Visualizzare
il numero di processi in esecuzione su una macchina remota il cui nome
sia passato come argomento
|
sshload.sh
|
Dato
un file di nome "lista" che contiene un nome di macchina in ciascuna
riga,
visualizzare il nome di quella che ha meno processi che girano |
sshsort.sh
|
Dato
un file di nome "testo" sulla macchina locale, composto da 1 parola per
ogni riga, lo si faccia
remotamente ordinare alla macchina che ha meno processi in esecuzione
tra quelle elencate nel file "lista"
|
iptlog1.sh
|
Fare
il log del
traffico diretto alla porta 631 della propria macchina.
|
iptlog2.sh
|
Fare
il log del
traffico diretto alla porta 631 della propria macchina che non sia
proveniente dalla macchina stessa.
|
iptping.sh
|
Dato
un file di nome
"elenco" contentente diversi IP (uno per riga), e dato sulla riga di
comando un parametro "durata" espresso in secondi, produrre uno
script che consenta di far funzionare i ping diretti dalla propria macchina
verso
una qualunque delle macchine presenti in "elenco" per un tempo “durata”
dalla partenza dello script. Normalmente i ping in uscita devono essere
bloccati, mentre deve essere sempre consentito che qualunque macchina
remota possa pingare la propria.
|
super1.sh
|
Costruire
uno script
che appena lanciato impedisca a chiunque di accedere da remoto via ssh,
e rimanga in esecuzione per monitorare l’arrivo di ping da macchine remote.
All'arrivo di un ping da una
macchina "m"
consenta alla macchina "m" stessa di accedere alla nostra macchina via
ssh.
|
super2.sh
|
Modificare
lo script
precedente in modo che, senza mai fermarsi, osservi i tutti i ping in
arrivo, chiudendo l'accesso ssh alla macchina "m" alla ricezione di un
ping successivo a quello che aveva richiesto l'apertura dell'accesso.
Il sistema deve essere multiuser, cioè deve gestire
correttamente le richieste provenienti da una molteplicità di
macchine.
|
super3.sh
|
Modificare
lo script
precedente in modo che, se una macchina ha avuto accesso ssh in seguito
ad un ping, l'accesso venga automaticamente revocato (anche se non
arriva un altro ping) se tale macchina non produce traffico ssh per
"durata" secondi.
|
toctoc.sh
chie.sh
|
Il primo script, toctoc.sh, deve usare ssh per
depositare nella directory /tmp/ di una macchina remota (da specificare
sulla riga di comando) un file che abbia come nome l'IP address della
macchina su cui gira lo script, e che contenga un numero di porta TCP
(anch'esso specificato, come secondo parametro, sulla riga di comando),
mantenendo
poi la connessione ssh per almeno un minuto.
Esempio, sulla
macchina 10.1.1.1 lancio "toctoc.sh 10.2.2.2 80": viene creato sulla
macchina 10.2.2.2 un file di nome /tmp/10.1.1.1 che contiene 80
Il secondo script è pensato per girare sul server che riceve la
connessione lanciata dal primo. Tale server deve agire da
router/firewall, bloccando mormalmante tutto il traffico che tenti di
attraversarlo.
Lo script chie.sh deve
verificare senza mai fermarsi, ogni 5 secondi, la presenza di
connessioni ssh al server, verificare la presenza di file inviati da
client "toctoc" e la loro corrispondenza con le connessioni ssh
rilevate, e nel caso ne trovi deve:
1) inserire una regola nel packet filter che consenta al client di
attraversare il server solo per connettersi alla porta remota
specificata nel file. Porre attenzione alla direzione delle connessioni.
2) cancellare il file creato dal client e disconnettere forzatamente la
connessione ssh agendo sul server sshd
|
snmpd.conf
manager.sh
|
Configurare il
demone (agent) SNMP di Linux perchè invii una trap ad un manager
collocato all'indirizzo 127.0.0.1 quando lo spazio libero sulla
partizione / scende al di sotto di una certa soglia.
Scrivere una bozza di manager in grado di intercettare la trap e
stamparne a video il contenuto.
|