<?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>Banana Docet!</title>
	<atom:link href="http://www.bananadocet.com/index.php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.bananadocet.com</link>
	<description>Appunti tecnici di un programmatore impazzito ...</description>
	<lastBuildDate>Wed, 11 Apr 2012 15:03:28 +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>Non salvare i comandi su .bash_history</title>
		<link>http://www.bananadocet.com/index.php/2012/04/non-salvare-i-comandi-su-bash_history/</link>
		<comments>http://www.bananadocet.com/index.php/2012/04/non-salvare-i-comandi-su-bash_history/#comments</comments>
		<pubDate>Wed, 11 Apr 2012 15:03:28 +0000</pubDate>
		<dc:creator>Gioachino Bartolotta</dc:creator>
				<category><![CDATA[bash]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[console]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[shell scripting]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[tricks]]></category>

		<guid isPermaLink="false">http://www.bananadocet.com/?p=620</guid>
		<description><![CDATA[Premesso che tutto questo è solo a scopo informativo/educativo, oggi vi do un semplice trick per evitare di loggare sulla history dei comandi della vostra bash. Piuttosto che utilizzare metodi barbari tipo rimuovere il file .bash_history dalla home dell&#8217;utente, basterà digitare da console: export HISTFILE=/dev/null Una volta eseguito il comando, tutti i comandi editati in [...]]]></description>
			<content:encoded><![CDATA[<p>Premesso che tutto questo è solo a scopo informativo/educativo, oggi vi do un semplice trick per evitare di loggare sulla history dei comandi della vostra bash.<br />
Piuttosto che utilizzare metodi barbari tipo rimuovere il file .bash_history dalla home dell&#8217;utente, basterà digitare da console:</p>
<div class="codesnip-container" >
<div class="bash codesnip" style="font-family:monospace;"><span class="kw3">export</span> <span class="re2">HISTFILE</span>=<span class="sy0">/</span>dev<span class="sy0">/</span>null</div>
</div>
<p>Una volta eseguito il comando, tutti i comandi editati in quella sessione non verranno salvati.</p>
<p>Semplice ed efficace &#8230; </p>
]]></content:encoded>
			<wfw:commentRss>http://www.bananadocet.com/index.php/2012/04/non-salvare-i-comandi-su-bash_history/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Impostare java tramite update-alternatives</title>
		<link>http://www.bananadocet.com/index.php/2012/04/impostare-java-tramite-update-alternatives/</link>
		<comments>http://www.bananadocet.com/index.php/2012/04/impostare-java-tramite-update-alternatives/#comments</comments>
		<pubDate>Thu, 05 Apr 2012 13:57:04 +0000</pubDate>
		<dc:creator>Gioachino Bartolotta</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.bananadocet.com/?p=614</guid>
		<description><![CDATA[Stavolta ci troviamo di fronte al dilemma di aver installato la Java Virtual Machine su una macchina (CentOS 6 nel nostro caso) dove non ce ne era installata nessuna e ci serve che sia definito globalmente nel path l&#8217;eseguibile java. Per ottenere questo risultato dovremo utilizzare il comando update-alternatives, tramite il quale, per prima cosa [...]]]></description>
			<content:encoded><![CDATA[<p>Stavolta ci troviamo di fronte al dilemma di aver installato la Java Virtual Machine su una macchina (CentOS 6 nel nostro caso) dove non ce ne era installata nessuna e ci serve che sia definito globalmente nel path l&#8217;eseguibile java.</p>
<p>Per ottenere questo risultato dovremo utilizzare il comando update-alternatives, tramite il quale, per prima cosa gli diciamo di configurare un link che si appoggerà al nostro eseguibile e di conseguenza ce lo renderà disponibile.</p>
<p>La sintassi è davvero molto semplice.</p>
<div class="codesnip-container" >
<div class="bash codesnip" style="font-family:monospace;">update-alternatives <span class="re5">&#8211;install</span> <span class="st0">&quot;/usr/bin/java&quot;</span> <span class="st0">&quot;java&quot;</span> <span class="st0">&quot;/usr/java/latest/bin/java&quot;</span> 1<br />
update-alternatives <span class="re5">&#8211;install</span> <span class="st0">&quot;/usr/bin/javac&quot;</span> <span class="st0">&quot;javac&quot;</span> <span class="st0">&quot;/usr/java/latest/bin/javac&quot;</span> 1<br />
update-alternatives <span class="re5">&#8211;install</span> <span class="st0">&quot;/usr/bin/javaws&quot;</span> <span class="st0">&quot;javaws&quot;</span> <span class="st0">&quot;/usr/java/latest/bin/javaws&quot;</span> <span class="nu0">1</span></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.bananadocet.com/index.php/2012/04/impostare-java-tramite-update-alternatives/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Monitorare le interfacce di rete tramite bash script e RRD</title>
		<link>http://www.bananadocet.com/index.php/2012/02/monitorare-le-interfacce-di-rete-tramite-bash-script-e-rrd/</link>
		<comments>http://www.bananadocet.com/index.php/2012/02/monitorare-le-interfacce-di-rete-tramite-bash-script-e-rrd/#comments</comments>
		<pubDate>Fri, 24 Feb 2012 15:26:27 +0000</pubDate>
		<dc:creator>Gioachino Bartolotta</dc:creator>
				<category><![CDATA[bash]]></category>
		<category><![CDATA[Gestione Server]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Monitoring]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[gentoo]]></category>
		<category><![CDATA[grep]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[monitoring]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[shell scripting]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://www.bananadocet.com/?p=598</guid>
		<description><![CDATA[Oggi vedremo una semplice tecnica per monitorare il traffico sulle interfacce di rete utilizzando degli script in bash e interfacciarli con RRD (Round Robin Database) per ottenere dei grafici sull&#8217;andamento del traffico. Non entreremo molto nel dettaglio, ma questi scripts possono essere caricati su qualunque server Linux che abbia installato a bordo rrdtool. Come prima [...]]]></description>
			<content:encoded><![CDATA[<p>Oggi vedremo una semplice tecnica per monitorare il traffico sulle interfacce di rete utilizzando degli script in bash e interfacciarli con RRD (Round Robin Database) per ottenere dei grafici sull&#8217;andamento del traffico.</p>
<p>Non entreremo molto nel dettaglio, ma questi scripts possono essere caricati su qualunque server Linux che abbia installato a bordo rrdtool.</p>
<p>Come prima cosa creiamo uno script che ci crei la struttura della nostra applicazione.</p>
<div class="codesnip-container" >
<div class="bash codesnip" style="font-family:monospace;"><span class="kw2">vim</span> <span class="sy0">/</span>usr<span class="sy0">/</span>local<span class="sy0">/</span>bin<span class="sy0">/</span>setupRRDInterface.sh</div>
</div>
<p>Il codice al suo interno sarà:</p>
<div class="codesnip-container" >
<div class="bash codesnip" style="font-family:monospace;"><span class="co0">#!/bin/bash</span><br />
<span class="re2">DB_PATH</span>=<span class="st0">&quot;/usr/local/rrd&quot;</span> <span class="co0"># Percorso base del nostro applicativo</span><br />
<span class="co0"># Ricaviamoci le interfacce di rete presenti sul sistema</span><br />
<span class="re2">ARR</span>=<span class="sy0">`</span><span class="kw2">ifconfig</span> <span class="sy0">|</span> <span class="kw2">awk</span> <span class="re5">-F</span> <span class="st0">&quot; &quot;</span> <span class="st_h">&#8216;{ print $1 }&#8217;</span> <span class="sy0">|</span> <span class="kw2">grep</span> <span class="re5">-v</span> <span class="st0">&quot;^$&quot;</span><span class="sy0">`</span></p>
<p><span class="re2">INTERFACES</span>=<span class="br0">&#40;</span><span class="sy0">`</span><span class="kw3">echo</span> <span class="re5">-e</span> <span class="re1">$ARR</span><span class="sy0">`</span><span class="br0">&#41;</span><br />
<span class="re2">FILEIMG</span>=<span class="re1">$DB_PATH</span><span class="sy0">/</span>images<br />
<span class="re2">FILEIMG_HOUR</span>=<span class="re1">$FILEIMG</span><span class="sy0">/</span>hour<br />
<span class="re2">FILEIMG_DAY</span>=<span class="re1">$FILEIMG</span><span class="sy0">/</span>day<br />
<span class="re2">FILEIMG_WEEK</span>=<span class="re1">$FILEIMG</span><span class="sy0">/</span>week<br />
<span class="re2">FILEIMG_MONTH</span>=<span class="re1">$FILEIMG</span><span class="sy0">/</span>month<br />
<span class="re2">FILEIMG_YEAR</span>=<span class="re1">$FILEIMG</span><span class="sy0">/</span>year<br />
<span class="re2">CARTELLE</span>=<span class="br0">&#40;</span><span class="re1">$DB_PATH</span> <span class="re1">$FILEIMG_HOUR</span> <span class="re1">$FILEIMG_DAY</span> <span class="re1">$FILEIMG_WEEK</span> <span class="re1">$FILEIMG_MONTH</span> <span class="re1">$FILEIMG_YEAR</span><span class="br0">&#41;</span></p>
<p><span class="kw3">echo</span> <span class="st0">&quot;Creazione cartelle &#8230;&quot;</span><br />
<span class="kw1">for</span> x <span class="kw1">in</span> <span class="st0">&quot;<span class="es3">${CARTELLE[@]}</span>&quot;</span><br />
<span class="kw1">do</span><br />
<span class="kw1">if</span> <span class="br0">&#91;</span> <span class="sy0">!</span> <span class="re5">-d</span> <span class="re1">$x</span> <span class="br0">&#93;</span><br />
<span class="kw1">then</span><br />
<span class="kw2">mkdir</span> <span class="re5">-p</span> <span class="re1">$x</span><br />
<span class="kw1">fi</span><br />
<span class="kw1">done</span></p>
<p><span class="co0"># Adesso per ognuna delle interfacce creeremo un file rrd dove caricheremo le informazioni.</span><br />
<span class="kw3">echo</span> <span class="st0">&quot;Creazione Files rrd &#8230; &quot;</span><br />
<span class="kw1">if</span> <span class="br0">&#91;</span> <span class="co1">${#INTERFACES[@]}</span> <span class="re5">-gt</span> 0 <span class="br0">&#93;</span><br />
<span class="kw1">then</span></p>
<p><span class="kw1">for</span> interface <span class="kw1">in</span> <span class="st0">&quot;<span class="es3">${INTERFACES[@]}</span>&quot;</span><br />
<span class="kw1">do</span><br />
<span class="kw3">echo</span> <span class="re1">$interface</span></p>
<p><span class="kw1">if</span> <span class="br0">&#91;</span> <span class="sy0">!</span> <span class="re5">-e</span> <span class="re1">$DB_PATH</span><span class="sy0">/</span><span class="re1">$interface</span>.rrd <span class="br0">&#93;</span><br />
<span class="kw1">then</span><br />
<span class="kw3">echo</span> <span class="st0">&quot;Creo file RRD per <span class="es2">$interface</span>&quot;</span><br />
rrdtool create <span class="re1">$DB_PATH</span><span class="sy0">/</span><span class="re1">$interface</span>.rrd \<br />
DS:<span class="kw1">in</span>:DERIVE:600:0:12500000 \<br />
DS:out:DERIVE:600:0:12500000 \<br />
RRA:AVERAGE:0.5:1:576 \<br />
RRA:AVERAGE:0.5:6:672 \<br />
RRA:AVERAGE:0.5:24:732 \<br />
RRA:AVERAGE:0.5:144:1460<br />
<span class="kw1">else</span><br />
<span class="kw3">echo</span> <span class="st0">&quot;Il file RRD per <span class="es2">$interface</span> ESISTE!&quot;</span><br />
<span class="kw1">fi</span><br />
<span class="kw1">done</span><br />
<span class="kw1">fi</span></div>
</div>
<p>Adesso ci creiamo uno script che legga il traffico dalle interfacce e lo riporti nei rispettivi databases.</p>
<div class="codesnip-container" >
<div class="bash codesnip" style="font-family:monospace;"><span class="kw2">vim</span> <span class="sy0">/</span>usr<span class="sy0">/</span>local<span class="sy0">/</span>bin<span class="sy0">/</span>collectInterfaceData.sh</div>
</div>
<p><script type="text/javascript"><!--
google_ad_client = "ca-pub-8923523108033341";
/* 300_250 */
google_ad_slot = "5574097654";
google_ad_width = 300;
google_ad_height = 250;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<div class="codesnip-container" >
<div class="bash codesnip" style="font-family:monospace;"><span class="co0">#!/bin/sh</span><br />
<span class="re2">MAILTO</span>=<span class="st0">&quot;&quot;</span><br />
<span class="re2">DB_PATH</span>=<span class="st0">&quot;/usr/local/rrd&quot;</span><br />
<span class="re2">ARR</span>=<span class="sy0">`</span><span class="kw2">ifconfig</span> <span class="sy0">|</span> <span class="kw2">awk</span> <span class="re5">-F</span> <span class="st0">&quot; &nbsp; &quot;</span> <span class="st_h">&#8216;{ print $1 }&#8217;</span> <span class="sy0">|</span> <span class="kw2">grep</span> <span class="re5">-v</span> <span class="st0">&quot;^$&quot;</span><span class="sy0">`</span></p>
<p><span class="re2">INTERFACES</span>=<span class="br0">&#40;</span><span class="sy0">`</span><span class="kw3">echo</span> <span class="re5">-e</span> <span class="re1">$ARR</span><span class="sy0">`</span><span class="br0">&#41;</span></p>
<p><span class="kw1">if</span> <span class="br0">&#91;</span> <span class="co1">${#INTERFACES[@]}</span> <span class="re5">-gt</span> 0 <span class="br0">&#93;</span><br />
<span class="kw1">then</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span> interface <span class="kw1">in</span> <span class="st0">&quot;<span class="es3">${INTERFACES[@]}</span>&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">do</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re2">IN</span>=<span class="sy0">`/</span>sbin<span class="sy0">/</span><span class="kw2">ifconfig</span> <span class="re1">$interface</span> <span class="sy0">|</span><span class="kw2">grep</span> bytes<span class="sy0">|</span><span class="kw2">cut</span> <span class="re5">-d</span><span class="st0">&quot;:&quot;</span> -f2<span class="sy0">|</span><span class="kw2">cut</span> <span class="re5">-d</span><span class="st0">&quot; &quot;</span> -f1<span class="sy0">`</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re2">OUT</span>=<span class="sy0">`/</span>sbin<span class="sy0">/</span><span class="kw2">ifconfig</span> <span class="re1">$interface</span> <span class="sy0">|</span><span class="kw2">grep</span> bytes<span class="sy0">|</span><span class="kw2">cut</span> <span class="re5">-d</span><span class="st0">&quot;:&quot;</span> -f3<span class="sy0">|</span><span class="kw2">cut</span> <span class="re5">-d</span><span class="st0">&quot; &quot;</span> -f1<span class="sy0">`</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; rrdtool update <span class="re1">$DB_PATH</span><span class="sy0">/</span><span class="re1">$interface</span>.rrd <span class="re5">-t</span> <span class="kw1">in</span>:out N:<span class="re1">$IN</span>:<span class="re1">$OUT</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">done</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
<span class="kw1">fi</span></div>
</div>
<p>Questo non fa altro che aggiungere un record al nostro database rrd che ci serviranno per la successiva creazione del grafico.<br />
A questo punto creare il grafico diventa abbastanza semplice.</p>
<div class="codesnip-container" >
<div class="bash codesnip" style="font-family:monospace;"><span class="kw2">vim</span> <span class="sy0">/</span>usr<span class="sy0">/</span>local<span class="sy0">/</span>bin<span class="sy0">/</span>creaGraficoRete.sh</div>
</div>
<div class="codesnip-container" >
<div class="bash codesnip" style="font-family:monospace;"><span class="co0">#!/bin/sh</span><br />
<span class="re2">MAILTO</span>=<span class="st0">&quot;&quot;</span><br />
<span class="re2">DB_PATH</span>=<span class="sy0">/</span>usr<span class="sy0">/</span>local<span class="sy0">/</span>rrd<br />
<span class="re2">FILEIMG</span>=<span class="re1">$DB_PATH</span><span class="sy0">/</span>images<br />
<span class="re2">FILEIMG_DAY</span>=<span class="re1">$FILEIMG</span><span class="sy0">/</span>day<br />
<span class="re2">FILEIMG_WEEK</span>=<span class="re1">$FILEIMG</span><span class="sy0">/</span>week<br />
<span class="re2">FILEIMG_MONTH</span>=<span class="re1">$FILEIMG</span><span class="sy0">/</span>month<br />
<span class="re2">FILEIMG_YEAR</span>=<span class="re1">$FILEIMG</span><span class="sy0">/</span>year</p>
<p><span class="re2">ARR</span>=<span class="sy0">`</span><span class="kw2">ifconfig</span> <span class="sy0">|</span> <span class="kw2">awk</span> <span class="re5">-F</span> <span class="st0">&quot; &nbsp; &quot;</span> <span class="st_h">&#8216;{ print $1 }&#8217;</span> <span class="sy0">|</span> <span class="kw2">grep</span> <span class="re5">-v</span> <span class="st0">&quot;^$&quot;</span><span class="sy0">`</span><br />
<span class="kw3">echo</span> <span class="re5">-e</span> <span class="re1">$ARR</span></p>
<p><span class="re2">INTERFACES</span>=<span class="br0">&#40;</span><span class="sy0">`</span><span class="kw3">echo</span> <span class="re5">-e</span> <span class="re1">$ARR</span><span class="sy0">`</span><span class="br0">&#41;</span><br />
<span class="co0"># Il grafico attuale ha il segnaposto ogni 3 ore e gli intervalli lineari di 1 ora</span><br />
<span class="co0"># E si basa su un periodo di 12 ore.</span><br />
<span class="kw1">for</span> interface <span class="kw1">in</span> <span class="st0">&quot;<span class="es3">${INTERFACES[@]}</span>&quot;</span><br />
<span class="kw1">do</span><br />
<span class="co0"># Intervallo su 24 ore</span><br />
rrdtool graph <span class="re1">$FILEIMG_DAY</span><span class="sy0">/</span><span class="re1">$interface</span>.png <span class="re5">-a</span> PNG <span class="re5">-h</span> 200 <span class="re5">-w</span> 800 <span class="re5">-v</span> <span class="st_h">&#8216;bytes/sec&#8217;</span> \<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re5">-t</span> <span class="st0">&quot;Traffico <span class="es2">$interface</span> Intervallo 24h&quot;</span> <span class="re5">-x</span> <span class="st_h">&#8216;HOUR:1:HOUR:3:HOUR:3:0:%b %d %H:00&#8242;</span> \<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re5">-s</span> <span class="re5">-24h</span> <span class="re5">&#8211;slope-mode</span> \<br />
&nbsp; &nbsp; &nbsp; &nbsp; DEF:<span class="kw1">in</span>=<span class="re1">$DB_PATH</span><span class="sy0">/</span><span class="re1">$interface</span>.rrd:<span class="kw1">in</span>:AVERAGE \<br />
&nbsp; &nbsp; &nbsp; &nbsp; DEF:<span class="re2">out</span>=<span class="re1">$DB_PATH</span><span class="sy0">/</span><span class="re1">$interface</span>.rrd:out:AVERAGE \<br />
&nbsp; &nbsp; &nbsp; &nbsp; CDEF:<span class="re2">out_neg</span>=out,-1,<span class="sy0">*</span> \<br />
&nbsp; &nbsp; &nbsp; &nbsp; VDEF:<span class="re2">inmax</span>=<span class="kw1">in</span>,MAXIMUM \<br />
&nbsp; &nbsp; &nbsp; &nbsp; VDEF:<span class="re2">inavg</span>=<span class="kw1">in</span>,AVERAGE \<br />
&nbsp; &nbsp; &nbsp; &nbsp; VDEF:<span class="re2">inlast</span>=<span class="kw1">in</span>,LAST \<br />
&nbsp; &nbsp; &nbsp; &nbsp; VDEF:<span class="re2">outmax</span>=out,MAXIMUM \<br />
&nbsp; &nbsp; &nbsp; &nbsp; VDEF:<span class="re2">outavg</span>=out,AVERAGE \<br />
&nbsp; &nbsp; &nbsp; &nbsp; VDEF:<span class="re2">outlast</span>=out,LAST \<br />
&nbsp; &nbsp; &nbsp; &nbsp; AREA:<span class="kw1">in</span><span class="co0">#32CD32:&quot;Incoming&quot; \</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; LINE1:<span class="kw1">in</span><span class="co0">#336600 \</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; GPRINT:inmax:<span class="st0">&quot;Max\: %5.1lf %Sbytes/sec&quot;</span> \<br />
&nbsp; &nbsp; &nbsp; &nbsp; GPRINT:inavg:<span class="st0">&quot;Avg\: %5.1lf %Sbytes/sec&quot;</span> \<br />
&nbsp; &nbsp; &nbsp; &nbsp; GPRINT:inlast:<span class="st0">&quot;Current\: %5.1lf %Sbytes/sec\<span class="es1">\n</span>&quot;</span> \<br />
&nbsp; &nbsp; &nbsp; &nbsp; AREA:out_neg<span class="co0">#4169E1:&quot;Outgoing&quot; \</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; LINE1:out_neg<span class="co0">#0033CC \</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; GPRINT:outmax:<span class="st0">&quot;Max\: %5.1lf %Sbytes/sec&quot;</span> \<br />
&nbsp; &nbsp; &nbsp; &nbsp; GPRINT:outavg:<span class="st0">&quot;Avg\: %5.1lf %Sbytes/sec&quot;</span> \<br />
&nbsp; &nbsp; &nbsp; &nbsp; GPRINT:outlast:<span class="st0">&quot;Current\: %5.1lf %Sbytes/sec&quot;</span> <span class="sy0">&gt;</span> <span class="sy0">/</span>dev<span class="sy0">/</span>null<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
<span class="co0"># Intervallo su 7 giorni</span><br />
rrdtool graph <span class="re1">$FILEIMG_WEEK</span><span class="sy0">/</span><span class="re1">$interface</span>.png <span class="re5">-a</span> PNG <span class="re5">-h</span> 200 <span class="re5">-w</span> 800 <span class="re5">-v</span> <span class="st_h">&#8216;bytes/sec&#8217;</span> \<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re5">-t</span> <span class="st0">&quot;Traffico <span class="es2">$interface</span> Intervallo 1 settimana&quot;</span> <span class="re5">-x</span> <span class="st_h">&#8216;HOUR:2:DAY:1:DAY:1:0:%b %d&#8217;</span> \<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re5">-s</span> <span class="re5">-1w</span> <span class="re5">&#8211;slope-mode</span> \<br />
&nbsp; &nbsp; &nbsp; &nbsp; DEF:<span class="kw1">in</span>=<span class="re1">$DB_PATH</span><span class="sy0">/</span><span class="re1">$interface</span>.rrd:<span class="kw1">in</span>:AVERAGE \<br />
&nbsp; &nbsp; &nbsp; &nbsp; DEF:<span class="re2">out</span>=<span class="re1">$DB_PATH</span><span class="sy0">/</span><span class="re1">$interface</span>.rrd:out:AVERAGE \<br />
&nbsp; &nbsp; &nbsp; &nbsp; CDEF:<span class="re2">out_neg</span>=out,-1,<span class="sy0">*</span> \<br />
&nbsp; &nbsp; &nbsp; &nbsp; VDEF:<span class="re2">inmax</span>=<span class="kw1">in</span>,MAXIMUM \<br />
&nbsp; &nbsp; &nbsp; &nbsp; VDEF:<span class="re2">inavg</span>=<span class="kw1">in</span>,AVERAGE \<br />
&nbsp; &nbsp; &nbsp; &nbsp; VDEF:<span class="re2">inlast</span>=<span class="kw1">in</span>,LAST \<br />
&nbsp; &nbsp; &nbsp; &nbsp; VDEF:<span class="re2">outmax</span>=out,MAXIMUM \<br />
&nbsp; &nbsp; &nbsp; &nbsp; VDEF:<span class="re2">outavg</span>=out,AVERAGE \<br />
&nbsp; &nbsp; &nbsp; &nbsp; VDEF:<span class="re2">outlast</span>=out,LAST \<br />
&nbsp; &nbsp; &nbsp; &nbsp; AREA:<span class="kw1">in</span><span class="co0">#32CD32:&quot;Incoming&quot; \</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; LINE1:<span class="kw1">in</span><span class="co0">#336600 \</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; GPRINT:inmax:<span class="st0">&quot;Max\: %5.1lf %Sbytes/sec&quot;</span> \<br />
&nbsp; &nbsp; &nbsp; &nbsp; GPRINT:inavg:<span class="st0">&quot;Avg\: %5.1lf %Sbytes/sec&quot;</span> \<br />
&nbsp; &nbsp; &nbsp; &nbsp; GPRINT:inlast:<span class="st0">&quot;Current\: %5.1lf %Sbytes/sec\<span class="es1">\n</span>&quot;</span> \<br />
&nbsp; &nbsp; &nbsp; &nbsp; AREA:out_neg<span class="co0">#4169E1:&quot;Outgoing&quot; \</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; LINE1:out_neg<span class="co0">#0033CC \</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; GPRINT:outmax:<span class="st0">&quot;Max\: %5.1lf %Sbytes/sec&quot;</span> \<br />
&nbsp; &nbsp; &nbsp; &nbsp; GPRINT:outavg:<span class="st0">&quot;Avg\: %5.1lf %Sbytes/sec&quot;</span> \<br />
&nbsp; &nbsp; &nbsp; &nbsp; GPRINT:outlast:<span class="st0">&quot;Current\: %5.1lf %Sbytes/sec&quot;</span> <span class="sy0">&gt;</span> <span class="sy0">/</span>dev<span class="sy0">/</span>null<br />
&nbsp; &nbsp; &nbsp; &nbsp; </p>
<p><span class="co0"># Intervallo su 30 giorni</span><br />
rrdtool graph <span class="re1">$FILEIMG_MONTH</span><span class="sy0">/</span><span class="re1">$interface</span>.png <span class="re5">-a</span> PNG <span class="re5">-h</span> 200 <span class="re5">-w</span> 800 <span class="re5">-v</span> <span class="st_h">&#8216;bytes/sec&#8217;</span> \<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re5">-t</span> <span class="st0">&quot;Traffico <span class="es2">$interface</span> Intervallo 1 mese&quot;</span> <span class="re5">-x</span> <span class="st_h">&#8216;DAY:1:DAY:7:DAY:7:0:%b %d&#8217;</span> \<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re5">-s</span> <span class="re5">-1m</span> <span class="re5">&#8211;slope-mode</span> \<br />
&nbsp; &nbsp; &nbsp; &nbsp; DEF:<span class="kw1">in</span>=<span class="re1">$DB_PATH</span><span class="sy0">/</span><span class="re1">$interface</span>.rrd:<span class="kw1">in</span>:AVERAGE \<br />
&nbsp; &nbsp; &nbsp; &nbsp; DEF:<span class="re2">out</span>=<span class="re1">$DB_PATH</span><span class="sy0">/</span><span class="re1">$interface</span>.rrd:out:AVERAGE \<br />
&nbsp; &nbsp; &nbsp; &nbsp; CDEF:<span class="re2">out_neg</span>=out,-1,<span class="sy0">*</span> \<br />
&nbsp; &nbsp; &nbsp; &nbsp; VDEF:<span class="re2">inmax</span>=<span class="kw1">in</span>,MAXIMUM \<br />
&nbsp; &nbsp; &nbsp; &nbsp; VDEF:<span class="re2">inavg</span>=<span class="kw1">in</span>,AVERAGE \<br />
&nbsp; &nbsp; &nbsp; &nbsp; VDEF:<span class="re2">inlast</span>=<span class="kw1">in</span>,LAST \<br />
&nbsp; &nbsp; &nbsp; &nbsp; VDEF:<span class="re2">outmax</span>=out,MAXIMUM \<br />
&nbsp; &nbsp; &nbsp; &nbsp; VDEF:<span class="re2">outavg</span>=out,AVERAGE \<br />
&nbsp; &nbsp; &nbsp; &nbsp; VDEF:<span class="re2">outlast</span>=out,LAST \<br />
&nbsp; &nbsp; &nbsp; &nbsp; AREA:<span class="kw1">in</span><span class="co0">#32CD32:&quot;Incoming&quot; \</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; LINE1:<span class="kw1">in</span><span class="co0">#336600 \</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; GPRINT:inmax:<span class="st0">&quot;Max\: %5.1lf %Sbytes/sec&quot;</span> \<br />
&nbsp; &nbsp; &nbsp; &nbsp; GPRINT:inavg:<span class="st0">&quot;Avg\: %5.1lf %Sbytes/sec&quot;</span> \<br />
&nbsp; &nbsp; &nbsp; &nbsp; GPRINT:inlast:<span class="st0">&quot;Current\: %5.1lf %Sbytes/sec\<span class="es1">\n</span>&quot;</span> \<br />
&nbsp; &nbsp; &nbsp; &nbsp; AREA:out_neg<span class="co0">#4169E1:&quot;Outgoing&quot; \</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; LINE1:out_neg<span class="co0">#0033CC \</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; GPRINT:outmax:<span class="st0">&quot;Max\: %5.1lf %Sbytes/sec&quot;</span> \<br />
&nbsp; &nbsp; &nbsp; &nbsp; GPRINT:outavg:<span class="st0">&quot;Avg\: %5.1lf %Sbytes/sec&quot;</span> \<br />
&nbsp; &nbsp; &nbsp; &nbsp; GPRINT:outlast:<span class="st0">&quot;Current\: %5.1lf %Sbytes/sec&quot;</span> <span class="sy0">&gt;</span> <span class="sy0">/</span>dev<span class="sy0">/</span>null</p>
<p><span class="co0"># Intervallo su 1 anno</span><br />
rrdtool graph <span class="re1">$FILEIMG_YEAR</span><span class="sy0">/</span><span class="re1">$interface</span>.png <span class="re5">-a</span> PNG <span class="re5">-h</span> 200 <span class="re5">-w</span> 800 <span class="re5">-v</span> <span class="st_h">&#8216;bytes/sec&#8217;</span> \<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re5">-t</span> <span class="st0">&quot;Traffico <span class="es2">$interface</span> Intervallo 1 anno&quot;</span> <span class="re5">-x</span> <span class="st_h">&#8216;DAY:1:MONTH:1:MONTH:1:0:%m&#8217;</span> \<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re5">-s</span> <span class="re5">-1y</span> <span class="re5">&#8211;slope-mode</span> \<br />
&nbsp; &nbsp; &nbsp; &nbsp; DEF:<span class="kw1">in</span>=<span class="re1">$DB_PATH</span><span class="sy0">/</span><span class="re1">$interface</span>.rrd:<span class="kw1">in</span>:AVERAGE \<br />
&nbsp; &nbsp; &nbsp; &nbsp; DEF:<span class="re2">out</span>=<span class="re1">$DB_PATH</span><span class="sy0">/</span><span class="re1">$interface</span>.rrd:out:AVERAGE \<br />
&nbsp; &nbsp; &nbsp; &nbsp; CDEF:<span class="re2">out_neg</span>=out,-1,<span class="sy0">*</span> \<br />
&nbsp; &nbsp; &nbsp; &nbsp; VDEF:<span class="re2">inmax</span>=<span class="kw1">in</span>,MAXIMUM \<br />
&nbsp; &nbsp; &nbsp; &nbsp; VDEF:<span class="re2">inavg</span>=<span class="kw1">in</span>,AVERAGE \<br />
&nbsp; &nbsp; &nbsp; &nbsp; VDEF:<span class="re2">inlast</span>=<span class="kw1">in</span>,LAST \<br />
&nbsp; &nbsp; &nbsp; &nbsp; VDEF:<span class="re2">outmax</span>=out,MAXIMUM \<br />
&nbsp; &nbsp; &nbsp; &nbsp; VDEF:<span class="re2">outavg</span>=out,AVERAGE \<br />
&nbsp; &nbsp; &nbsp; &nbsp; VDEF:<span class="re2">outlast</span>=out,LAST \<br />
&nbsp; &nbsp; &nbsp; &nbsp; AREA:<span class="kw1">in</span><span class="co0">#32CD32:&quot;Incoming&quot; \</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; LINE1:<span class="kw1">in</span><span class="co0">#336600 \</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; GPRINT:inmax:<span class="st0">&quot;Max\: %5.1lf %Sbytes/sec&quot;</span> \<br />
&nbsp; &nbsp; &nbsp; &nbsp; GPRINT:inavg:<span class="st0">&quot;Avg\: %5.1lf %Sbytes/sec&quot;</span> \<br />
&nbsp; &nbsp; &nbsp; &nbsp; GPRINT:inlast:<span class="st0">&quot;Current\: %5.1lf %Sbytes/sec\<span class="es1">\n</span>&quot;</span> \<br />
&nbsp; &nbsp; &nbsp; &nbsp; AREA:out_neg<span class="co0">#4169E1:&quot;Outgoing&quot; \</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; LINE1:out_neg<span class="co0">#0033CC \</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; GPRINT:outmax:<span class="st0">&quot;Max\: %5.1lf %Sbytes/sec&quot;</span> \<br />
&nbsp; &nbsp; &nbsp; &nbsp; GPRINT:outavg:<span class="st0">&quot;Avg\: %5.1lf %Sbytes/sec&quot;</span> \<br />
&nbsp; &nbsp; &nbsp; &nbsp; GPRINT:outlast:<span class="st0">&quot;Current\: %5.1lf %Sbytes/sec&quot;</span> <span class="sy0">&gt;</span> <span class="sy0">/</span>dev<span class="sy0">/</span>null</p>
<p><span class="kw1">done</span></div>
</div>
<p>Schedualiamo in crontab ogni 5 minuti il file /usr/local/bin/collectInterfaceData.sh e come nel mio caso anche il file /usr/local/bin/creaGraficoRete.sh</p>
<div class="codesnip-container" >
<div class="bash codesnip" style="font-family:monospace;">crontab <span class="re5">-e</span></div>
</div>
<div class="codesnip-container" >
<div class="bash codesnip" style="font-family:monospace;"><span class="sy0">*/</span><span class="nu0">5</span> <span class="sy0">*</span> <span class="sy0">*</span> <span class="sy0">*</span> <span class="sy0">*</span> <span class="sy0">/</span>usr<span class="sy0">/</span>local<span class="sy0">/</span>bin<span class="sy0">/</span>collectInterfaceData.sh<br />
<span class="sy0">*/</span><span class="nu0">5</span> <span class="sy0">*</span> <span class="sy0">*</span> <span class="sy0">*</span> <span class="sy0">*</span> <span class="sy0">/</span>usr<span class="sy0">/</span>local<span class="sy0">/</span>bin<span class="sy0">/</span>creaGraficoRete.sh</div>
</div>
<p>Ed il gioco è fatto!!</p>
<p>A questo punto possiamo crearci una pagina web con collegamento alle relative immagini, od in alternativa possiamo inoltrarci via email le immagini generate.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bananadocet.com/index.php/2012/02/monitorare-le-interfacce-di-rete-tramite-bash-script-e-rrd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Personalizzare dinamicamente il MOTD di linux</title>
		<link>http://www.bananadocet.com/index.php/2011/12/personalizzare-dinamicamente-il-motd-di-linux/</link>
		<comments>http://www.bananadocet.com/index.php/2011/12/personalizzare-dinamicamente-il-motd-di-linux/#comments</comments>
		<pubDate>Fri, 30 Dec 2011 16:13:17 +0000</pubDate>
		<dc:creator>Gioachino Bartolotta</dc:creator>
				<category><![CDATA[bash]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[console]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[shell scripting]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[tricks]]></category>

		<guid isPermaLink="false">http://www.bananadocet.com/?p=584</guid>
		<description><![CDATA[Ero stanco dei soliti motd (message of the day) di Linux che trovavo sui vari server, così ho deciso di implementare un piccolissimo script che mi permettesse di vedere qualcosa di diverso ad ogni login. Vediamo come fare. Questa procedura è stata provata su una debian, ma può essere riprodotta su qualunque sistema unix. Ci [...]]]></description>
			<content:encoded><![CDATA[<p>Ero stanco dei soliti motd (message of the day) di Linux che trovavo sui vari server, così ho deciso di implementare un piccolissimo script che mi permettesse di vedere qualcosa di diverso ad ogni login.</p>
<p>Vediamo come fare.</p>
<p>Questa procedura è stata provata su una debian, ma può essere riprodotta su qualunque sistema unix. Ci occorrerà installare i package cowsay e fortune (se preferiamo quelli con localizzazione italiana e se siamo &#8220;audaci&#8221; anche quelli un po più spinti)</p>
<p>Installiamo i pacchetti digitando da console:</p>
<div class="codesnip-container" >
<div class="bash codesnip" style="font-family:monospace;"><span class="kw2">apt-get</span> <span class="kw2">install</span> cowsay fortunes-it fortunes-it-off</div>
</div>
<p>A questo punto creiamoci un semplicissimo script in bash che chiameremo mymotd e per l&#8217;esempio in questione lo posizioniamo sotto /usr/local/bin/.</p>
<div class="codesnip-container" >
<div class="bash codesnip" style="font-family:monospace;"><span class="co0">#!/bin/bash</span><br />
<span class="re2">ALTER</span>=<span class="br0">&#40;</span><span class="sy0">`</span><span class="kw3">echo</span> <span class="re5">-n</span> \<span class="sy0">`/</span>usr<span class="sy0">/</span>games<span class="sy0">/</span>cowsay -l\<span class="sy0">`</span> <span class="sy0">|</span> <span class="kw2">awk</span> <span class="re5">-F</span><span class="st0">&quot;: &quot;</span> <span class="st_h">&#8216;{ print $2 }&#8217;</span><span class="sy0">`</span><span class="br0">&#41;</span><br />
<span class="re2">NUMBER</span>=$<span class="br0">&#91;</span> <span class="br0">&#40;</span><span class="re1">$RANDOM</span> <span class="sy0">%</span> <span class="co1">${#ALTER[@]}</span><span class="br0">&#41;</span> + <span class="nu0">1</span> <span class="br0">&#93;</span></div>
</div>
<p>/usr/games/cowsay -f ${ALTER[$NUMBER]} `/usr/games/fortune`</p>
<p>Diamo i privilegi di esecuzione allo script tramite:</p>
<div class="codesnip-container" >
<div class="bash codesnip" style="font-family:monospace;"><span class="kw2">chmod</span> +x <span class="sy0">/</span>usr<span class="sy0">/</span>local<span class="sy0">/</span>bin<span class="sy0">/</span>mymotd</div>
</div>
<p>Per concludere, modifichiamo il file /etc/profile aggiungendo in fondo allo stesso il percorso dello script ed il gioco è fatto. Potrete ottenere risultati simili a quello riportato in figura:</p>
<p><a href="http://www.bananadocet.com/wp-content/uploads/2011/12/login.png"><img class="alignleft size-medium wp-image-587" title="motd login" src="http://www.bananadocet.com/wp-content/uploads/2011/12/login-300x205.png" alt="" width="300" height="205" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Buon divertimento &#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bananadocet.com/index.php/2011/12/personalizzare-dinamicamente-il-motd-di-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Aggiornare la cache DNS sotto Linux</title>
		<link>http://www.bananadocet.com/index.php/2011/12/aggiornare-la-cache-dns-sotto-linux/</link>
		<comments>http://www.bananadocet.com/index.php/2011/12/aggiornare-la-cache-dns-sotto-linux/#comments</comments>
		<pubDate>Thu, 01 Dec 2011 13:23:12 +0000</pubDate>
		<dc:creator>Gioachino Bartolotta</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tips and Tricks]]></category>

		<guid isPermaLink="false">http://www.bananadocet.com/?p=579</guid>
		<description><![CDATA[Può capitare di aggiornare la propria zona DNS e malgrado tutto al ping risponde ancora l&#8217;indirizzo vecchio. Se controllando tramite il comando nslookup nomeDelServer vediamo che viene risolto con il nuovo indirizzo, allora abbiamo un problema di cache DNS. Per risolverlo sarà sufficiente fare il reload del demone nscd tramite il comando: /etc/init.d/nscd reload Pingando [...]]]></description>
			<content:encoded><![CDATA[<p>Può capitare di aggiornare la propria zona DNS e malgrado tutto al ping risponde ancora l&#8217;indirizzo vecchio.<br />
Se controllando tramite il comando <em>nslookup nomeDelServer</em> vediamo che viene risolto con il nuovo indirizzo, allora abbiamo un problema di cache DNS.<br />
Per risolverlo sarà sufficiente fare il reload del demone <em>nscd</em> tramite il comando:</p>
<div class="codesnip-container" >
<div class="bash codesnip" style="font-family:monospace;"><span class="sy0">/</span>etc<span class="sy0">/</span>init.d<span class="sy0">/</span>nscd reload</div>
</div>
<p>Pingando nuovamente il server, vedremo che verrà risolto correttamente.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bananadocet.com/index.php/2011/12/aggiornare-la-cache-dns-sotto-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Script per allineare scadenza password tra 389-ds (LDAP) e Samba</title>
		<link>http://www.bananadocet.com/index.php/2011/09/script-per-allineare-scadenza-password-tra-389-ds-ldap-e-samba/</link>
		<comments>http://www.bananadocet.com/index.php/2011/09/script-per-allineare-scadenza-password-tra-389-ds-ldap-e-samba/#comments</comments>
		<pubDate>Mon, 12 Sep 2011 08:04:56 +0000</pubDate>
		<dc:creator>Gioachino Bartolotta</dc:creator>
				<category><![CDATA[bash]]></category>
		<category><![CDATA[Gestione Server]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[389-ds]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[domain controller]]></category>
		<category><![CDATA[grep]]></category>
		<category><![CDATA[LDAP]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[nt4]]></category>
		<category><![CDATA[password]]></category>
		<category><![CDATA[samba]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[shell scripting]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://www.bananadocet.com/?p=569</guid>
		<description><![CDATA[Ho creato questo script per risolvere un problema che si è presentato durante la fase di cambio password da computer in un dominio NT4 gestito tramite samba-3 + LDAP (questo in realtà gestito tramite un 389-ds) su una CentOS 5.6. Sono state applicate le password policies su ldap e su samba. Ho notato che cambiando [...]]]></description>
			<content:encoded><![CDATA[<p>Ho creato questo script per risolvere un problema che si è presentato durante la fase di cambio password da computer in un dominio NT4 gestito tramite samba-3 + LDAP (questo in realtà gestito tramite un 389-ds) su una CentOS 5.6.</p>
<p><script type="text/javascript"><!--
google_ad_client = "ca-pub-8923523108033341";
/* 300_250 */
google_ad_slot = "5574097654";
google_ad_width = 300;
google_ad_height = 250;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<p>Sono state applicate le password policies su ldap e su samba.<br />
Ho notato che cambiando la password direttamente dal client Windows, alcune applicazioni che si autenticano tramite LDAP, restituivano degli errori.</p>
<p>Indagando, su cosa cambiasse nella struttura LDAP dell&#8217;utente, ho trovato che quando si cambia la password dal client, un campo di LDAP, nello specifico <strong><em>passwordexpirationtime</em></strong>, veniva resettato al valore di default corrispondente al 1 Gennaio 1970.</p>
<p>Dal momento che non è prevedibile sapere quando qualcuno decide di cambiare la password, ho creato questo semplice ma efficace script di shell che viene lanciato via crontab.</p>
<div class="codesnip-container" >
<div class="bash codesnip" style="font-family:monospace;"><span class="co0">#!/bin/bash</span><br />
<span class="kw3">source</span> ~<span class="sy0">/</span>.bash_profile<br />
<span class="re2">FILE_REPORT</span>=<span class="sy0">/</span>var<span class="sy0">/</span>log<span class="sy0">/</span>aggiusta_scadenza_pwd.log<br />
<span class="re2">ERROR_REPORT</span>=<span class="sy0">/</span>root<span class="sy0">/</span>tmp<span class="sy0">/</span>errori_scadenze_password.log</p>
<p><span class="re2">TEST</span>=<span class="nu0">0</span> <span class="co0"># 0 -&gt; ESEGUE &#8230;. 1 -&gt; TEST</span><br />
<span class="co0"># &nbsp;</span><br />
<span class="re2">GIORNI_DALLA_SCADENZA</span>=<span class="nu0">15</span><br />
<span class="co0"># Ripuliamo i nostri files di reportistica </span><br />
<span class="kw3">echo</span> <span class="st0">&quot;&quot;</span> <span class="sy0">&gt;</span> <span class="re1">$FILE_REPORT</span><br />
<span class="kw3">echo</span> <span class="st0">&quot;&quot;</span> <span class="sy0">&gt;</span> <span class="re1">$ERROR_REPORT</span><br />
<span class="kw1">function</span> convertiMeseNum<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co0"># Convertiamo il mese da letterale a numerico</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">case</span> $1 <span class="kw1">in</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&quot;gen&quot;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re2">MESE</span>=<span class="st0">&quot;01&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">;;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&quot;feb&quot;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re2">MESE</span>=<span class="st0">&quot;02&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">;;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&quot;mar&quot;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re2">MESE</span>=<span class="st0">&quot;03&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">;;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&quot;apr&quot;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re2">MESE</span>=<span class="st0">&quot;04&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">;;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&quot;mag&quot;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re2">MESE</span>=<span class="st0">&quot;05&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">;;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&quot;giu&quot;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re2">MESE</span>=<span class="st0">&quot;06&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">;;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&quot;lug&quot;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re2">MESE</span>=<span class="st0">&quot;07&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">;;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&quot;ago&quot;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re2">MESE</span>=<span class="st0">&quot;08&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">;;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&quot;set&quot;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re2">MESE</span>=<span class="st0">&quot;09&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">;;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&quot;ott&quot;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re2">MESE</span>=<span class="st0">&quot;10&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">;;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&quot;nov&quot;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re2">MESE</span>=<span class="st0">&quot;11&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">;;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&quot;dic&quot;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re2">MESE</span>=<span class="st0">&quot;12&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">;;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">esac</span><br />
<span class="br0">&#125;</span></p>
<p><span class="kw1">function</span> allineaScadenzaPwd<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re2">TMP_LDIF_DIR</span>=<span class="sy0">/</span>root<span class="sy0">/</span>tmp<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#91;</span> <span class="re5">-d</span> <span class="re1">$TMP_FILE_DIR</span> <span class="br0">&#93;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">then</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">mkdir</span> <span class="re5">-p</span> <span class="re1">$TMP_LDIF_DIR</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">fi</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co0"># Estraiamo la data da samba e rendiamola utilizzabile dal comanda date</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re2">DATA_SCADENZA</span>=<span class="sy0">`</span>pdbedit <span class="re5">-v</span> $1 <span class="sy0">|</span> <span class="kw2">grep</span> <span class="st0">&quot;Password must change:&quot;</span> <span class="sy0">|</span> <span class="kw2">awk</span> <span class="re5">-F</span> <span class="st0">&quot;: &quot;</span> <span class="st_h">&#8216;{ print $2 }&#8217;</span><span class="sy0">`</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">case</span> <span class="st0">&quot;<span class="es2">$DATA_SCADENZA</span>&quot;</span> <span class="kw1">in</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co0"># Questo è il caso in cui l&#8217;utente non ha una scadenza della password</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&quot;never&quot;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="st0">&quot;L&#8217;utente $1 NON ha scadenza password&quot;</span> <span class="sy0">&gt;&gt;</span> <span class="re1">$ERROR_REPORT</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">;;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co0"># Nel caso in cui non è settata la data di scadenza </span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&quot;0&quot;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="st0">&quot;L&#8217;utente $1 NON HA IMPOSTATO una data di scadenza!! (Verificare) &quot;</span> <span class="sy0">&gt;&gt;</span> <span class="re1">$ERROR_REPORT</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">;;</span></p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co0"># Case di default</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">*</span><span class="br0">&#41;</span></p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re2">MESE_SCADENZA</span>=<span class="st0">&quot;<span class="es5">`echo $DATA_SCADENZA | awk &#8216;{ print $3 }&#8217;`</span>&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re2">GIORNO_SCADENZA</span>=<span class="st0">&quot;<span class="es5">`echo $DATA_SCADENZA | awk &#8216;{ print $2 }&#8217;`</span>&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re2">ANNO_SCADENZA</span>=<span class="st0">&quot;<span class="es5">`echo $DATA_SCADENZA | awk &#8216;{ print $4 }&#8217;`</span>&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re2">ORARIO_SCADENZA</span>=<span class="st0">&quot;<span class="es5">`echo $DATA_SCADENZA | awk &#8216;{ print $5 }&#8217;`</span>&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co0"># Estraiamo il mese numerico dal mese di scadenza</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; convertiMeseNum <span class="re1">$MESE_SCADENZA</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co0"># Trasformiamo la data ottenuta in formato unix timestamp &nbsp; &nbsp; &nbsp; </span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re2">SCADENZA_PASSWORD</span>=<span class="sy0">`</span><span class="kw2">date</span> <span class="re5">-d</span> <span class="st0">&quot;<span class="es2">$ANNO_SCADENZA</span>-<span class="es2">$MESE</span>-<span class="es2">$GIORNO_SCADENZA</span> <span class="es2">$ORARIO_SCADENZA</span>&quot;</span> <span class="st0">&quot;+%s&quot;</span><span class="sy0">`</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co0"># Su LDAP il campo di segnalazione scadenza è impostato a 15 giorni prima della scadenza reale dell&#8217;account</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re2">SCADENZA_CALCOLATA</span>=<span class="sy0">`</span><span class="kw2">date</span> <span class="re5">-d</span> <span class="sy0">@</span>$<span class="br0">&#40;</span><span class="br0">&#40;</span> <span class="re1">$SCADENZA_PASSWORD</span> &#8211; $<span class="br0">&#40;</span><span class="br0">&#40;</span> <span class="re1">$GIORNI_DALLA_SCADENZA</span> <span class="sy0">*</span> 86400 <span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">`</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re2">MESE_SCADENZA_1</span>=<span class="st0">&quot;<span class="es5">`echo $SCADENZA_CALCOLATA | awk &#8216;{ print $2 }&#8217;`</span>&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; convertiMeseNum <span class="re1">$MESE_SCADENZA_1</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re2">GIORNO_SCADENZA_1</span>=<span class="st0">&quot;<span class="es5">`echo $SCADENZA_CALCOLATA | awk &#8216;{ print $3 }&#8217;`</span>&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#91;</span> $<span class="br0">&#40;</span><span class="br0">&#40;</span>GIORNO_SCADENZA_1<span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="re5">-lt</span> 10 <span class="br0">&#93;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">then</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co0"># Trovato numero minore di 10 per utente $1 &#8230; converto</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re2">GIORNO_SCADENZA_1</span>=<span class="st0">&quot;0&quot;</span><span class="re1">$GIORNO_SCADENZA_1</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co0"># echo &quot;Giorno scadenza 1 -&gt; $GIORNO_SCADENZA_1&quot; &gt;&gt; $FILE_REPORT</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">fi</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re2">ORARIO_SCADENZA_1</span>=<span class="st0">&quot;<span class="es5">`echo $SCADENZA_CALCOLATA | awk &#8216;{ print $4 }&#8217; | sed &#8216;s/://g&#8217;`</span>&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re2">ANNO_SCADENZA_1</span>=<span class="st0">&quot;<span class="es5">`echo $SCADENZA_CALCOLATA | awk &#8216;{ print $6 }&#8217;`</span>&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re2">SCADENZA_REALE</span>=<span class="re1">$ANNO_SCADENZA_1</span><span class="re1">$MESE</span><span class="re1">$GIORNO_SCADENZA_1</span><span class="re1">$ORARIO_SCADENZA_1</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re2">SCADENZA_PASSWORD_Z</span>=<span class="re1">$SCADENZA_REALE</span><span class="st0">&quot;Z&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co0"># echo $1 $DATA_SCADENZA $SCADENZA_CALCOLATA &gt;&gt; $FILE_REPORT</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#91;</span> <span class="re1">$SCADENZA_PASSWORD</span> <span class="br0">&#93;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">then</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="st0">&quot;Modifico data di scadenza per $1 -&gt; <span class="es2">$DATA_SCADENZA</span> in data <span class="es2">$SCADENZA_PASSWORD_Z</span>&quot;</span> <span class="sy0">&gt;&gt;</span> <span class="re1">$FILE_REPORT</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re2">TMP_LDAP_FILE</span>=<span class="re1">$TMP_LDIF_DIR</span><span class="sy0">/</span>$1.modify.ldif<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="st0">&quot;dn: uid=$1,ou=People,dc=dominio&quot;</span> <span class="sy0">&gt;</span> <span class="re1">$TMP_LDAP_FILE</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="st0">&quot;changetype: modify&quot;</span> <span class="sy0">&gt;&gt;</span> <span class="re1">$TMP_LDAP_FILE</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="st0">&quot;replace: passwordexpirationtime&quot;</span> <span class="sy0">&gt;&gt;</span> <span class="re1">$TMP_LDAP_FILE</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="st0">&quot;passwordexpirationtime: <span class="es2">$SCADENZA_PASSWORD_Z</span>&quot;</span> <span class="sy0">&gt;&gt;</span> <span class="re1">$TMP_LDAP_FILE</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="st0">&quot;-&quot;</span> <span class="sy0">&gt;&gt;</span> <span class="re1">$TMP_LDAP_FILE</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="st0">&quot;changetype: modify&quot;</span> <span class="sy0">&gt;&gt;</span> <span class="re1">$TMP_LDAP_FILE</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="st0">&quot;replace: passwordexpwarned&quot;</span> <span class="sy0">&gt;&gt;</span> <span class="re1">$TMP_LDAP_FILE</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="st0">&quot;passwordexpwarned: 0&quot;</span> <span class="sy0">&gt;&gt;</span> <span class="re1">$TMP_LDAP_FILE</span></p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co0"># Se questa non è l&#8217;esecuzione di un test, applichiamo le modifiche a LDAP</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#91;</span> <span class="re1">$TEST</span> <span class="re5">-eq</span> 0 <span class="br0">&#93;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">then</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">/</span>usr<span class="sy0">/</span>bin<span class="sy0">/</span>ldapmodify <span class="re5">-x</span> <span class="re5">-Z</span> <span class="re5">-D</span> <span class="st0">&quot;cn=Directory Manager&quot;</span> <span class="re5">-w</span> lamiapassword <span class="re5">-f</span> <span class="re1">$TMP_LDAP_FILE</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">fi</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">fi</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">;;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">esac</span><br />
<span class="br0">&#125;</span></p>
<p><span class="co0"># </span><br />
<span class="co0"># Eseguiamo una scansione sull&#8217;albero LDAP ed estraiamo tutti gli utenti di dominio attivi</span><br />
<span class="kw1">for</span> uid <span class="kw1">in</span> <span class="sy0">`</span>ldapsearch <span class="re5">-x</span> <span class="re5">-Z</span> <span class="re5">-b</span> <span class="re2">ou</span>=People,<span class="kw2">dc</span>=dominio <span class="st0">&quot;(&amp;(uid=*)(!(sambaAcctFlags=[DU*]))(passwordexpirationtime=19700101000000Z))&quot;</span> <span class="sy0">|</span> <span class="kw2">grep</span> uid: <span class="sy0">|</span> <span class="kw2">awk</span> <span class="re5">-F</span> <span class="st0">&quot;: &quot;</span> <span class="st_h">&#8216;{ print $2 }&#8217;</span><span class="sy0">`</span><br />
<span class="kw1">do</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; allineaScadenzaPwd <span class="re1">$uid</span><br />
<span class="kw1">done</span></div>
</div>
<p>L&#8217;esecuzione di questo script anche con qualche migliaio di utenti censiti, impiega pochi secondi.</p>
<p>Buon Divertimento.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bananadocet.com/index.php/2011/09/script-per-allineare-scadenza-password-tra-389-ds-ldap-e-samba/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Configurare un syslog server con linux.</title>
		<link>http://www.bananadocet.com/index.php/2011/05/configurare-un-syslog-server-con-linux/</link>
		<comments>http://www.bananadocet.com/index.php/2011/05/configurare-un-syslog-server-con-linux/#comments</comments>
		<pubDate>Thu, 26 May 2011 08:44:48 +0000</pubDate>
		<dc:creator>Gioachino Bartolotta</dc:creator>
				<category><![CDATA[Gestione Server]]></category>
		<category><![CDATA[Installazione Servizi]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Monitoring]]></category>
		<category><![CDATA[Test Drive]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[gentoo]]></category>
		<category><![CDATA[gestione centralizzata]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[log server]]></category>
		<category><![CDATA[loganalyzer]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[red-hat]]></category>
		<category><![CDATA[rsyslog]]></category>
		<category><![CDATA[syslog]]></category>

		<guid isPermaLink="false">http://www.bananadocet.com/?p=542</guid>
		<description><![CDATA[Oggi vediamo come si può configurare in maniera molto semplice e veloce un syslog server che utilizzeremo per registrare tutti i log delle nostre macchine in un unico punto. Per il test abbiamo utilizzato una Debian Squeeze, ma la procedura è ripercorribile con qualunque altra distribuzione senza particolari differenze. Per la gestione del syslog, utilizzeremo [...]]]></description>
			<content:encoded><![CDATA[<p>Oggi vediamo come si può configurare in maniera molto semplice e veloce un syslog server che utilizzeremo per registrare tutti i log delle nostre macchine in un unico punto.<br />
Per il test abbiamo utilizzato una Debian Squeeze, ma la procedura è ripercorribile con qualunque altra distribuzione senza particolari differenze.</p>
<p>Per la gestione del syslog, utilizzeremo rsyslog che di default viene installato su Debian e rispetto a syslogd presenta una serie di vantaggi, fra i quali la possibilità di lavorare sia in tcp che in udp, è compatibile con syslog, è più facile da configurare rispetto ad un syslog-ng, e possiamo agganciarlo ad un database mysql per una gestione maggiormente semplificata.</p>
<p>Una volta installato rsyslog ed il suo relativo supporto mysql (rsyslog-mysql sotto debian) procediamo alla configurazione del suo database. In questo il debian ci agevola chiedendoci tramite dbconfig-common di configurare l&#8217;utente e la password per l&#8217;utente rsyslog. Risponderemo si alla domanda se vogliamo configurare il database tramite dbconfig-common e forniremo:</p>
<ul>
<li>La password di root dell&#8217;utente mysql</li>
<li>La password per l&#8217;utente rsyslog</li>
</ul>
<p>Terminata la procedura avremo creato un database chiamato Syslog ed un utente <em>rsyslog</em> che sarà di fatto l&#8217;amministratore del database creato.</p>
<p>Procediamo adesso alla configurazione di rsyslog editando il file /etc/rsyslog.conf</p>
<div class="codesnip-container" >
<div class="bash codesnip" style="font-family:monospace;"><span class="kw2">vim</span> <span class="sy0">/</span>etc<span class="sy0">/</span>rsyslog.conf</div>
</div>
<p>Decommentiamo le righe relative a</p>
<div class="codesnip-container" >
<div class="bash codesnip" style="font-family:monospace;"><span class="re1">$ModLoad</span> imudp<br />
<span class="re1">$UDPServerRun</span> <span class="nu0">514</span></div>
</div>
<p>$ModLoad imtcp<br />
$InputTCPServerRun 514</p>
<p>Riavviamo il demone:</p>
<div class="codesnip-container" >
<div class="bash codesnip" style="font-family:monospace;">service rsyslog restart</div>
</div>
<p>In questo modo abiliteremo sia la funzionalità del syslog tramite tcp che tramite udp.</p>
<p>Adesso per abilitare le funzionalità sui client esterni, sarà sufficiente modificare le impostazioni di syslog e indicare nel caso di syslog o rsyslog la sintassi è molto semplice e del tipo:</p>
<div class="codesnip-container" >facility.level destinazione</div>
<p>quindi, nello specifico, invieremo ad esempio tutti i log relativi agli accessi di una nostra macchina (x.x.x.x) al server (x.y.z.x)</p>
<div class="codesnip-container" >
<div class="bash codesnip" style="font-family:monospace;">auth,authpriv.<span class="sy0">*</span> <span class="sy0">@</span>x.y.z.x</div>
</div>
<p>Riavviamo il servizio di syslog sul client, e a questo punto vedremo arrivare sul server syslog i dati relativi agli accessi sul server da monitorare.<br />
In un prossimo post vedremo come configurare un client che utilizza syslog-ng.</p>
<p><script type="text/javascript">// <![CDATA[
google_ad_client = "ca-pub-8923523108033341";
/* 300_250 */
google_ad_slot = "5574097654";
google_ad_width = 300;
google_ad_height = 250;
// ]]&gt;</script><br />
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">// <![CDATA[</p>
<p>// ]]&gt;</script></p>
<h3>LogAnalyzer</h3>
<p>Il vantaggio di poter utilizzare un database per tracciare i dati di syslog è che possiamo anche utilizzare una comoda interfaccia web per gestirlo, e loganalyzer fa proprio al caso nostro.</p>
<p>Possiamo scaricare questa applicazione web, scritta in php, collegandoci a <a href="http://loganalyzer.adiscon.com/downloads" target="_blank">http://loganalyzer.adiscon.com/downloads</a>. Una volta scaricata, decomprimiamola in una cartella del nostro disco rigido e spostiamo il contenuto della cartella <em><strong>src</strong></em> in <em><strong>/var/www/loganalyzer</strong></em></p>
<div class="codesnip-container" >
<div class="bash codesnip" style="font-family:monospace;"><span class="kw2">mv</span> <span class="sy0">/</span>usr<span class="sy0">/</span>local<span class="sy0">/</span>src<span class="sy0">/</span>loganalyzer-x.y<span class="sy0">/</span>src <span class="sy0">/</span>var<span class="sy0">/</span>www<span class="sy0">/</span>loganalyzer</div>
</div>
<p>Adesso, prima di procedere con l&#8217;installazione di loganalyzer, creiamo un database per la gestione della configurazione di loganalyzer.</p>
<div class="codesnip-container" >
<div class="bash codesnip" style="font-family:monospace;">mysql <span class="re5">-u</span> root <span class="re5">-p</span></div>
</div>
<p>Al prompt di mysql digitare:</p>
<div class="codesnip-container" >
<div class="sql codesnip" style="font-family:monospace;"><span class="kw1">CREATE</span> <span class="kw1">DATABASE</span> loganalyzer;<br />
<span class="kw1">CREATE</span> USER loganalyzer <span class="kw1">IDENTIFIED</span> <span class="kw1">BY</span> <span class="st0">&#8216;password&#8217;</span>;<br />
<span class="kw1">GRANT</span> <span class="kw1">ALL</span> PRIVILEGES <span class="kw1">ON</span> loganalyzer<span class="sy0">.*</span> <span class="kw1">TO</span> loganalyzer@localhost <span class="kw1">IDENTIFIED</span> <span class="kw1">BY</span> <span class="st0">&#8216;password&#8217;</span>;<br />
<span class="kw1">FLUSH</span> PRIVILEGES;</div>
</div>
<p>Passiamo adesso all&#8217;installazione del nostro loganalyzer.<br />
Spostiamoci dove abbiamo precendentemente decompresso i sorgenti di loganalyzer e dalla cartella contrib copiamo i file <em>configure.sh</em> e <em>secure.sh</em>.</p>
<div class="codesnip-container" >
<div class="bash codesnip" style="font-family:monospace;"><span class="kw2">cp</span> <span class="sy0">/</span>usr<span class="sy0">/</span>local<span class="sy0">/</span>src<span class="sy0">/</span>loganalyzer-x.y<span class="sy0">/</span>contrib<span class="sy0">/</span>configure.sh <span class="sy0">/</span>var<span class="sy0">/</span>www<span class="sy0">/</span>loganalyzer<span class="sy0">/</span><br />
<span class="kw2">cp</span> <span class="sy0">/</span>usr<span class="sy0">/</span>local<span class="sy0">/</span>src<span class="sy0">/</span>loganalyzer-x.y<span class="sy0">/</span>contrib<span class="sy0">/</span>secure.sh <span class="sy0">/</span>var<span class="sy0">/</span>www<span class="sy0">/</span>loganalyzer<span class="sy0">/</span></div>
</div>
<p>e diamo i permessi di esecuzione ai suddetti files.</p>
<div class="codesnip-container" >
<div class="bash codesnip" style="font-family:monospace;"><span class="kw2">chmod</span> +x <span class="sy0">/</span>var<span class="sy0">/</span>www<span class="sy0">/</span>loganalyzer<span class="sy0">/*</span>.sh<br />
<span class="kw3">cd</span> <span class="sy0">/</span>var<span class="sy0">/</span>www<span class="sy0">/</span>loganalyzer</div>
</div>
<p>e lanciamo</p>
<div class="codesnip-container" >
<div class="bash codesnip" style="font-family:monospace;">.<span class="sy0">/</span>configure.sh</div>
</div>
<p>Colleghiamoci all&#8217;indirizzo: <a href="http://ipdelserver/loganalyzer/">http://ipdelserver/loganalyzer/</a> e procediamo nella wizard di installazione associando quando richiesto le info relativo al database loganalyzer precedentemente creati, ed una volta giunti allo step 7 (configurazione dei log) bisogna dare le seguenti info:</p>
<ul>
<li>Name of the source: <em><strong>Un nome a nostra scelta</strong></em></li>
<li>Source type: <em><strong>Mysql Native</strong></em></li>
<li>Select View: <em><strong>Syslog Fields</strong></em></li>
<li>Table type: <em><strong>MonitorWare</strong></em></li>
<li>Database host: <em><strong>localhost</strong></em></li>
<li>Database name: <em><strong>Syslog</strong></em></li>
<li>Database tablename: <em><strong>SystemEvents</strong></em></li>
<li>Database user: <em><strong>rsyslog</strong></em></li>
<li>Password: <em><strong>passwordUtenteRsyslog</strong></em></li>
<li>Rnable Row Counting: <em><strong>No</strong></em></li>
</ul>
<p>Terminata l&#8217;installazione possiamo vedere adesso i nostri log collegandoci all&#8217;indirizzo http://server/loganalyzer.</p>
<p>Buon divertimento.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bananadocet.com/index.php/2011/05/configurare-un-syslog-server-con-linux/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Failed to get lock on destination repos. Ecco come risolvere.</title>
		<link>http://www.bananadocet.com/index.php/2011/05/failed-to-get-lock-on-destination-repos-come-risolvere/</link>
		<comments>http://www.bananadocet.com/index.php/2011/05/failed-to-get-lock-on-destination-repos-come-risolvere/#comments</comments>
		<pubDate>Mon, 16 May 2011 14:51:26 +0000</pubDate>
		<dc:creator>Gioachino Bartolotta</dc:creator>
				<category><![CDATA[Gestione Server]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[repository. svn]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[svnsync]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[tricks]]></category>

		<guid isPermaLink="false">http://www.bananadocet.com/?p=533</guid>
		<description><![CDATA[Ecco lo scenario: Abbiamo due server subversion che si sincronizzando utilizzando svnsync, come abbiamo visto in un post precedente. Adesso vediamo che quando cerca di sincronizzarsi con il server remoto, compare questo messaggio: Failed to get lock on destination repos, currently held by &#8216;myserver:d27d5a7c-7d79-11e0-b5bd-a5a363c8406c&#8217; Molto probabilmente il problema è stato causato a seguito di una [...]]]></description>
			<content:encoded><![CDATA[<p>Ecco lo scenario:<br />
Abbiamo due server subversion che si sincronizzando utilizzando svnsync, come abbiamo visto in un post precedente.<br />
Adesso vediamo che quando cerca di sincronizzarsi con il server remoto, compare questo messaggio:</p>
<div class="codesnip-container" >Failed to get lock on destination repos, currently held by &#8216;myserver:d27d5a7c-7d79-11e0-b5bd-a5a363c8406c&#8217;</div>
<p>Molto probabilmente il problema è stato causato a seguito di una caduta di connessione con la macchina da sincronizzare.</p>
<p><script type="text/javascript"><!--
google_ad_client = "ca-pub-8923523108033341";
/* 300_250 */
google_ad_slot = "5574097654";
google_ad_width = 300;
google_ad_height = 250;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<p>Non disperiamo! Ecco la procedura per risolvere il problema.</p>
<div class="codesnip-container" >
<div class="bash codesnip" style="font-family:monospace;"><span class="kw2">svn</span> propdel <span class="kw2">svn</span>:sync-lock <span class="re5">&#8211;revprop</span> <span class="re5">-r</span> <span class="nu0">0</span> indirizzoTargetRepository</div>
</div>
<p>Ovviamente il paramentro indirizzoTargetRepository può essere di tipo svn:// oppure file:/// o anche https:// etc etc.</p>
<p>Non ci resta che attendere lanciare il comando per richiamare il sync, oppure aspettare il prossimo commit.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bananadocet.com/index.php/2011/05/failed-to-get-lock-on-destination-repos-come-risolvere/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cambiare editor di default in debian/ubuntu? Semplice!</title>
		<link>http://www.bananadocet.com/index.php/2011/05/cambiare-editor-di-default-in-debianubuntu-semplice/</link>
		<comments>http://www.bananadocet.com/index.php/2011/05/cambiare-editor-di-default-in-debianubuntu-semplice/#comments</comments>
		<pubDate>Mon, 09 May 2011 15:44:48 +0000</pubDate>
		<dc:creator>Gioachino Bartolotta</dc:creator>
				<category><![CDATA[bash]]></category>
		<category><![CDATA[Gestione Server]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[console]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[editor]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[terminale]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[tricks]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.bananadocet.com/?p=525</guid>
		<description><![CDATA[Abbiamo visto qui come cambiare l&#8217;editor di default in gentoo, ed oggi vediamo un semplice trick per modificare l&#8217;editor di default in debian e derivate (Ubuntu &#038; Co.) Basta aprire una console e in Ubuntu digitare: sudo update-alternatives &#8211;config editor In debian come utente root update-alternatives &#8211;config editor Basterà digitare il numero corrispondente all&#8217;editor che [...]]]></description>
			<content:encoded><![CDATA[<p>Abbiamo visto <a href="http://www.bananadocet.com/index.php/2010/10/cambiare-editor-di-default-in-gentoo-linux/">qui</a> come cambiare l&#8217;editor di default in gentoo, ed oggi vediamo un semplice trick per modificare l&#8217;editor di default in debian e derivate (Ubuntu &#038; Co.)</p>
<p>Basta aprire una console e in Ubuntu digitare:</p>
<div class="codesnip-container" >
<div class="bash codesnip" style="font-family:monospace;"><span class="kw2">sudo</span> update-alternatives <span class="re5">&#8211;config</span> editor</div>
</div>
<p>In debian come utente root </p>
<div class="codesnip-container" >
<div class="bash codesnip" style="font-family:monospace;">update-alternatives <span class="re5">&#8211;config</span> editor</div>
</div>
<p>Basterà digitare il numero corrispondente all&#8217;editor che si vuole utilizzare ed il gioco è fatto.</p>
<p><script type="text/javascript"><!--
google_ad_client = "ca-pub-8923523108033341";
/* 300_250 */
google_ad_slot = "5574097654";
google_ad_width = 300;
google_ad_height = 250;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.bananadocet.com/index.php/2011/05/cambiare-editor-di-default-in-debianubuntu-semplice/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Script per eseguire il backup dei nostri repository subversion (svn)</title>
		<link>http://www.bananadocet.com/index.php/2011/05/script-per-eseguire-il-backup-dei-nostri-repository-subversion-svn/</link>
		<comments>http://www.bananadocet.com/index.php/2011/05/script-per-eseguire-il-backup-dei-nostri-repository-subversion-svn/#comments</comments>
		<pubDate>Mon, 02 May 2011 12:57:03 +0000</pubDate>
		<dc:creator>Gioachino Bartolotta</dc:creator>
				<category><![CDATA[bash]]></category>
		<category><![CDATA[Gestione Server]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[gentoo]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mailx]]></category>
		<category><![CDATA[mutt]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[scripting]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[tricks]]></category>

		<guid isPermaLink="false">http://www.bananadocet.com/?p=510</guid>
		<description><![CDATA[Oggi voglio postarvi un semplice script che possiamo utilizzare per fare il backup dei repository progetti che sono sotto controllo di versioning, e nello specifico che utilizzano svn. Questo script esegue un controllo su tutta la cartella dei repository di subversion ed esegue un backup di tutti quelli che sono repository validi, che hanno cioè [...]]]></description>
			<content:encoded><![CDATA[<p>Oggi voglio postarvi un semplice script che possiamo utilizzare per fare il backup dei repository progetti che sono sotto controllo di versioning, e nello specifico che utilizzano svn.</p>
<p>Questo script esegue un controllo su tutta la cartella dei repository di subversion ed esegue un backup di  tutti quelli che sono repository validi, che hanno cioè un file <em>format</em> all&#8217;interno della cartella del repository. </p>
<p>Dopo di che fa il backup e li sposta in una directory di backup dove il dump viene poi compresso.<br />
Il perchè di questa modalità è semplice. Per subversion la copia fisica del file è deleteria, in quanto poi ci troveremmo costretti a fare un successivo check della struttura stessa del database del repository.</p>
<p><script type="text/javascript"><!--
google_ad_client = "ca-pub-8923523108033341";
/* 300_250 */
google_ad_slot = "5574097654";
google_ad_width = 300;
google_ad_height = 250;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<div class="codesnip-container" >
<div class="bash codesnip" style="font-family:monospace;"><span class="co0">#!/bin/bash</span><br />
<span class="co0"># svn-backup.sh </span></p>
<p><span class="co0"># Un file di log per il controllo delle operazioni</span><br />
<span class="re2">LOGFILE</span>=<span class="st0">&quot;/var/log//svn_backup.<span class="es5">`date +%Y-%m-%d`</span>.log&quot;</span></p>
<p>
<span class="co0"># Programma per mail </span><br />
<span class="co0"># e relativi parametri di configurazione</span><br />
<span class="re2">MAIL_PROGRAM</span>=<span class="st0">&quot;mailx&quot;</span><br />
<span class="re2">MAIL_DEST</span>=<span class="st0">&quot;mioindirizzo@mailserver.tld&quot;</span></p>
<p><span class="co0"># La directory dei nostri repository</span><br />
<span class="re2">DIR_SVN</span>=<span class="st0">&quot;/var/svn&quot;</span></p>
<p><span class="co0"># Una directory temporanea dove appoggiare una copia del repository</span><br />
<span class="re2">DIR_TMP</span>=<span class="st0">&quot;/home/backup/backup_svn/tmp&quot;</span></p>
<p><span class="co0"># La directory dove salvare il dump compresso del repository</span></p>
<p><span class="re2">DIR_BACKUP</span>=<span class="st0">&quot;/home/backup/backup_svn/svn&quot;</span></p>
<p><span class="co0"># Directory dove salveremo il tar con i nostri repository</span><br />
<span class="re2">DIR_DUMP_TAR</span>=<span class="st0">&quot;/home/backup/backup_svn&quot;</span></p>
<p><span class="co0"># Nome del nostro file di backup</span><br />
<span class="re2">BACKUP_FILE</span>=<span class="st0">&quot;<span class="es5">`date +%Y-%m-%d`</span>_backup_repos_svn.tar.gz&quot;</span></p>
<p><span class="co0"># Se non esiste il file di log, crealo</span><br />
<span class="kw1">if</span> <span class="br0">&#91;</span> <span class="sy0">!</span> <span class="re5">-e</span> <span class="st0">&quot;<span class="es2">$LOGFILE</span>&quot;</span> <span class="br0">&#93;</span>; <span class="kw1">then</span><br />
&nbsp; <span class="kw2">touch</span> <span class="re1">$LOGFILE</span><br />
<span class="kw1">fi</span></p>
<p><span class="kw1">for</span> i <span class="kw1">in</span> <span class="sy0">`</span><span class="kw2">find</span> <span class="re1">$DIR_SVN</span> <span class="re5">-name</span> <span class="st_h">&#8216;db&#8217;</span><span class="sy0">`</span><br />
<span class="kw1">do</span><br />
&nbsp; <span class="co0"># Con questa espressione ci facciamo restituire il percorso relativo del repository</span><br />
&nbsp; <span class="co0"># sul quale andremo a fare il dump dei dati </span><br />
&nbsp; <span class="co0"># NOTA.</span><br />
&nbsp; <span class="co0"># Per estrarre la substring la sintassi è</span><br />
&nbsp; <span class="co0"># ${stringa:punto_partenza:lunghezza}</span><br />
&nbsp; <span class="co0"># Per estrarre la lunghezza della stringa &nbsp; &nbsp; </span><br />
&nbsp; <span class="co0"># ${#stringa}</span><br />
&nbsp; <span class="re2">REPO</span>=<span class="sy0">`</span><span class="kw2">dirname</span> <span class="st0">&quot;<span class="es3">${i:${#DIR_SVN}</span>+1:<span class="es3">${#i}</span>-<span class="es3">${#DIR_SVN}</span>}&quot;</span><span class="sy0">`</span></p>
<p>&nbsp; <span class="kw3">echo</span> <span class="st0">&quot;<span class="es5">`date +%Y-%m-%d`</span> <span class="es5">`date +%r`</span> : <span class="es2">$REPO</span>&quot;</span> <span class="sy0">&gt;&gt;</span> <span class="re1">$LOGFILE</span><br />
&nbsp; <span class="kw3">echo</span> <span class="st0">&quot;<span class="es5">`date +%Y-%m-%d`</span> <span class="es5">`date +%r`</span> : Creo la cartella <span class="es2">$REPO</span> nella dir temporanea &quot;</span> <span class="sy0">&gt;&gt;</span> <span class="re1">$LOGFILE</span></p>
<p>&nbsp; <span class="kw2">mkdir</span> <span class="re5">-p</span> <span class="re1">$DIR_TMP</span><span class="sy0">/</span>svn_backup<span class="sy0">/</span><span class="re1">$REPO</span><br />
&nbsp; <span class="kw3">echo</span> <span class="st0">&quot;<span class="es5">`date +%Y-%m-%d`</span> <span class="es5">`date +%r`</span> : Creo la cartella del backup per il repository <span class="es2">$REPO</span>&quot;</span> <span class="sy0">&gt;&gt;</span> <span class="re1">$LOGFILE</span><br />
&nbsp; <span class="kw2">mkdir</span> <span class="re5">-p</span> <span class="re1">$DIR_BACKUP</span><span class="sy0">/</span><span class="re1">$REPO</span></p>
<p>&nbsp; <span class="kw3">echo</span> <span class="st0">&quot;<span class="es5">`date +%Y-%m-%d`</span> <span class="es5">`date +%r`</span> : Eseguo hotcopy del repository <span class="es2">$REPO</span>&quot;</span> <span class="sy0">&gt;&gt;</span> <span class="re1">$LOGFILE</span></p>
<p>&nbsp; <span class="sy0">/</span>usr<span class="sy0">/</span>bin<span class="sy0">/</span><span class="kw2">svnadmin</span> hotcopy <span class="re1">$DIR_SVN</span><span class="sy0">/</span><span class="re1">$REPO</span> <span class="re1">$DIR_TMP</span><span class="sy0">/</span>svn_backup<span class="sy0">/</span><span class="re1">$REPO</span></p>
<p>&nbsp; <span class="kw3">echo</span> <span class="st0">&quot;<span class="es5">`date +%Y-%m-%d`</span> <span class="es5">`date +%r`</span> : Eseguo il dump del repository <span class="es2">$REPO</span>&quot;</span> <span class="sy0">&gt;&gt;</span> <span class="re1">$LOGFILE</span><br />
&nbsp; <span class="sy0">/</span>usr<span class="sy0">/</span>bin<span class="sy0">/</span><span class="kw2">svnadmin</span> dump <span class="st0">&quot;<span class="es2">$DIR_TMP</span>/svn_backup/<span class="es2">$REPO</span>&quot;</span> <span class="sy0">&gt;</span> <span class="st0">&quot;<span class="es2">$DIR_BACKUP</span>/<span class="es2">$REPO</span>/dump&quot;</span></p>
<p>&nbsp; <span class="kw3">echo</span> <span class="st0">&quot;<span class="es5">`date +%Y-%m-%d`</span> <span class="es5">`date +%r`</span> : Rimuovo cartella temporanea&quot;</span> <span class="sy0">&gt;&gt;</span> <span class="re1">$LOGFILE</span><br />
&nbsp; <span class="kw2">rm</span> <span class="re5">-Rf</span> <span class="re1">$DIR_TMP</span><span class="sy0">/</span>svn_backup<span class="sy0">/</span><span class="re1">$REPO</span><br />
&nbsp; <span class="kw3">echo</span> <span class="st0">&quot;&quot;</span> <span class="sy0">&gt;&gt;</span> <span class="re1">$LOGFILE</span><br />
<span class="kw1">done</span>;</p>
<p><span class="co0"># Compressione dei dump</span><br />
<span class="kw1">for</span> i <span class="kw1">in</span> <span class="sy0">`</span><span class="kw2">find</span> <span class="re1">$DIR_BACKUP</span> <span class="re5">-name</span> <span class="st_h">&#8216;dump&#8217;</span><span class="sy0">`</span><br />
<span class="kw1">do</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">bzip2</span> <span class="re1">$i</span><br />
<span class="kw1">done</span></p>
<p><span class="kw2">tar</span> <span class="re5">-zcf</span> <span class="re1">$DIR_DUMP_TAR</span><span class="sy0">/</span><span class="re1">$BACKUP_FILE</span> <span class="re1">$DIR_BACKUP</span></p>
<p><span class="co0"># Ripuliamo i dump &#8230; </span><br />
<span class="kw2">rm</span> <span class="re5">-Rf</span> <span class="re1">$DIR_BACKUP</span><span class="sy0">/*</span></p>
<p><span class="kw3">echo</span> <span class="st0">&quot;<span class="es5">`date +%Y-%m-%d-%T`</span> &#8230; Fine&quot;</span> <span class="sy0">&gt;&gt;</span> <span class="re1">$LOGFILE</span></p>
<p><span class="kw1">case</span> <span class="re1">$MAIL_PROG</span> <span class="kw1">in</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; mailx<span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co0"># Su gentoo va decommentata la seguente riga</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; uuenview <span class="re1">$LOGFILE</span> <span class="sy0">|</span> mailx <span class="re5">-s</span> <span class="st0">&quot;Log Backup repository svn&quot;</span> <span class="re1">$MAIL_DEST</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co0"># &nbsp; &nbsp; &nbsp; Questa invece va su debian</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co0"># &nbsp; &nbsp; &nbsp; uuencode $LOGFILE $LOGFILE | mailx -s &quot;Log Backup repository svn&quot; $MAIL_DEST</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">;;</span></p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; mutt<span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="sy0">|</span> mutt <span class="re5">-a</span> <span class="re1">$LOGFILE</span> <span class="re5">-s</span> <span class="st0">&quot;Log Backup repository svn&quot;</span> <span class="re1">$MAIL_DEST</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">;;</span><br />
<span class="kw1">esac</span></div>
</div>
<p>Carichiamo il nostro script in crontab ed il nostro backup è pronto!</p>
<p>Questo è tutto per ora.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bananadocet.com/index.php/2011/05/script-per-eseguire-il-backup-dei-nostri-repository-subversion-svn/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

