Amministrazione di reti di calcolatori - Massimo Bertozzi Shell e scripting
Amministrazione di reti di calcolatori - Massimo Bertozzi utilizzo della shell ✗ strumento potente ✗ permette di facilitare l'esecuzione di compiti ripetitivi ✗ varie alternative ✗ sh ✗ bash ✗ (perl)
Amministrazione di reti di calcolatori - Massimo Bertozzi caratteri speciali ✗ carattery jolly: * ? [ ] ✗ background: & ✗ separatore comandi: ; ✗ stringa letterale: ' ✗ stringa con gestione variabili: “ ✗ variabili: $ ✗ acceleratore: ! ✗ gestione output: ` ✗ redirezioni: > < | ✗ sequenza di escape: \
Amministrazione di reti di calcolatori - Massimo Bertozzi metacaratteri ✗ detti anche caratteri jolly ✗ permettono di rappresentare altri caratteri o gruppi di caratteri ✗ *: corrisponde a 0 o piú caratteri qualsiasi ✗ ?: corrisponde ad 1 carattere qualsiasi ✗ []: permettono di definire meglio la corrispondenza ✗ espansi dalla shell (differenza con DOS) ✗ \ per il significato letterale
Amministrazione di reti di calcolatori - Massimo Bertozzi esecuzione in background ✗ solo per programmi non interattivi ✗ permette di liberare il terminale ✗ si termina il comando con & ✗ attenzione ad HUP ✗ nohup
Amministrazione di reti di calcolatori - Massimo Bertozzi Redirezionamento ✗ sh, bash e ksh ✗ stdout > | ✗ stderr 2> ✗ &1 alias stdout ✗ >& o &> bash ✗ >> append ✗ (t)csh ✗ stdout > | ✗ stderr >& |& ✗ >> append ✗ ! dipende dalle impostazioni ✗ Permette di gestire l'output dei programmi ✗ Dipende fortemente dalla shell grep amministrazione < ce_full.log | grep -v forum | awk '{print $1}'|sort|uniq|wc -l
Amministrazione di reti di calcolatori - Massimo Bertozzi Output come argomento ✗ tramite “`” è possibile catturare l'output di un programma ✗ which ls ✗ ls -l `!!` ✗ banner `date|cut -c12-19`
Amministrazione di reti di calcolatori - Massimo Bertozzi shell script ✗ possibilità di creare script complessi ✗ quale shell usare? ✗ sh (default e nostro riferimento) ✗ bash ✗ (t)csh (evitare!) ✗ perl ✗ #!
Amministrazione di reti di calcolatori - Massimo Bertozzi variabili ✗ carattere $ ✗ argomenti: ✗ comando: $0 ✗ argomenti posizionali: $1 - $n ✗ numero argomenti: $# ✗ tutti gli argomenti: $* ✗ variabili con nome ✗ var1=... (attenzione agli spazi) ✗ export var1 ✗ read ✗ codice di ritorno: $? -> exit
Amministrazione di reti di calcolatori - Massimo Bertozzi ciclo for ✗ for variabile ✗ in lista-valori ✗ do ✗ comando 1 ✗ comando 2 ✗... ✗ done
Amministrazione di reti di calcolatori - Massimo Bertozzi ciclo while ✗ while ✗ comando1 ✗ comando2 ✗... ✗ do ✗ comando 1a ✗ comando 2a ✗... ✗ done
Amministrazione di reti di calcolatori - Massimo Bertozzi if then else ✗ if ✗ comando1 ✗... ✗ then ✗ comando 1a ✗... ✗ else ✗ comando 1b ✗... ✗ fi
Amministrazione di reti di calcolatori - Massimo Bertozzi test ✗ utile in accoppiata con if ✗ test -r ✗ test -w ✗ test -x ✗ test -s ✗ test var1 -eq var2 ✗... ✗ sostituibile con [ ] (attenzione agli spazi)
Amministrazione di reti di calcolatori - Massimo Bertozzi funzioni ✗ sintassi semplice ✗ nomefunzione () { ✗ corpofunzione ✗ } ✗ si invocano con ✗ nomefunzione
Amministrazione di reti di calcolatori - Massimo Bertozzi espressioni ✗ expr ✗ sia espressioni logiche che matematiche ✗ expr ✗ expr $a + $b
Amministrazione di reti di calcolatori - Massimo Bertozzi debug ✗ errori di interpretazione ✗ echo ✗ opzione -x
Amministrazione di reti di calcolatori - Massimo Bertozzi comandi utili ✗ awk ✗ sed ✗ tr ✗ grep ✗...
Amministrazione di reti di calcolatori - Massimo Bertozzi awk ✗ sistema per l'analisi di informazioni testuali ✗ analisi di linee ✗ ricerca sequenze ✗ sequenza – azione ✗ awk ✗ ; cat /etc/shadow | awk -F: '{print $1, $2}'
Amministrazione di reti di calcolatori - Massimo Bertozzi awk – azioni di output ✗ legge una riga (record) per volta $0 ✗ divisione in campi $1, $2,..., $n ✗ spazio come separatore predefinito ✗ comandi di output ✗ print,,... ✗ printf,,,...
Amministrazione di reti di calcolatori - Massimo Bertozzi awk - sequenze ✗ operatori ==, >, <,... ✗ espressioni regolari tra / / (o anche “) ✗ operatori ~ e !~ ✗ operatori logici && || ✗ sequenze speciali BEGIN END ✗ intervalli di sequenze ✗ awk -F: 'BEGIN {print “UTENTI ATTIVI\n”> “l.txt”} \ ✗ $2 !~ {print $1>” l.txt”}' /etc/passwd
Amministrazione di reti di calcolatori - Massimo Bertozzi awk – variabili ✗ NR numero di linea di input ✗ NF numero di campi ✗ possibile definirne di proprie
Amministrazione di reti di calcolatori - Massimo Bertozzi awk – funzioni avanzate ✗ funzioni predefinite ✗ costrutti per il controllo di flusso ✗ funzioni definite dall'utente ✗ array ✗ output su file
Amministrazione di reti di calcolatori - Massimo Bertozzi l'editor sed ✗ editor non interattivo di riga ✗ da stdin o file a stdout ✗ operazioni comuni ✗ sostituisci -> sed 's/2004/2005/' < /tmp/listino.txt ✗ g per globale ✗ d cancella -> sed '/^$/d' /tmp/testo.txt ✗ p stampa -> sed '/Costo/p' < /tmp/fatture.txt
Amministrazione di reti di calcolatori - Massimo Bertozzi altri esempi sed 8d Cancella l'ottava riga dell'input. /^$/d Cancella tutte le righe vuote. 1,/^$/d Cancella dall'inizio dell'input fino alla prima riga vuota compresa. /Jones/p Visualizza solo le righe in cui è presente "Jones" (con l'opzione -n). s/Windows/Linux/ Sostituisce con "Linux" la prima occorrenza di "Windows" trovata in ogni riga dell'input. s/BSOD/stabilità/g Sostituisce con "stabilità" tutte le occorrenze di "BSOD" trovate in ogni riga dell'input. s/ *$// Cancella tutti gli spazi che si trovano alla fine di ogni riga. s/00*/0/g Riduce ogni sequenza consecutiva di zeri ad un unico zero. /GUI/d Cancella tutte le righe in cui è presente "GUI". s/GUI//g Cancella tutte le occorrenze di "GUI", lasciando inalterata la parte restante di ciascuna riga.