<?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; Utility</title>
	<atom:link href="http://www.miamammausalinux.org/category/software/utility/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>Tue, 27 Jul 2010 12:03:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Approx: Risparmiare banda con i proxy apt</title>
		<link>http://www.miamammausalinux.org/2009/05/approx-risparmiare-banda-con-i-proxy-apt/</link>
		<comments>http://www.miamammausalinux.org/2009/05/approx-risparmiare-banda-con-i-proxy-apt/#comments</comments>
		<pubDate>Fri, 15 May 2009 15:39:45 +0000</pubDate>
		<dc:creator>Marco Bonetti</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Utility]]></category>
		<category><![CDATA[dpkg]]></category>
		<category><![CDATA[Approx]]></category>
		<category><![CDATA[Apt Proxy]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://www.miamammausalinux.org/?p=629</guid>
		<description><![CDATA[Debian e le distribuzioni da lei derivate, utilizzano l&#8217;accoppiata apt-get e dpkg per installare e mantenere aggiornati i programmi. Mentre dpkg si preoccupa di lavorare esclusivamente in locale, scompattanto i pacchetti ed assicurandosi che la loro installazione sia portata a buon fine, è apt-get il vero cavallo da lavoro: si preoccupa di mantenere aggiornati gli [...]]]></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>Debian e le distribuzioni da lei derivate, utilizzano l&#8217;accoppiata apt-get e dpkg per installare e mantenere aggiornati i programmi. Mentre dpkg si preoccupa di lavorare esclusivamente in locale, scompattanto i pacchetti ed assicurandosi che la loro installazione sia portata a buon fine, è apt-get il vero cavallo da lavoro: si preoccupa di mantenere aggiornati gli indici per il reperimento dei pacchetti, calcola e risolve le dipendenze al momento dell&#8217;installazione di un nuovo programma e si preoccupa di scaricare il deb dai repository remoti.<br />
Quest&#8217;ultima azione, il download, può incidere notevolmente sulle performance della rete, specialmente se si è scelto di installare diversi pacchetti (si pensi agli effetti di un <em>apt-get install ubuntu-desktop</em> sopra un Ubuntu base system) e se questa operazione viene effettuata da più di un computer della stessa rete.</p>
<p>Una prima soluzione potrebbe essere quella di tenere un repository locale e scaricare i pacchetti necessari da quel repository, sfortunamente questa soluzione richiede un notevole consumo di spazio ed ogni giorno è necessario scaricare gli aggiornamenti al repository anche se alcuni o tutti dei programmi scaricati non sono necessari.<br />
Per ovviare a questi effetti entrano in gioco i proxy apt: risolvono il problema di consumo di banda tenendo nella cache locale i pacchetti richiesti e sono meglio della presenza di un repository personale in quanto non si devono sprecare spazio e banda per avere tutti i pacchetti salvati nella cache in ogni momento.<br />
La soluzione più semplice per installare un proxy apt è quella di eleggere, se già presente, il proxy della rete a fare anche da proxy per i deb scaricati: da un lato si ha un immediato vantaggio di configurazione, con poche righe uno squid è in grado di tenere in cache pure i pacchetti dei programmi, dall&#8217;altro si hanno delle limitazioni sulla flessibilità di configurazione e sui protocolli supportati per il download dai repository.<br />
Per superare anche queste limitazioni è sufficiente utilizzare un programma dedicato al caching dei deb, quello storico è apt-proxy seguito, in ordine cronologico, da approx, apt-cacher e apt-cacher-ng. In questo articolo parleremo dell&#8217;utilizzo di approx perchè è il più vecchio proxy apt funzionante, in quanto il povero apt-proxy mostra i segni dell&#8217;età non risultando affatto scalabile su larga scala.<br />
Il comportamento dei proxy apt è molto semplice: vengono configurati per fornire la cache di alcuni repository, quando un client li contatta e richiede un pacchetto, i proxy controllano la presenza del pacchetto nella loro cache, se questo manca verrà scaricato dal repository e passato al client altrimenti verrà servita la copia locale, risultando così estremamente veloce e risparmiando un download extra inutile. L&#8217;installazione di approx è immediata:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">root@proxy:~# apt-get install approx</pre></div></div>

<p>una volta finito il processo, si deve editare il file <em>/etc/default/approx</em> solamente nel caso sia necessario fornire al nostro proxy apt&#8230; un proxy per uscire! Per esempio:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># Default settings for approx, included by the /etc/init.d/approx shell script</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Uncomment and edit this definition to have approx use a proxy server</span>
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">http_proxy</span>=il-mio-proxy:porta</pre></div></div>

<p>A questo punto si può procedere alla vera configurazione di approx, il file <em>/etc/approx/approx.conf</em>:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># Here are some examples of remote repository mappings.</span>
<span style="color: #666666; font-style: italic;"># See http://www.debian.org/mirror/list for mirror sites.</span>
&nbsp;
debian          http:<span style="color: #000000; font-weight: bold;">//</span>mi.mirror.garr.it<span style="color: #000000; font-weight: bold;">/</span>mirrors<span style="color: #000000; font-weight: bold;">/</span>debian
security        http:<span style="color: #000000; font-weight: bold;">//</span>security.debian.org<span style="color: #000000; font-weight: bold;">/</span>debian-security
volatile        http:<span style="color: #000000; font-weight: bold;">//</span>volatile.debian.org<span style="color: #000000; font-weight: bold;">/</span>debian-volatile
&nbsp;
<span style="color: #666666; font-style: italic;"># The following are the default parameter values, so there is</span>
<span style="color: #666666; font-style: italic;"># no need to uncomment them unless you want a different value.</span>
<span style="color: #666666; font-style: italic;"># See approx.conf(5) for details.</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#$interface      any</span>
<span style="color: #007800;">$port</span>          <span style="color: #000000;">80</span>
<span style="color: #666666; font-style: italic;">#$max_wait      10</span>
<span style="color: #666666; font-style: italic;">#$max_rate      unlimited</span>
<span style="color: #666666; font-style: italic;">#$user          approx</span>
<span style="color: #666666; font-style: italic;">#$group         approx</span>
<span style="color: #666666; font-style: italic;">#$syslog         daemon</span>
<span style="color: #666666; font-style: italic;">#$pdiffs        true</span>
<span style="color: #666666; font-style: italic;">#$verbose        false</span>
<span style="color: #666666; font-style: italic;">#$debug         false</span></pre></div></div>

<p>La prima sezione specifica a quale nome faranno riferimento i repository proxati, la sintassi è molto semplice:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">nome_repo      url_repo</pre></div></div>

<p>così facendo, all&#8217;indirizzo <strong>http://proxy/nome_repo</strong> risponderà la cache di <strong>url_repo</strong> o, come accade nella prima riga del nostro file di configurazione, <strong>http://proxy/debian/</strong> è una cache per <strong>http://mi.mirror.garr.it/mirrors/debian</strong>.<br />
A questo punto basta modificare il <em>/etc/apt/sources.list</em> delle macchine della propria rete e del proxy stesso, utilizzando i nuovi url:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">http:<span style="color: #000000; font-weight: bold;">//</span>proxy<span style="color: #000000; font-weight: bold;">/</span>debian<span style="color: #000000; font-weight: bold;">/</span>   lenny main contrib non-free
http:<span style="color: #000000; font-weight: bold;">//</span>proxy<span style="color: #000000; font-weight: bold;">/</span>security<span style="color: #000000; font-weight: bold;">/</span>   lenny<span style="color: #000000; font-weight: bold;">/</span>updates main contrib non-free
http:<span style="color: #000000; font-weight: bold;">//</span>proxy<span style="color: #000000; font-weight: bold;">/</span>volatile<span style="color: #000000; font-weight: bold;">/</span>   lenny<span style="color: #000000; font-weight: bold;">/</span>volatile main contrib non-free</pre></div></div>

<p>La seconda sezione, invece, si occupa della gestione delle opzioni di configurazione del comportamento di approx stesso, nel nostro esempio abbiamo configurato come porta di ascolto la 80, al contrario del default storico di apt-proxy: la 9999. Se non avessimo cambiato la configurazione, il proxy avrebbe comunque funzionato ma nei client si doveva configurare esplicitamente la porta di ascolto del server usando, per esempio, una riga come <strong>http://proxy:9999/debian/   lenny main contrib non-free</strong>.<br />
Il proxy è ora in piedi, sta venendo utilizzato dai client e possiamo anche dimenticarci della sua presenza! Se però vogliamo provare a verificare manualmente il suo comportamento, approx ci fornisce due ulteriori programmi che vengono usati esclusivamente da cron per mantenere in forma il proxy ma che il sistemista curioso può provare a lanciare manualmente.<br />
Il primo programma è <strong>update_approx</strong> che viene schedulato come giornaliero al momento dell&#8217;installazione, questo programma si preoccupa di aggiornare la lista e le versioni dei programmi reperibili dai repository remoti.<br />
Il secondo è <strong>gc_approx</strong>, il garbage collector: come dice il nome, questo programma si preoccupa di tenere pulita la cache di approx, eliminando i pacchetti superfli e non più disponibili dai repository remoti. Al momento dell&#8217;installazione questo programma viene schedulato come settimanale.<br />
Credo che valga veramente la pena installare approx o un altro proxy apt: il risparmio di banda è notevole già da quando si utilizzano solo due macchine e la vostra connessione vi ringrazierà <img src='http://www.miamammausalinux.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.miamammausalinux.org/2009/05/approx-risparmiare-banda-con-i-proxy-apt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<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>
