Prova intercorso - ICAR
Transcript
Prova intercorso - ICAR
Prova intercorso labos 2010/2011 Gruppo 2 Nome: Valutazione Cognome: Parte a: /10 Matricola: Parte b: /10 Email: Parte c: /10 Parte a (10 punti) Supponendo che nella directory corrente si posseggano i permessi di lettura scrittura ed esecuzione e che non esistano directory denominate uno e due ignorando lo standard error si scriva lo standard output dei seguenti comandi (0.5 punti ciascuno): a1) mkdir uno && chmod a-r uno && mkdir uno/uno && \ touch uno/uno/uno && cat uno/uno/uno && echo uno a2) mkdir due && chmod a-x due && mkdir due/due || \ echo due.1 && touch due/due/due && echo due.2 Supponendo che nella directory corrente ci siano i seguenti file: INSTALL Makefile Makefile.am Makefile.in README aux.c core input.c main.c main.o functions.h si scriva l'output dei seguenti comandi (0.5 punti ciascuno) a3) ls|grep '.c' a6) ls|grep '^[[:upper:]]'|wc -l a4) ls|grep '[ux]' a7) ls|sed 's/put/get/'|grep get a5) ls|grep '[[:upper:]]*'|wc -l a8) ls|sed 's/a\(.*\)n/a\1\1n/' Si scriva un comando per ognuno dei seguenti obiettivi (0.5 punti ciascuno): a9) rimuovere tutti i file che hanno estensione di 3 caratteri di cui l'ultimo carattere è una cifra (es. song.mp3, archivio.tar.bz2, …) a10) rimuovere tutti i file il cui nome non inizia con un cifra a11) contare le righe di un file che iniziano per una vocale a12) visualizzare le righe di un file che iniziano con due o più cifre consecutive o con una vocale ed una cifra utilizzando grep ed una singola espressione regolare (1.5 punti ciascuno) a13) scrivere nel file mytmpfiles nella home directory dell'utente l'elenco di file regolari di proprietà dell'utente contenuti nella directory /tmp, il comando deve funzionare a prescindere dal nome utente e dalla directory corrente, supponendo che l'output di ls -l abbia il seguente formato: total 48 -rw-rw---- 1 granger gryffindor 3540 Jul 16 2009 avis -rw-rw---- 1 potter gryffindor 3680 Sep 23 2009 confringo -rw-rw---- 1 malfoy slytherins 5194 Feb 16 13:46 densaugeo -rw-rw---- 1 rweasley gryffindor 906 May 5 2009 descendo -rw------- 1 crabbe slytherins 21302 May 5 2009 fiendfyre_curse drwx------ 4 dumbledore gryffindor 4096 Sep 23 2009 secret_spells a14) stampare le matricole degli studenti file matricole nei formati: N86113 N86000100 N86\113 N8633 N86000034 N86\132 566127 566000033 566/44 566\255 nel formato modificato: N86/113 … 566/255 (1 punto) a15) Si scriva un comando che conti le occorrenze del basename di un file (la parte prima del punto o il nome del file se non c'è il punto). Esempio se nella directory ci sono i seguenti file: hello main.c main.i main.o main.s Makefile Makefile.am Makefile.in il comando produrrà un output del tipo 1 hello 4 main 3 Makefile Parte b (10 punti) (6 punti) Si realizzi uno script che accetta come argomento sulla linea di comando due parametri: una parola chiave ed il nome di un file. A seconda della parola chiave passata lo script visualizza l'elenco di file memorizzati nella directory corrente con le caratteristiche specificate: Parola chiave Caratteristiche newer file con data di ultima modifica successiva a quella del file passato come argomento older file con data di ultima modifica antecedente a quella del file passato come argomento larger file con dimensione maggiore di quella del file specificato come argomento smaller file con dimensione maggiore di quella del file specificato come argomento Lo script dovrà verificare gli argomenti passati a linea di comando (numero di argomenti, esistenza del file, validità parola chiave). Si supponga che nella directory corrente ci sono solo file regolari. (4punti) Si realizzi uno script che stampi a video la somma degli interi passati come argomento sulla linea di comando fino ad arrivare ad una massima di 100 ed in caso venga superato questo limite stampi la frase. La somma e' maggiore di 100 Parte c (10 punti) Si supponga di avere un file che registra gli accessi ad un server ftp con il seguente formato IP Ora:Min Giorno-Mese-Anno utente file byte come nel seguente esempio: #April 2011 79.22.211.129 10:30 21-04-2011 636151808 debian-6.0.1a-amd64-CD-9.iso 95.246.144.13 11:15 22-04-2011 677017600 debian-6.0.1a-amd64-CD-1.iso 192.168.1.10 10:30 25-04-2011 677017600 debian-6.0.1a-amd64-CD-1.iso 192.168.1.11 20:13 26-04-2011 677017600 debian-6.0.1a-amd64-CD-1.iso 95.246.144.13 22:47 26-04-2011 677017600 debian-6.0.1a-amd64-CD-1.iso 95.246.144.13 23:32 26-04-2011 671174656 debian-6.0.1a-amd64-CD-2.iso #May 2011 95.246.144.13 00:15 02-05-2011 679342080 debian-6.0.1a-amd64-CD-3.iso Si realizzi un programma awk che, ignorando i delimitatori mensili (linee che iniziano con #), processi il file di log riportando: • il numero di gigabyte scaricati in totale (escludendo gli host con indirizzo 192.168.1.X) • i gigabyte scaricati da indirizzi IP diversi da 192.168.1.X • il file più scaricato in assoluto (vanno conteggiati anche i download effettuati da indirizzi 192.168.1.X) Suggerimento 1Gigabyte = 230 Byte Nel caso in esempio l'output dello script è: Traffico totale 3.11127 GB Traffico verso IP esterni: 95.246.144.13 2.51881 GB 79.22.211.129 0.592463 GB File più scaricato debian-6.0.1a-amd64-CD-1.iso (4 volte)