Quante volte è capitato di eseguire un’operazione, magari per la prima volta, e dimenticarsi completamente di prendere appunti? Lavorando in ambiente sistemistico, se questo avvenimento non è quotidiano, poco ci manca! Vediamo allora come possiamo risolvere il problema.
Le soluzioni sono due:
- Scrolling del buffer del terminale: Alt+Pag.Up permettono di rileggere cosa si è fatto; il problema è che il buffer dei terminali è limitato (specialmente se si lavora in ambiente non grafico), e spesso alcune cose si perdono comunque;
- Visione della history: I moderni terminali supportano la history, permettendo così di scorrere nei comandi lanciati e richiamarli velocemente; il problema è che anche visualizzando la history, non abbiamo l’output dei comandi che abbiamo lanciato.
Quello che servirebbe è un software che permetta di eseguire un logging completo (quindi sia dell’input che immettiamo che dell’output che viene generato).
Ci viene in aiuto script! Tanto semplice quanto funzionale.
Il modo più “pulito” per eseguire il comando è il seguente:
$ script Script iniziato, il file è typescript $
Come vedete pare che non sia successo nulla. Ed in effetti possiamo dimenticarci di aver lanciato il comando. Continuiamo pure con il nostro lavoro…
$ su - Password: # pwd /root # cd /etc/ssh/ # cat sshd_config | grep PermitRoot PermitRootLogin yes # sed -i -e "s/PermitRootLogin yes/PermitRootLogin no/" sshd_config # cat sshd_config | grep PermitRoot PermitRootLogin no # /etc/init.d/ssh restart * Restarting OpenBSD Secure Shell server sshd [ OK ] # exit logout $
Semplicemente quando avremo finito la nostra sessione di lavoro, dopo aver lanciato il consueto “exit“, avremo un output di questo tipo:
$ exit exit Script effettuato, il file è typescript
Ora, se dovessimo andare a rivedere la nostra sessione, magari per trasformarla in un howto od in un file da tenere sott’occhio quando tra 6 mesi ci verrà richiesto di fare la stessa cosa, possiamo vedere il contenuto del file “typescript” generato da script:
mcappadonna@laptop ~ $ cat typescript Script iniziato su ven 16 gen 2009 12:08:38 CET $ su - Password: # pwd /root # cd /etc/ssh/ # cat sshd_config | grep PermitRoot PermitRootLogin yes # sed -i -e "s/PermitRootLogin yes/PermitRootLogin no/" sshd_config # cat sshd_config | grep PermitRoot PermitRootLogin no # /etc/init.d/ssh restart * Restarting OpenBSD Secure Shell server sshd [ OK ] # exit logout $ exit exit Script effettuato su ven 16 gen 2009 12:09:38 CET
Alcune opzioni comode di script sono le seguenti:
- -a : Appende l’output ad un file già presente;
- -q : Elimina dall’output i messaggi di script;
- -t : Aggiunge all’output l’indicazione dell’ora (utile per tenere un timestamp del lavoro)
Ovviamente, potete aggiungere a script l’indicazione del nome del file da salvare:
$ script sessioneDiProva.txt Script iniziato, il file è sessioneDiProva.txt $
Un’ultima cosa: se si dovesse avere la necessità di seguire in due utenti (remoti) la stessa sessione di shell ma non fosse possibile installare “screen” sulla macchina, una soluzione elegante può essere la seguente:
$ mkfifo temp; script -f temp
Il comando sembrerà appeso, ma nel momento in cui l’altro utente va ad eseguire un cat sul file, la sessione di script ha inizio e tutti vedono “live” la sessione di shell:
$ cat temp Script iniziato su ven 16 gen 2009 12:16:28 CET $
Comodo no? Buon lavoro!
di Matteo Cappadonna - MiaMammaUsaLinux.org