<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Mia mamma usa Linux! &#187; Script</title>
	<atom:link href="http://www.miamammausalinux.org/tag/script/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.miamammausalinux.org</link>
	<description>Perché niente è impossibile da capire... Se lo spieghi bene !</description>
	<lastBuildDate>Mon, 02 Jan 2012 11:31:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Loggare una sessione di shell con &#8220;script&#8221;</title>
		<link>http://www.miamammausalinux.org/2009/01/loggare-una-sessione-di-shell-con-script/</link>
		<comments>http://www.miamammausalinux.org/2009/01/loggare-una-sessione-di-shell-con-script/#comments</comments>
		<pubDate>Fri, 16 Jan 2009 11:27:35 +0000</pubDate>
		<dc:creator>Matteo Cappadonna</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Utility]]></category>
		<category><![CDATA[Loggare sessioni]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[Shell]]></category>

		<guid isPermaLink="false">http://www.miamammausalinux.org/?p=325</guid>
		<description><![CDATA[Quante volte è capitato di eseguire un&#8217;operazione, magari per la prima volta, e dimenticarsi completamente di prendere appunti? Lavorando in ambiente sistemistico, se questo avvenimento non è quotidiano, poco ci manca! Ed in genere come risolviamo il problema? Le soluzioni sono due: Scrolling del buffer del terminale: Alt+Pag.Up permettono di rileggere cosa si è fatto; [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.miamammausalinux.org/wp-content/uploads/2009/01/linux.png" alt="linux" width="85" height="100" class="alignnone size-full wp-image-292" /></p>
<p>Quante volte è capitato di eseguire un&#8217;operazione, magari per la prima volta, e dimenticarsi completamente di prendere appunti?</p>
<p>Lavorando in ambiente sistemistico, se questo avvenimento non è quotidiano, poco ci manca!</p>
<p>Ed in genere come risolviamo il problema? Le soluzioni sono due:</p>
<ol>
<li><strong>Scrolling del buffer del terminale</strong>: 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;</li>
<li><strong>Visione della history</strong>: 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&#8217;output dei comandi che abbiamo lanciato.</li>
</ol>
<p>Quello che servirebbe è un software che permetta di eseguire un logging completo (quindi sia dell&#8217;input che immettiamo che dell&#8217;output che viene generato).</p>
<p>Ci viene in aiuto <strong>script</strong>! Tanto semplice quanto funzionale.</p>
<p>Il modo più &#8220;pulito&#8221; per eseguire il comando è il seguente:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ script
Script iniziato, il file è typescript
$</pre></div></div>

<p>Come vedete pare che non sia successo nulla. Ed in effetti possiamo dimenticarci di aver lanciato il comando. Continuiamo pure con il nostro lavoro&#8230;</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ su -
Password:
# pwd
/root
# cd /etc/ssh/
# cat sshd_config | grep PermitRoot
PermitRootLogin yes
# sed -i -e &quot;s/PermitRootLogin yes/PermitRootLogin no/&quot; sshd_config
# cat sshd_config | grep PermitRoot
PermitRootLogin no
# /etc/init.d/ssh restart
* Restarting OpenBSD Secure Shell server sshd                           [ OK ]
# exit
logout
$</pre></div></div>

<p>Semplicemente quando avremo finito la nostra sessione di lavoro, e lanceremo il consueto &#8220;<em>exit</em>&#8220;, avremo un output di questo tipo:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ exit
exit
Script effettuato, il file è typescript</pre></div></div>

<p>Ora, se dovessimo andare a rivedere la nostra sessione, magari per trasformarla in un howto od in un file da tenere sott&#8217;occhio quando tra 6 mesi ci verrà richiesto di fare la stessa cosa, possiamo vedere il contenuto del file &#8220;typescript&#8221; generato da script:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">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 &quot;s/PermitRootLogin yes/PermitRootLogin no/&quot; 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
&nbsp;
Script effettuato su ven 16 gen 2009 12:09:38 CET</pre></div></div>

<p>Alcune opzioni comode di script sono le seguenti:</p>
<ul>
<li><strong>-a</strong> : Appende l&#8217;output ad un file già presente;</li>
<li><strong>-q</strong> : Elimina dall&#8217;output i messaggi di script;</li>
<li><strong>-t</strong> : Aggiunge all&#8217;output l&#8217;indicazione dell&#8217;ora (utile per tenere un timestamp del lavoro)</li>
</ul>
<p>Ovviamente, potete aggiungere a script l&#8217;indicazione del nome del file da salvare:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ script sessioneDiProva.txt
Script iniziato, il file è sessioneDiProva.txt
$</pre></div></div>

<p>Un&#8217;ultima cosa: se si dovesse avere la necessità di seguire in due utenti (remoti) la stessa sessione di shell ma non fosse possibile installare &#8220;<em>screen</em>&#8221; sulla macchina, una soluzione elegante può essere la seguente:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ mkfifo temp; script -f temp</pre></div></div>

<p>Il comando sembrerà appeso, ma nel momento in cui l&#8217;altro utente va ad eseguire un cat sul file, la sessione di script ha inizio e tutti vedono &#8220;live&#8221; la sessione di shell:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ cat temp
Script iniziato su ven 16 gen 2009 12:16:28 CET
$</pre></div></div>

<p>Comodo no?</p>
<p>Buon lavoro.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.miamammausalinux.org/2009/01/loggare-una-sessione-di-shell-con-script/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

