<?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>ldlabs.org - Blog &#187; program</title>
	<atom:link href="http://www.ldlabs.org/blog/tag/program/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ldlabs.org/blog</link>
	<description>Linux Tips &#38; c.</description>
	<lastBuildDate>Tue, 24 Jan 2012 08:09:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>Creazione di una rete di controllo per macchine virtuali,che permetta di raggiungerle dall&#8217;host con il loro hostname</title>
		<link>http://www.ldlabs.org/blog/2012/01/19/creazione-di-una-rete-di-controllo-per-macchine-virtuali/</link>
		<comments>http://www.ldlabs.org/blog/2012/01/19/creazione-di-una-rete-di-controllo-per-macchine-virtuali/#comments</comments>
		<pubDate>Wed, 18 Jan 2012 23:52:46 +0000</pubDate>
		<dc:creator>Francesco Apollonio</dc:creator>
				<category><![CDATA[Guide]]></category>
		<category><![CDATA[Howto]]></category>
		<category><![CDATA[KVM]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[VDE]]></category>
		<category><![CDATA[Virtualbricks]]></category>
		<category><![CDATA[Virtualizzazione]]></category>
		<category><![CDATA[code tips]]></category>
		<category><![CDATA[config]]></category>
		<category><![CDATA[guida virtualbricks]]></category>
		<category><![CDATA[kvm]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[program]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[utility]]></category>
		<category><![CDATA[varie]]></category>
		<category><![CDATA[vde]]></category>
		<category><![CDATA[virtual]]></category>
		<category><![CDATA[virtualbricks]]></category>

		<guid isPermaLink="false">http://www.ldlabs.org/blog/?p=894</guid>
		<description><![CDATA[<style type="text/css">
#leftcontainerBox {
float:left;
position: fixed;
top:40%;
left:60px;
z-index:1;
#F0F4F9 
}

#leftcontainerBox .buttons {
float:left;
clear:both;
margin:4px 4px 4px 4px;
width:110px;
height:60px;
padding-bottom:2px;
}


#bottomcontainerBox {
float:left;
height:30px;
width:100%;
#F0F4F9}

#bottomcontainerBox .buttons {
float:left;
height:30px;
width:110px;
margin:4px 4px 4px 4px;
}

</style>
Dovendo gestire più di un testbed formato da macchine virtuali di numero, tipologia e topologie diverse, mi sono imbattuto in alcuni problemi. I sistemi che utilizzo sono macchine virtuali KVM e VDE per gestire la rete. Per gestirli ovviamente utilizzo Virtualbricks poiché mi semplifica, e non di poco, la vita. Il problema Il problema che [...]]]></description>
			<content:encoded><![CDATA[<style type="text/css">
#leftcontainerBox {
float:left;
position: fixed;
top:40%;
left:60px;
z-index:1;
#F0F4F9 
}

#leftcontainerBox .buttons {
float:left;
clear:both;
margin:4px 4px 4px 4px;
width:110px;
height:60px;
padding-bottom:2px;
}


#bottomcontainerBox {
float:left;
height:30px;
width:100%;
#F0F4F9}

#bottomcontainerBox .buttons {
float:left;
height:30px;
width:110px;
margin:4px 4px 4px 4px;
}

</style>
<p>Dovendo gestire più di un testbed formato da macchine virtuali di numero, tipologia e topologie diverse, mi sono imbattuto in alcuni problemi. I sistemi che utilizzo sono macchine virtuali KVM e VDE per gestire la rete. Per gestirli ovviamente utilizzo Virtualbricks poiché mi semplifica, e non di poco, la vita.</p>
<p><strong>Il problema</strong></p>
<p>Il problema che voglio affrontare in questo articolo è un problema di semplificazione all&#8217;accesso da remoto alle varie macchine virtuali, ovvero: come fare ad accedere, utilizzando SSH, alle varie macchine virtuali utilizzando come nome degli host i nomi delle macchine virtuali che ho impostato su Virtualbricks? E soprattutto questo meccanismo può essere automatizzato, in modo che ogni macchina virtuale, appena viene lanciata, istruisca la macchina host su quale è la combinazione hostname &#8211; IP corretta per comunicare con essa?</p>
<p><strong><span id="more-894"></span>Il primo passo: l&#8217;assegnamento degli indirizzi IP</strong></p>
<p>Data la dinamicità della topologia, impostare indirizzi IP statici è di poca utilità, occorre quindi utilizzare un server DHCP per assegnare gli indirizzi, il che vuol dire che i SO delle macchine virtuali devono essere configurati per prendere l&#8217;IP automaticamente via DHCP al boot, e questo è il primo passo.</p>
<p><strong>Secondo passo: il server DHCP</strong></p>
<p>Il secondo passo è l&#8217;installazione del server DHCP sulla macchina host. La scelta è caduta su dnsmasq che, tra le altre cose, permette anche di associare uno script che viene lanciato subito dopo la ricezione di una richiesta DHCP al server, il che ci sarà molto utile più avanti. Per quanto riguarda il file di configurazione, esso sarà molto semplice:</p>
<p>interface=tap0<br />
dhcp-range=10.0.0.100,10.0.0.200,255.255.255.0,12h<br />
dhcp-script=/bin/add_hosts.sh</p>
<p>La prima riga specifica su che interfaccia si vuole restare in ascolto, il perché essa sia &#8220;tap0&#8243; verrà spiegato più avanti. La seconda è il range di indirizzi IP e la netmask che si vuole utilizzare. Infine viene specificato lo script che deve essere lanciato.</p>
<p><strong>Terzo passo: la topologia</strong></p>
<p style="text-align: center;">&nbsp;</p>
<div class="mceTemp mceIEcenter" style="text-align: left;">
<dl id="attachment_898" class="wp-caption aligncenter" style="width: 608px;">
<dt class="wp-caption-dt"><a href="http://www.ldlabs.org/blog/wp-content/uploads/2012/01/topologia.png"><img class="size-full wp-image-898  colorbox-894" title="topologia" src="http://www.ldlabs.org/blog/wp-content/uploads/2012/01/topologia.png" alt="Topologia da realizzare" width="598" height="298" /></a></dt>
<dd class="wp-caption-dd">Topologia da Realizzare</dd>
</dl>
</div>
<p style="text-align: left;">Come indicato dalla figura, la topologia è composta da 5 componenti: tre VM, un VDE Switch e una interfaccia di tap. Quest&#8217;ultima in particolare è una interfaccia di rete simulata che funziona come punto di interconnessione tra la rete virtuale e la macchina host. Utilzzandola e assegnandole un indirizzo IP (come se fosse una normale scheda di rete) la macchina host diverrà parte integrante della rete e sarà connessa direttamente alle macchine virtuali. L&#8217;interfaccia di tap (e di conseguenza la macchina host nella rete) in questo esempio ha indirizzo 10.0.0.1.</p>
<p style="text-align: left;"><strong>Quarto passo: dove salvare le informazioni su come raggiungere le macchine virtuali?</strong></p>
<p style="text-align: left;">Le informazioni che devo salvare sono due: hostname e indirizzo IP. Qual&#8217;è il posto migliore per salvare questo tipo di informazioni, in modo che siano prioritarie rispetto ai DNS? Ovviamente la risposta è il file <em>/etc/hosts</em>.</p>
<p style="text-align: left;"><strong>Quinto passo: che parametri vengono passati allo script dal server DHCP?</strong></p>
<p style="text-align: left;">I parametri che il server DHCP invia allo script che è stato configurato per essere eseguito all&#8217;arrivo di una richiesta sono 4: il comando (add se è arrivata una richiesta di assegnazione, old se la richiesta per il dato mac address è già stata servita una volta, del per il release), il mac address, l&#8217;indirizzo IP assegnato ed l&#8217;hostname. Quest&#8217;ultimo purtroppo non è sempre inviato da tutti i client DHCP, per questo ho trovato un modo alternativo per recuperare l&#8217;hostname nei casi in cui non sia fornito.</p>
<p style="text-align: left;"><strong>Sesto passo: script per il salvataggio delle informazioni</strong></p>
<p style="text-align: left;">E questa è la parte un po&#8217; più complicata. Ecco a voi lo script che aggiunge automaticamente al file hosts le coppie hostname &#8211; indirizzo IP delle varie VM:<strong><br />
</strong></p>

<div class="wp_codebox"><table><tr id="p8942"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
</pre></td><td class="code" id="p894code2"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#!/usr/bin/python</span>
<span style="color: #808080; font-style: italic;"># script created by Francesco Apollonio and released under GNU General Public License version 2</span>
<span style="color: #808080; font-style: italic;"># http://www.ldlabs.org/</span>
<span style="color: #808080; font-style: italic;"># script that add a VM who requests an IP address using the dhcpd to local hosts file</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">sys</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">subprocess</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">string</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">time</span>
&nbsp;
debug_file=<span style="color: #483d8b;">&quot;/var/log/add_hosts.log&quot;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> debug<span style="color: black;">&#40;</span>message<span style="color: black;">&#41;</span>:
   message = <span style="color: #dc143c;">time</span>.<span style="color: black;">strftime</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;%d %b %Y %H:%M:%S&quot;</span><span style="color: black;">&#41;</span> + <span style="color: #483d8b;">&quot; &quot;</span> + message
   <span style="color: #ff7700;font-weight:bold;">print</span> message
   fd = <span style="color: #008000;">open</span><span style="color: black;">&#40;</span>debug_file, <span style="color: #483d8b;">&quot;a&quot;</span><span style="color: black;">&#41;</span>
   fd.<span style="color: black;">write</span><span style="color: black;">&#40;</span>message + <span style="color: #483d8b;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: black;">&#41;</span>
   fd.<span style="color: black;">close</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
text=<span style="color: #483d8b;">&quot;&quot;</span>
<span style="color: #ff7700;font-weight:bold;">for</span> arg <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #dc143c;">sys</span>.<span style="color: black;">argv</span>:
   text = text +<span style="color: #483d8b;">&quot; &quot;</span>+arg
debug<span style="color: black;">&#40;</span>text<span style="color: black;">&#41;</span>   
&nbsp;
action=<span style="color: #dc143c;">sys</span>.<span style="color: black;">argv</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span>
ip=<span style="color: #dc143c;">sys</span>.<span style="color: black;">argv</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">3</span><span style="color: black;">&#93;</span>
mac=<span style="color: #dc143c;">sys</span>.<span style="color: black;">argv</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">2</span><span style="color: black;">&#93;</span>
hosts=<span style="color: #483d8b;">&quot;/etc/hosts&quot;</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># if del action is called exit from this script</span>
<span style="color: #ff7700;font-weight:bold;">if</span> action == <span style="color: #483d8b;">&quot;del&quot;</span>:
   fd=<span style="color: #008000;">open</span><span style="color: black;">&#40;</span>hosts, <span style="color: #483d8b;">&quot;r&quot;</span><span style="color: black;">&#41;</span>
   hosts_lines=fd.<span style="color: black;">readlines</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
   fd.<span style="color: black;">close</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
   fd=<span style="color: #008000;">open</span><span style="color: black;">&#40;</span>hosts, <span style="color: #483d8b;">&quot;w&quot;</span><span style="color: black;">&#41;</span>
   <span style="color: #ff7700;font-weight:bold;">for</span> line <span style="color: #ff7700;font-weight:bold;">in</span> hosts_lines:
      <span style="color: #ff7700;font-weight:bold;">if</span> ip <span style="color: #ff7700;font-weight:bold;">not</span> <span style="color: #ff7700;font-weight:bold;">in</span> line:
         fd.<span style="color: black;">write</span><span style="color: black;">&#40;</span>line<span style="color: black;">&#41;</span>
&nbsp;
   debug<span style="color: black;">&#40;</span> <span style="color: #483d8b;">&quot;Ok, %s deleted from %s file&quot;</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>name, hosts<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
   <span style="color: #dc143c;">sys</span>.<span style="color: black;">exit</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#41;</span>      
&nbsp;
<span style="color: #808080; font-style: italic;"># add address to local hosts file</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #008000;">len</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">sys</span>.<span style="color: black;">argv</span><span style="color: black;">&#41;</span> == <span style="color: #ff4500;">5</span>:
   name = <span style="color: #dc143c;">sys</span>.<span style="color: black;">argv</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">4</span><span style="color: black;">&#93;</span>
   debug<span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;host name from parameters: &quot;</span>+name<span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">else</span>:
   command = <span style="color: #483d8b;">&quot;ps ax | grep /usr/bin/kvm&quot;</span>
   process = <span style="color: #dc143c;">subprocess</span>.<span style="color: black;">Popen</span><span style="color: black;">&#40;</span>command, stdout=<span style="color: #dc143c;">subprocess</span>.<span style="color: black;">PIPE</span>, shell=<span style="color: #008000;">True</span><span style="color: black;">&#41;</span>
   found = <span style="color: #008000;">None</span>
   <span style="color: #ff7700;font-weight:bold;">for</span> line <span style="color: #ff7700;font-weight:bold;">in</span> process.<span style="color: black;">stdout</span>.<span style="color: black;">readlines</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:
      pid=line.<span style="color: black;">split</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot; &quot;</span><span style="color: black;">&#41;</span>
      pid = pid<span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span>
      fd_c = <span style="color: #008000;">open</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;/proc/&quot;</span>+pid+<span style="color: #483d8b;">&quot;/cmdline&quot;</span>, <span style="color: #483d8b;">&quot;r&quot;</span><span style="color: black;">&#41;</span>
      lines=fd_c.<span style="color: black;">readlines</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
      fd_c.<span style="color: black;">close</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
      <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #008000;">len</span><span style="color: black;">&#40;</span>lines<span style="color: black;">&#41;</span><span style="color: #66cc66;">&amp;</span>gt<span style="color: #66cc66;">;</span><span style="color: #ff4500;">0</span>:
         line=lines<span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span>
         line=<span style="color: #dc143c;">string</span>.<span style="color: black;">replace</span><span style="color: black;">&#40;</span>line, <span style="color: #483d8b;">&quot;-&quot;</span>, <span style="color: #483d8b;">&quot; -&quot;</span><span style="color: black;">&#41;</span>
         line=<span style="color: #dc143c;">string</span>.<span style="color: black;">replace</span><span style="color: black;">&#40;</span>line, <span style="color: #483d8b;">&quot;<span style="color: #000099; font-weight: bold;">\x</span>00&quot;</span>, <span style="color: #483d8b;">&quot; &quot;</span><span style="color: black;">&#41;</span>
      <span style="color: #ff7700;font-weight:bold;">else</span>:
         <span style="color: #ff7700;font-weight:bold;">continue</span>
      <span style="color: #ff7700;font-weight:bold;">if</span> mac <span style="color: #ff7700;font-weight:bold;">in</span> line <span style="color: #ff7700;font-weight:bold;">and</span> <span style="color: #483d8b;">&quot;add_host&quot;</span> <span style="color: #ff7700;font-weight:bold;">not</span> <span style="color: #ff7700;font-weight:bold;">in</span> line:
         found = line
         <span style="color: #ff7700;font-weight:bold;">break</span>
   <span style="color: #ff7700;font-weight:bold;">if</span> found <span style="color: #ff7700;font-weight:bold;">is</span> <span style="color: #008000;">None</span>:
      debug<span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Ops, no VM with %s found&quot;</span> <span style="color: #66cc66;">%</span> mac<span style="color: black;">&#41;</span>
      <span style="color: #dc143c;">sys</span>.<span style="color: black;">exit</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span>
   parms = found.<span style="color: black;">split</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot; -&quot;</span><span style="color: black;">&#41;</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span>:<span style="color: black;">&#93;</span>
   name=<span style="color: #008000;">False</span>
&nbsp;
   <span style="color: #ff7700;font-weight:bold;">for</span> par <span style="color: #ff7700;font-weight:bold;">in</span> parms:
      <span style="color: #ff7700;font-weight:bold;">if</span> par.<span style="color: black;">strip</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>.<span style="color: black;">startswith</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;name&quot;</span><span style="color: black;">&#41;</span>:
         name = par.<span style="color: black;">strip</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>.<span style="color: black;">split</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot; &quot;</span><span style="color: black;">&#41;</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">if</span> name <span style="color: #ff7700;font-weight:bold;">is</span> <span style="color: #008000;">False</span>:
   debug<span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Ops, VM name not found&quot;</span><span style="color: black;">&#41;</span>
   <span style="color: #dc143c;">sys</span>.<span style="color: black;">exit</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">2</span><span style="color: black;">&#41;</span>
&nbsp;
fd=<span style="color: #008000;">open</span><span style="color: black;">&#40;</span>hosts, <span style="color: #483d8b;">&quot;r&quot;</span><span style="color: black;">&#41;</span>
&nbsp;
hosts_lines=fd.<span style="color: black;">readlines</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
fd.<span style="color: black;">close</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
already=<span style="color: #008000;">False</span>
<span style="color: #ff7700;font-weight:bold;">for</span> line <span style="color: #ff7700;font-weight:bold;">in</span> hosts_lines:
   <span style="color: #ff7700;font-weight:bold;">if</span> name <span style="color: #ff7700;font-weight:bold;">in</span> line:
      already=line
      <span style="color: #ff7700;font-weight:bold;">break</span>
change=<span style="color: #008000;">False</span>
<span style="color: #ff7700;font-weight:bold;">if</span> already <span style="color: #ff7700;font-weight:bold;">is</span> <span style="color: #ff7700;font-weight:bold;">not</span> <span style="color: #008000;">False</span>:
   <span style="color: #ff7700;font-weight:bold;">if</span> ip <span style="color: #ff7700;font-weight:bold;">in</span> line:
      debug<span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Ok, VM already in hosts file&quot;</span><span style="color: black;">&#41;</span>
      <span style="color: #dc143c;">sys</span>.<span style="color: black;">exit</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#41;</span>
   <span style="color: #ff7700;font-weight:bold;">else</span>:
      change=<span style="color: #008000;">True</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">if</span> change <span style="color: #ff7700;font-weight:bold;">is</span> <span style="color: #008000;">False</span>:
   fd=<span style="color: #008000;">open</span><span style="color: black;">&#40;</span>hosts, <span style="color: #483d8b;">&quot;a&quot;</span><span style="color: black;">&#41;</span>
   fd.<span style="color: black;">write</span><span style="color: black;">&#40;</span>ip + <span style="color: #483d8b;">&quot;<span style="color: #000099; font-weight: bold;">\t</span><span style="color: #000099; font-weight: bold;">\t</span>&quot;</span> + name +<span style="color: #483d8b;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">else</span>:
   fd=<span style="color: #008000;">open</span><span style="color: black;">&#40;</span>hosts, <span style="color: #483d8b;">&quot;w&quot;</span><span style="color: black;">&#41;</span>
   <span style="color: #ff7700;font-weight:bold;">for</span> line <span style="color: #ff7700;font-weight:bold;">in</span> hosts_lines:
      <span style="color: #ff7700;font-weight:bold;">if</span> name <span style="color: #ff7700;font-weight:bold;">in</span> line:
         line = ip + <span style="color: #483d8b;">&quot;<span style="color: #000099; font-weight: bold;">\t</span><span style="color: #000099; font-weight: bold;">\t</span>&quot;</span> + name + <span style="color: #483d8b;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
      fd.<span style="color: black;">write</span><span style="color: black;">&#40;</span>line<span style="color: black;">&#41;</span>
&nbsp;
fd.<span style="color: black;">close</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
debug<span style="color: black;">&#40;</span> <span style="color: #483d8b;">&quot;Ok, %s added to %s file&quot;</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>name, hosts<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span></pre></td></tr></table></div>

<p style="text-align: left;">Il funzionamento è abbastanza semplice. In caso di comando &#8220;add&#8221; o &#8220;old&#8221; ricevuto dal server DHCP, lo script prima controlla se l&#8217;hostname è stato fornito dalla richiesta DHCP,  e in questo caso procede direttamente al salvataggio. Se invece l&#8217;hostname non è stato fornito, lo script scansiona la lista dei processi KVM che sono in esecuzione. Poi si procura la command line completa con le quali le macchine virtuali sono state eseguite leggendola dall&#8217;apposito file nella cartella /proc (in una prima versione usavo direttamente l&#8217;output di <em>ps</em> per ottenere queste informazioni, ma, in determinate circostanze, la command line veniva tagliata, rendendo inutilizzabile lo script, per questo ho optato per recuperare le informazioni da /proc). Una volta ottenuta la command line il gioco è fatto: estraggo il nome della macchina virtuale impostato in Virtualbricks, apro il file hosts controllo che non ci sia già una voce per la macchina virtuale che ha richiesto l&#8217;indirizzo; se esiste allora semplicemente aggiorno l&#8217;indirizzo IP, se invece non esiste aggiungo una nuova voce.<br />
Per quanto riguarda &#8220;del&#8221;, invece, apro il file hosts e se vi è l&#8217;indirizzo ip specificato, elimino la linea che lo contiene.</p>
<p style="text-align: left;"><strong>Parte sette: conclusioni e sviluppi futuri<br />
</strong></p>
<p style="text-align: left;">Bene l&#8217;architettura funziona più che bene (la utilizzo quotidianamente). Questa è ovviamente solo una applicazione per poter creare una &#8220;rete di controllo&#8221; che permetta una più semplice gestione di un numero variabile di macchine virtuali. Per i prossimi sviluppi restate in ascolto <img src='http://www.ldlabs.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley colorbox-894' /> </p>
<div id="bottomcontainerBox">
			<div class="buttons">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.ldlabs.org%2Fblog%2F2012%2F01%2F19%2Fcreazione-di-una-rete-di-controllo-per-macchine-virtuali%2F&amp;layout=button_count&amp;show_faces=false&amp;width=100&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:100px; height:21px;" allowTransparency="true"></iframe></div>
			<div class="buttons">
			<g:plusone size="medium" href="http://www.ldlabs.org/blog/2012/01/19/creazione-di-una-rete-di-controllo-per-macchine-virtuali/"></g:plusone>
			</div>
			<div class="buttons">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.ldlabs.org/blog/2012/01/19/creazione-di-una-rete-di-controllo-per-macchine-virtuali/"  data-text="Creazione di una rete di controllo per macchine virtuali,che permetta di raggiungerle dall&#8217;host con il loro hostname" data-count="horizontal">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://www.ldlabs.org/blog/2012/01/19/creazione-di-una-rete-di-controllo-per-macchine-virtuali/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>VNC &amp; HTML5: Visualizzare il desktop remoto tramite un web browser con Guacamole</title>
		<link>http://www.ldlabs.org/blog/2011/07/12/vnc-html5-visualizzare-il-desktop-remoto-tramite-un-web-browser-con-guacamole/</link>
		<comments>http://www.ldlabs.org/blog/2011/07/12/vnc-html5-visualizzare-il-desktop-remoto-tramite-un-web-browser-con-guacamole/#comments</comments>
		<pubDate>Tue, 12 Jul 2011 09:47:47 +0000</pubDate>
		<dc:creator>Francesco Apollonio</dc:creator>
				<category><![CDATA[Guide]]></category>
		<category><![CDATA[recensione]]></category>
		<category><![CDATA[annunci]]></category>
		<category><![CDATA[canvas]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[program]]></category>
		<category><![CDATA[tomcat]]></category>
		<category><![CDATA[utility]]></category>
		<category><![CDATA[varie]]></category>
		<category><![CDATA[vnc]]></category>

		<guid isPermaLink="false">http://www.ldlabs.org/blog/?p=872</guid>
		<description><![CDATA[<style type="text/css">
#leftcontainerBox {
float:left;
position: fixed;
top:40%;
left:60px;
z-index:1;
#F0F4F9 
}

#leftcontainerBox .buttons {
float:left;
clear:both;
margin:4px 4px 4px 4px;
width:110px;
height:60px;
padding-bottom:2px;
}


#bottomcontainerBox {
float:left;
height:30px;
width:100%;
#F0F4F9}

#bottomcontainerBox .buttons {
float:left;
height:30px;
width:110px;
margin:4px 4px 4px 4px;
}

</style>
Utilizzando macchine (virtuali e non) remote, mi capita spesso di dover utilizzare VNC per avere accesso al desktop, talvolta serve anche un ambiente grafico. Sono venuto a conoscenza qualche giorno fa di Guacamole, programma che permette di accedere al desktop VNC attraverso un normalissimo browser web che supporti però il tag canvas di HTML5. Il [...]]]></description>
			<content:encoded><![CDATA[<style type="text/css">
#leftcontainerBox {
float:left;
position: fixed;
top:40%;
left:60px;
z-index:1;
#F0F4F9 
}

#leftcontainerBox .buttons {
float:left;
clear:both;
margin:4px 4px 4px 4px;
width:110px;
height:60px;
padding-bottom:2px;
}


#bottomcontainerBox {
float:left;
height:30px;
width:100%;
#F0F4F9}

#bottomcontainerBox .buttons {
float:left;
height:30px;
width:110px;
margin:4px 4px 4px 4px;
}

</style>
<p style="text-align: left;">Utilizzando macchine (virtuali e non) remote, mi capita spesso di dover utilizzare VNC per avere accesso al desktop, talvolta serve anche un ambiente grafico. Sono venuto a conoscenza qualche giorno fa di <a href="http://guacamole.sourceforge.net/" target="_blank">Guacamole</a>, programma che permette di accedere al desktop VNC attraverso un normalissimo browser web che supporti però il tag canvas di HTML5.</p>
<div id="attachment_874" class="wp-caption aligncenter" style="width: 533px"><a href="http://www.ldlabs.org/blog/wp-content/uploads/2011/07/screenshot2.jpeg"><img class="size-large wp-image-874  colorbox-872" title="Guacamole_browser" src="http://www.ldlabs.org/blog/wp-content/uploads/2011/07/screenshot2-1024x539.jpg" alt="" width="523" height="275" /></a><p class="wp-caption-text">Desktop remoto con Guacamole nel browser</p></div>
<p><span id="more-872"></span>Il programma funziona benissimo e velocemente, l&#8217;unica cosa un po&#8217; complicata è l&#8217;installazione. Per prima cosa occorre installare <strong>Tomcat6. </strong>Infatti il cuore che permette il tutto è un applicazione in Java che invia al browser le informazioni per poter visualizzare il desktop. Eseguiamo l&#8217;installazione:</p>
<pre># apt-get install tomcat6 libvncserver0</pre>
<p>Ora che il web server è installato, occorre scaricare il programma da <a href="http://sourceforge.net/projects/guacamole/files/guacamole-0.2.6.tar.gz/download?use_mirror=mesh" target="_blank">questo link</a>. Dopo aver scompattato l&#8217;archivio, quello che ci troviamo davanti sono alcuni file xml (file di configurazione) ed un war (archivio contenente l&#8217;applicazione vera e propria). Questa è la procedura d&#8217;installazione:</p>
<pre># cp guacamole-users.xml /etc/tomcat6/
# mkdir -p /var/lib/guacamole
# cp guacamole.war /var/lib/guacamole/
# cp guacamole.xml /etc/tomcat6/Catalina/localhost/</pre>
<p>I file sono ora installati nel webserver ma occorre configurarli. In particolare in <strong>/etc/tomcat6/guacamole-users.xml </strong>troviamo la coppia <em>user:password</em> che ci viene chiesta all&#8217;apertura dell&#8217;applicazione, non si tratta della password di VNC ma di una <span style="text-decoration: underline;">password propria dell&#8217;applicazione</span>. Nel file<strong> /etc/tomcat6/Catalina/localhost/guacamole.xml</strong> invece sono contenute l&#8217;informazioni del server VNC:</p>
<pre>&lt;Parameter name="host" value="localhost"/&gt;
&lt;Parameter name="port" value="5901"/&gt;
&lt;Parameter name="password" value="PASSWORD"/&gt;</pre>
<p>I parametri che ci interessano sono questi tre elencati sopra, e vanno riempiti con i dati del server VNC. In particolare per calcolare la porta, occorre ottenere il numero desktop virtuale avviato (:1 ad esempio) e sommarlo a 5900. In questo caso quindi il server a cui ci connettiamo è :1. Per avviare un nuovo server VNC ovviamente digitiamo il comando:</p>
<pre>$ vncserver
New 'X' desktop is home:1</pre>
<p>Se è la prima volta che avviamo un server VNC, ci verrà chiesta la password per l&#8217;accesso (non è obbligatorio inserirla), quella che deve essere inclusa nel file <em>guacamole.xml</em>. Ora riavviamo il server web:</p>
<p># service tomcat6 restart</p>
<p>e colleghiamoci all&#8217;applicazione tramite il nostro browser (occhio ad utilizzare uno compatibile con il tag CANVAS di HTML5, chromium/chrome o Firefox 5 vanno benissimo) utilizzando il link:</p>
<pre>http://localhost:8080/guacamole/</pre>
<p>ci verrà prima richiesto di effettuare l&#8217;autenticazione del programma. Se non avete cambiato <em>guacamole-users.xml</em> l&#8217;username è &#8216;<em>guacamole</em>&#8216; e la password &#8216;<em>changeme</em>&#8216;, ovviamente è fortemente consigliato cambiarla. Dopo aver inserito anche la password del server VNC (se ovviamente è stata impostata):</p>
<p style="text-align: center;">&nbsp;</p>
<div class="mceTemp mceIEcenter" style="text-align: left;">
<dl id="attachment_873" class="wp-caption aligncenter" style="width: 584px;">
<dt class="wp-caption-dt"><a href="http://www.ldlabs.org/blog/wp-content/uploads/2011/07/screenshot1.jpeg"><img class="size-large wp-image-873   colorbox-872" title="screenshot1" src="http://www.ldlabs.org/blog/wp-content/uploads/2011/07/screenshot1-1024x576.jpg" alt="Guacamole in azione" width="574" height="322" /></a></dt>
<dd class="wp-caption-dd">Guacamole in azione</dd>
</dl>
</div>
<p style="text-align: left;">Ecco fatto ora accedere al vostro server VNC sarà molto più semplice, infatti impostando ad esempio come porta di Tomcat la 80, potrete accedere al desktop remoto in tranquillità anche in presenza di proxy non troppo permissivi!</p>
<p style="text-align: left;">Buon lavoro!</p>
<div id="bottomcontainerBox">
			<div class="buttons">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.ldlabs.org%2Fblog%2F2011%2F07%2F12%2Fvnc-html5-visualizzare-il-desktop-remoto-tramite-un-web-browser-con-guacamole%2F&amp;layout=button_count&amp;show_faces=false&amp;width=100&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:100px; height:21px;" allowTransparency="true"></iframe></div>
			<div class="buttons">
			<g:plusone size="medium" href="http://www.ldlabs.org/blog/2011/07/12/vnc-html5-visualizzare-il-desktop-remoto-tramite-un-web-browser-con-guacamole/"></g:plusone>
			</div>
			<div class="buttons">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.ldlabs.org/blog/2011/07/12/vnc-html5-visualizzare-il-desktop-remoto-tramite-un-web-browser-con-guacamole/"  data-text="VNC &#038; HTML5: Visualizzare il desktop remoto tramite un web browser con Guacamole" data-count="horizontal">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://www.ldlabs.org/blog/2011/07/12/vnc-html5-visualizzare-il-desktop-remoto-tramite-un-web-browser-con-guacamole/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Disabilitare il touchpad synaptics quando si digita sulla tastiera</title>
		<link>http://www.ldlabs.org/blog/2011/05/20/disabilitare-il-touchpad-synaptics-quando-si-digita-sulla-tastiera/</link>
		<comments>http://www.ldlabs.org/blog/2011/05/20/disabilitare-il-touchpad-synaptics-quando-si-digita-sulla-tastiera/#comments</comments>
		<pubDate>Fri, 20 May 2011 10:10:32 +0000</pubDate>
		<dc:creator>Francesco Apollonio</dc:creator>
				<category><![CDATA[Guide]]></category>
		<category><![CDATA[config]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[program]]></category>
		<category><![CDATA[synaptics]]></category>
		<category><![CDATA[touchpad]]></category>
		<category><![CDATA[utility]]></category>
		<category><![CDATA[varie]]></category>

		<guid isPermaLink="false">http://www.ldlabs.org/blog/?p=777</guid>
		<description><![CDATA[<style type="text/css">
#leftcontainerBox {
float:left;
position: fixed;
top:40%;
left:60px;
z-index:1;
#F0F4F9 
}

#leftcontainerBox .buttons {
float:left;
clear:both;
margin:4px 4px 4px 4px;
width:110px;
height:60px;
padding-bottom:2px;
}


#bottomcontainerBox {
float:left;
height:30px;
width:100%;
#F0F4F9}

#bottomcontainerBox .buttons {
float:left;
height:30px;
width:110px;
margin:4px 4px 4px 4px;
}

</style>
Quello di trovarsi a scrivere da un altra parte, perchè il mouse s&#8217;è spostato &#8220;da solo&#8221;, è un fastidiosissimo problema. Può essere semplicemente risolto avviando il demone synaptic tramite il comando: $ syndaemon -d -t -i 2 Dove -i2 è il tempo d&#8217;attesa dopo la pressione di un tasto per riabilitare il mouse (in questo [...]]]></description>
			<content:encoded><![CDATA[<style type="text/css">
#leftcontainerBox {
float:left;
position: fixed;
top:40%;
left:60px;
z-index:1;
#F0F4F9 
}

#leftcontainerBox .buttons {
float:left;
clear:both;
margin:4px 4px 4px 4px;
width:110px;
height:60px;
padding-bottom:2px;
}


#bottomcontainerBox {
float:left;
height:30px;
width:100%;
#F0F4F9}

#bottomcontainerBox .buttons {
float:left;
height:30px;
width:110px;
margin:4px 4px 4px 4px;
}

</style>
<p>Quello di trovarsi a scrivere da un altra parte, perchè il mouse s&#8217;è spostato &#8220;da solo&#8221;, è un fastidiosissimo problema.</p>
<p>Può essere semplicemente risolto avviando il demone synaptic tramite il comando:</p>
<p>$ syndaemon -d -t -i 2</p>
<p>Dove -i2 è il tempo d&#8217;attesa dopo la pressione di un tasto per riabilitare il mouse (in questo caso 2 secondi). Si può anche bloccare il movimento del mouse (e non solo il tapping e lo scrolling) togliendo il parametro -t. Si possono ignorare la pressione di tasti speciali o di combinazioni di essi tramite le opzioni -k e -K.</p>
<p>Bene, ora posso tornare a scrivere <img src='http://www.ldlabs.org/blog/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley colorbox-777' /> </p>
<div id="bottomcontainerBox">
			<div class="buttons">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.ldlabs.org%2Fblog%2F2011%2F05%2F20%2Fdisabilitare-il-touchpad-synaptics-quando-si-digita-sulla-tastiera%2F&amp;layout=button_count&amp;show_faces=false&amp;width=100&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:100px; height:21px;" allowTransparency="true"></iframe></div>
			<div class="buttons">
			<g:plusone size="medium" href="http://www.ldlabs.org/blog/2011/05/20/disabilitare-il-touchpad-synaptics-quando-si-digita-sulla-tastiera/"></g:plusone>
			</div>
			<div class="buttons">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.ldlabs.org/blog/2011/05/20/disabilitare-il-touchpad-synaptics-quando-si-digita-sulla-tastiera/"  data-text="Disabilitare il touchpad synaptics quando si digita sulla tastiera" data-count="horizontal">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://www.ldlabs.org/blog/2011/05/20/disabilitare-il-touchpad-synaptics-quando-si-digita-sulla-tastiera/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rilasciato Virtualbricks 0.4.276!</title>
		<link>http://www.ldlabs.org/blog/2011/05/10/rilasciato-virtualbricks-0-4-276/</link>
		<comments>http://www.ldlabs.org/blog/2011/05/10/rilasciato-virtualbricks-0-4-276/#comments</comments>
		<pubDate>Tue, 10 May 2011 14:19:07 +0000</pubDate>
		<dc:creator>Francesco Apollonio</dc:creator>
				<category><![CDATA[news]]></category>
		<category><![CDATA[Virtualbricks]]></category>
		<category><![CDATA[annunci]]></category>
		<category><![CDATA[kvm]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[program]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[qemu]]></category>
		<category><![CDATA[utility]]></category>
		<category><![CDATA[varie]]></category>
		<category><![CDATA[vde]]></category>
		<category><![CDATA[virtual]]></category>
		<category><![CDATA[virtualbricks]]></category>

		<guid isPermaLink="false">http://www.ldlabs.org/blog/?p=772</guid>
		<description><![CDATA[<style type="text/css">
#leftcontainerBox {
float:left;
position: fixed;
top:40%;
left:60px;
z-index:1;
#F0F4F9 
}

#leftcontainerBox .buttons {
float:left;
clear:both;
margin:4px 4px 4px 4px;
width:110px;
height:60px;
padding-bottom:2px;
}


#bottomcontainerBox {
float:left;
height:30px;
width:100%;
#F0F4F9}

#bottomcontainerBox .buttons {
float:left;
height:30px;
width:110px;
margin:4px 4px 4px 4px;
}

</style>
È stata appena rilasciata la nuova versione di Virtualbricks, la 0.4.276. È principalmente una release di bugfix. Molte novità possono essere invece trovate nel branch. Potete scaricarla da launchpad dove ovviamente potete anche lasciare i vostri feedback. Tweet]]></description>
			<content:encoded><![CDATA[<style type="text/css">
#leftcontainerBox {
float:left;
position: fixed;
top:40%;
left:60px;
z-index:1;
#F0F4F9 
}

#leftcontainerBox .buttons {
float:left;
clear:both;
margin:4px 4px 4px 4px;
width:110px;
height:60px;
padding-bottom:2px;
}


#bottomcontainerBox {
float:left;
height:30px;
width:100%;
#F0F4F9}

#bottomcontainerBox .buttons {
float:left;
height:30px;
width:110px;
margin:4px 4px 4px 4px;
}

</style>
<p>È stata appena rilasciata la nuova versione di <strong>Virtualbricks</strong>, la <em>0.4.276</em>.</p>
<p><img class="aligncenter colorbox-772" title="Virtualbricks Logo" src="http://virtualbricks.eu/templates/qemulator/images/Logo140.png" alt="" width="130" height="140" /></p>
<p>È principalmente una release di bugfix. Molte novità possono essere invece trovate nel branch.</p>
<p>Potete scaricarla da <a href="https://launchpad.net/virtualbrick" target="_blank">launchpad</a> dove ovviamente potete anche lasciare i vostri feedback.</p>
<div id="bottomcontainerBox">
			<div class="buttons">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.ldlabs.org%2Fblog%2F2011%2F05%2F10%2Frilasciato-virtualbricks-0-4-276%2F&amp;layout=button_count&amp;show_faces=false&amp;width=100&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:100px; height:21px;" allowTransparency="true"></iframe></div>
			<div class="buttons">
			<g:plusone size="medium" href="http://www.ldlabs.org/blog/2011/05/10/rilasciato-virtualbricks-0-4-276/"></g:plusone>
			</div>
			<div class="buttons">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.ldlabs.org/blog/2011/05/10/rilasciato-virtualbricks-0-4-276/"  data-text="Rilasciato Virtualbricks 0.4.276!" data-count="horizontal">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://www.ldlabs.org/blog/2011/05/10/rilasciato-virtualbricks-0-4-276/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>python Keyring.backend.KDEWallet: accedere a KDEWallet da python</title>
		<link>http://www.ldlabs.org/blog/2011/05/04/python-keyring-backend-kdewallet-accedere-a-kdewallet-da-python/</link>
		<comments>http://www.ldlabs.org/blog/2011/05/04/python-keyring-backend-kdewallet-accedere-a-kdewallet-da-python/#comments</comments>
		<pubDate>Wed, 04 May 2011 09:04:03 +0000</pubDate>
		<dc:creator>Francesco Apollonio</dc:creator>
				<category><![CDATA[Guide]]></category>
		<category><![CDATA[recensione]]></category>
		<category><![CDATA[annunci]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[code tips]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[kde]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[program]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[repository]]></category>
		<category><![CDATA[utility]]></category>
		<category><![CDATA[varie]]></category>

		<guid isPermaLink="false">http://www.ldlabs.org/blog/?p=762</guid>
		<description><![CDATA[<style type="text/css">
#leftcontainerBox {
float:left;
position: fixed;
top:40%;
left:60px;
z-index:1;
#F0F4F9 
}

#leftcontainerBox .buttons {
float:left;
clear:both;
margin:4px 4px 4px 4px;
width:110px;
height:60px;
padding-bottom:2px;
}


#bottomcontainerBox {
float:left;
height:30px;
width:100%;
#F0F4F9}

#bottomcontainerBox .buttons {
float:left;
height:30px;
width:110px;
margin:4px 4px 4px 4px;
}

</style>
Avevo bisogno in una applicazione di salvare una password nel wallet di kde tramite python utilizzando il modulo keyring. Utilizzo debian sid ed ho installato il pacchetto python-keyring versione 0.5.1-1 (quello presente nei repository), dove è presente un bug. Infatti se apriamo la python shell: 1 2 3 4 import keyring.backend kdewallet = keyring.backend.KDEWallet&#40;&#41; kdewallet.supported&#40;&#41; [...]]]></description>
			<content:encoded><![CDATA[<style type="text/css">
#leftcontainerBox {
float:left;
position: fixed;
top:40%;
left:60px;
z-index:1;
#F0F4F9 
}

#leftcontainerBox .buttons {
float:left;
clear:both;
margin:4px 4px 4px 4px;
width:110px;
height:60px;
padding-bottom:2px;
}


#bottomcontainerBox {
float:left;
height:30px;
width:100%;
#F0F4F9}

#bottomcontainerBox .buttons {
float:left;
height:30px;
width:110px;
margin:4px 4px 4px 4px;
}

</style>
<p>Avevo bisogno in una applicazione di salvare una password nel wallet di kde tramite python utilizzando il modulo <a href="http://home.python-keyring.org/" target="_blank">keyring</a>.</p>
<p>Utilizzo debian sid ed ho installato il pacchetto python-keyring versione 0.5.1-1 (quello presente nei repository), dove è presente un bug.<br />
Infatti se apriamo la python shell:</p>

<div class="wp_codebox"><table><tr id="p7627"><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code" id="p762code7"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">import</span> keyring.<span style="color: black;">backend</span>
kdewallet = keyring.<span style="color: black;">backend</span>.<span style="color: black;">KDEWallet</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
kdewallet.<span style="color: black;">supported</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
-<span style="color: #ff4500;">1</span></pre></td></tr></table></div>

<p>anche la set_password da un eccezione.<br />
Dopo un po&#8217; di ricerche mi sono imbattuto in questa pagina: <a href="https://bitbucket.org/kang/python-keyring-lib/issue/41/kdewallet-not-working-anymore" target="_blank">https://bitbucket.org/kang/python-keyring-lib/issue/41/kdewallet-not-working-anymore</a> dove già dal titolo era chiaro che non ero l&#8217;unico ad avere questo problema!</p>
<p>Per far rifunzionare il modulo occorre scaricare la versione in sviluppo (occorre aver installato il pacchetto mercurial-git):</p>

<div class="wp_codebox"><table><tr id="p7628"><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code" id="p762code8"><pre class="bash" style="font-family:monospace;">hg clone https:<span style="color: #000000; font-weight: bold;">//</span>bitbucket.org<span style="color: #000000; font-weight: bold;">/</span>kang<span style="color: #000000; font-weight: bold;">/</span>python-keyring-lib
<span style="color: #7a0874; font-weight: bold;">cd</span> python-keyring-lib
<span style="color: #c20cb9; font-weight: bold;">sudo</span> python setup.py <span style="color: #c20cb9; font-weight: bold;">install</span></pre></td></tr></table></div>

<p>Ora tutto ritorna a funzionare benissimo infatti possiamo settare la password con</p>

<div class="wp_codebox"><table><tr id="p7629"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p762code9"><pre class="python" style="font-family:monospace;">kdewallet.<span style="color: black;">set_password</span><span style="color: black;">&#40;</span>SERVIZIO, USER, PASSWORD<span style="color: black;">&#41;</span></pre></td></tr></table></div>

<p>ottenerla con</p>

<div class="wp_codebox"><table><tr id="p76210"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p762code10"><pre class="python" style="font-family:monospace;">kdewallet.<span style="color: black;">get_password</span><span style="color: black;">&#40;</span>SERVIZIO, USER<span style="color: black;">&#41;</span></pre></td></tr></table></div>

<p>Tutto risolto!</p>
<div id="bottomcontainerBox">
			<div class="buttons">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.ldlabs.org%2Fblog%2F2011%2F05%2F04%2Fpython-keyring-backend-kdewallet-accedere-a-kdewallet-da-python%2F&amp;layout=button_count&amp;show_faces=false&amp;width=100&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:100px; height:21px;" allowTransparency="true"></iframe></div>
			<div class="buttons">
			<g:plusone size="medium" href="http://www.ldlabs.org/blog/2011/05/04/python-keyring-backend-kdewallet-accedere-a-kdewallet-da-python/"></g:plusone>
			</div>
			<div class="buttons">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.ldlabs.org/blog/2011/05/04/python-keyring-backend-kdewallet-accedere-a-kdewallet-da-python/"  data-text="python Keyring.backend.KDEWallet: accedere a KDEWallet da python" data-count="horizontal">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://www.ldlabs.org/blog/2011/05/04/python-keyring-backend-kdewallet-accedere-a-kdewallet-da-python/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VirtualBricks: GUI per la configurazione di macchine Qemu/KVM e componenti VDE</title>
		<link>http://www.ldlabs.org/blog/2011/03/16/virtualbricks-gui-per-la-configurazione-di-macchine-qemukvm-e-componenti-vde/</link>
		<comments>http://www.ldlabs.org/blog/2011/03/16/virtualbricks-gui-per-la-configurazione-di-macchine-qemukvm-e-componenti-vde/#comments</comments>
		<pubDate>Wed, 16 Mar 2011 16:49:05 +0000</pubDate>
		<dc:creator>Francesco Apollonio</dc:creator>
				<category><![CDATA[Guide]]></category>
		<category><![CDATA[KVM]]></category>
		<category><![CDATA[recensione]]></category>
		<category><![CDATA[VDE]]></category>
		<category><![CDATA[Virtualbricks]]></category>
		<category><![CDATA[Virtualizzazione]]></category>
		<category><![CDATA[guida virtualbricks]]></category>
		<category><![CDATA[hard disk]]></category>
		<category><![CDATA[kvm]]></category>
		<category><![CDATA[launchpad]]></category>
		<category><![CDATA[program]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[utility]]></category>
		<category><![CDATA[vde]]></category>
		<category><![CDATA[virtual]]></category>
		<category><![CDATA[virtual machine]]></category>
		<category><![CDATA[virtualbricks]]></category>
		<category><![CDATA[vpn]]></category>
		<category><![CDATA[wirefilter]]></category>

		<guid isPermaLink="false">http://www.ldlabs.org/blog/?p=708</guid>
		<description><![CDATA[<style type="text/css">
#leftcontainerBox {
float:left;
position: fixed;
top:40%;
left:60px;
z-index:1;
#F0F4F9 
}

#leftcontainerBox .buttons {
float:left;
clear:both;
margin:4px 4px 4px 4px;
width:110px;
height:60px;
padding-bottom:2px;
}


#bottomcontainerBox {
float:left;
height:30px;
width:100%;
#F0F4F9}

#bottomcontainerBox .buttons {
float:left;
height:30px;
width:110px;
margin:4px 4px 4px 4px;
}

</style>
Ho ricevuto alcune visite in questi giorni collegate a VirtualBricks e dato che è stato anche citato in una nota rivista Gnu/Linux, meglio spiegare un po&#8217; meglio cos&#8217;è questo software. VirtualBricks è un software, nato a Dicembre 2010 dalla fusione tra VirtualNetmanager e Qemulator, che si propone di creare un frontend per macchine virtuali Qemu/KVM [...]]]></description>
			<content:encoded><![CDATA[<style type="text/css">
#leftcontainerBox {
float:left;
position: fixed;
top:40%;
left:60px;
z-index:1;
#F0F4F9 
}

#leftcontainerBox .buttons {
float:left;
clear:both;
margin:4px 4px 4px 4px;
width:110px;
height:60px;
padding-bottom:2px;
}


#bottomcontainerBox {
float:left;
height:30px;
width:100%;
#F0F4F9}

#bottomcontainerBox .buttons {
float:left;
height:30px;
width:110px;
margin:4px 4px 4px 4px;
}

</style>
<p>Ho ricevuto alcune visite in questi giorni collegate a <strong>VirtualBricks</strong> e dato che è stato anche citato in una nota rivista Gnu/Linux, meglio spiegare un po&#8217; meglio cos&#8217;è questo software.</p>
<p>VirtualBricks è un software, nato a Dicembre 2010 dalla fusione tra <a href="http://sourceforge.net/projects/virtualnetmgr/" target="_blank">VirtualNetmanager</a> e <em>Qemulator</em>, che si propone di creare un frontend per macchine virtuali <em>Qemu/KVM</em> e componenti <a href="http://vde.sourceforge.net/" target="_blank">VDE</a>.</p>
<p>È possibile scaricare il software dalla pagina launchpad: <a href="https://launchpad.net/virtualbrick">https://launchpad.net/virtualbrick</a>. L&#8217;ultima release rilasciata è la 0.2 ed è mancante di molte caratteristiche. Essa infatti è stata sviluppata per avere una demo da poter mostrare all&#8217;ultimo FOSDEM tenutosi a Bruxelles a Febbraio. Da allora le modifiche apportate sono molte e, come potete leggere sul sito, in questi giorni verrà rilasciata una nuova release la 0.3, vediamo insieme alcune delle caratteristiche di questo software:</p>
<ul>
<li>Esso è composto da due parti una parte con GUI ed una parte che è utilizzabile da terminale. Ognuna di queste due parti permette di configurare &#8220;Brick&#8221;, cioè oggetti con parametri, che corrispondo ai vari componenti utilizzabili (macchine virtuali, VDE Switch, VDE Wirefilter, etc).</li>
<li>Permette di configurare ed eseguire macchine virtuali Qemu e KVM.</li>
<li>Connettere più macchine virtuali insieme tramite i componenti VDE, creando topologie complesse.</li>
<li>Connettere una macchina virtuale all&#8217;host.</li>
<li>Creare tunnel VPN tra più host (e quindi connettere tramite un canale cifrato più reti virtuali su host differenti).</li>
<li>Completa interfaccia di configurazione per i vari componenti.</li>
</ul>
<p>In questo articolo tratteremo il funzionamento basilare del programma, spiegando come effettuare alcune tra le operazioni disponibili.</p>
<p><span id="more-708"></span></p>
<p><strong>INSTALLAZIONE</strong></p>
<p>Abbiamo bisogno di un paio di librerie python:</p>
<pre>apt-get install ﻿python-pygraphviz ﻿python-imaging</pre>
<p>Ora aprite un terminale e, per scaricare i sorgenti della versione in sviluppo, digitate:</p>
<pre>bzr branch lp:virtualbrick</pre>
<p>Entrate nella cartella ed avviate lo script di installazione:</p>
<pre>cd virtualbrick
sudo ./install.sh</pre>
<p>Lanciate il comando <strong><em>virtualbricks</em></strong> per far partire il programma.</p>
<p><strong>UTILIZZO</strong></p>
<p>Come si è detto in precedenza il programma è composta da una parte da terminale ed una con GUI. Verrà per ora tralasciata la parte da terminale; essa è comunque perfettamente funzionante, basta digitare <strong>help</strong> per avere una lista completa di tutti i comandi. Analizzeremo invece passo passo le più importanti caratteristiche disponibili tramite la GUI.</p>
<p>Iniziamo con la finestra Preferenze, alla quale si può accedere tramite il menù in alto, <strong><em>Impostazioni</em>-&gt;<em>Preferenze</em></strong>:</p>
<div id="attachment_711" class="wp-caption aligncenter" style="width: 637px"><a href="http://www.ldlabs.org/blog/wp-content/uploads/2011/03/2_config.png"><img class="size-full wp-image-711  colorbox-708" title="Configuration" src="http://www.ldlabs.org/blog/wp-content/uploads/2011/03/2_config.png" alt="" width="627" height="393" /></a><p class="wp-caption-text">Configurazione - Fig 1</p></div>
<ul>
<li><em>Direttorio Mattoni</em>: dove VB salva le impostazioni e la lista dei brick creati</li>
<li><em>Percorso binari VDE</em>: se si vogliono utilizzare i componenti VDE, specificando questa directory verrà effettuato un check dei componenti installati ed eventuali mancanze verranno segnalate</li>
<li><em>Percorso binari Qemu/KVM</em>: Dove sono reperibili gli eseguibili di Qemu e KVM; anche in questo caso saranno effettuati dei test per controllare l&#8217;effettiva presenza di tutti gli eseguibili necessari ed eventualmente verrano segnalate le mancanze.</li>
<li><em>Repository per le immagini disco</em>: la directory di default che contiene le immagini dei dischi virtuali delle VM</li>
<li><em>Usa KVM</em>: Se utilizzare o meno KVM per le macchine virtuali (se questa check non è selezionata, sarà possibile usare solo Qemu per le VM)</li>
</ul>
<p><strong><em>Creazione immagine-&gt; Crea nuova immagine</em></strong>: Pannello che permette di creare nuove immagini da utilizzare per le macchine virtuali.</p>
<p>In VB sono presenti 4 tab (Mattoni, Eventi, Componenti in esecuzione, Topologia). Fermiamoci ora su <strong><em>Mattoni</em></strong>, essa è una lista di tutti i brick creati e che è possibile utilizzare:</p>
<div class="wp-caption aligncenter" style="width: 696px"><a href="http://www.ldlabs.org/blog/wp-content/uploads/2011/03/1_brickslist.png"><img class="colorbox-708"  title="Bricks List" src="http://www.ldlabs.org/blog/wp-content/uploads/2011/03/1_brickslist.png" alt="" width="686" height="582" /></a><p class="wp-caption-text">Tab Mattoni - Fig. 2</p></div>
<p style="text-align: left;">È possibile creare un nuovo Brick premendo su tasto <strong>Nuovo Mattone, </strong>selezionando il tipo e inserendo un nome. Non appena fatte queste operazioni il nuovo brick apparirà nella lista come mostrato nella Fig. 2. Creiamo ad esempio un Nuovo Mattone Macchina Virtuale e chiamiamolo &#8216;Linux&#8217;, una volta aggiunto nella lista, premiamo con il tasto destro sul nostro nuovo mattone e premiamo poi su <strong><em>Configura</em></strong>:</p>
<div id="attachment_714" class="wp-caption aligncenter" style="width: 705px"><a href="http://www.ldlabs.org/blog/wp-content/uploads/2011/03/3_config1.png"><img class="size-full wp-image-714   colorbox-708" title="config1" src="http://www.ldlabs.org/blog/wp-content/uploads/2011/03/3_config1.png" alt="" width="695" height="589" /></a><p class="wp-caption-text">Configurazione dischi - Fig. 3</p></div>
<p>La prima cosa da configurare è l&#8217;immagine del disco per la macchina virtuale, quindi premiamo sul selettore file accanto alla scritta <strong>hda</strong> a destra e selezioniamo il file immagine da utilizzare come disco primario (notiamo che è possibile inserire svariati dischi). La check <strong>COW Privato </strong>permette di non salvare le modifiche effettuate sul disco durante l&#8217;esecuzione direttamente sul file selezionato, esse verranno salvate su di un file secondario che utilizzerà l&#8217;immagine selezionata come base (equivalente di qemu-img -b file1.qcow2 file1_pvt.cow). La check <strong>Modalità Snapshot </strong>farà perdere definitivamente qualsiasi modifica effettuata al disco durante l&#8217;esecuzione dopo la chiusura della VM.</p>
<p>Scheda <em><strong>Sistema:</strong></em></p>
<p style="text-align: center;"><em><strong> </strong></em></p>
<p><em><strong> </strong></em></p>
<p><em><strong> </strong></em></p>
<p><em><strong> </strong></em></p>
<p><em><strong> </strong></em></p>
<p><em><strong> </strong></em></p>
<p><em><strong> </strong></em></p>
<p><em><strong> </strong></em></p>
<p><em><strong> </strong></em></p>
<p><em><strong> </strong></em></p>
<p><em><strong> </strong></em></p>
<p><em><strong> </strong></em></p>
<p><em><strong> </strong></em></p>
<p><em><strong> </strong></em></p>
<p><em><strong> </strong></em></p>
<p><em><strong> </strong></em></p>
<div id="attachment_715" class="wp-caption aligncenter" style="width: 696px"><em><strong><a href="http://www.ldlabs.org/blog/wp-content/uploads/2011/03/4_config2.png"><img class="size-full wp-image-715  colorbox-708" title="4_config2" src="http://www.ldlabs.org/blog/wp-content/uploads/2011/03/4_config2.png" alt="" width="686" height="582" /></a></strong></em><p class="wp-caption-text">Tab Sistema - Fig. 4</p></div>
<p><em><strong> </strong></em></p>
<p>&nbsp;</p>
<p>I parametri configurabili in questa sezione sono molto intuitivi, qui possiamo impostare: <strong>KVM</strong> abilitando l&#8217;apposita check o eventualmente scegliere achitettura, cpu e tipo di macchina, se si vuole scegliere <strong>Qemu </strong>(deselezionando la check KVM), dimensione della <strong>RAM</strong> della macchina virtuale, e molto altro.</p>
<p>Scheda <strong><em>Rete</em></strong>: qui è possibile scegliere che tipo di rete configurare, se connettere più componenti tramite VDE oppure la normale connessione all&#8217;host dataci da Qemu, per semplicità ora scegliamo di effettuare quest&#8217;ultima:</p>
<div id="attachment_716" class="wp-caption aligncenter" style="width: 696px"><a href="http://www.ldlabs.org/blog/wp-content/uploads/2011/03/5_config2.png"><img class="size-full wp-image-716  colorbox-708" title="5_config2" src="http://www.ldlabs.org/blog/wp-content/uploads/2011/03/5_config2.png" alt="" width="686" height="582" /></a><p class="wp-caption-text">Tab Rete - Fig. 5</p></div>
<p style="text-align: left;">Premiamo sul radio button <strong>Connetti alla rete, </strong>selezioniamo dalla combo <strong>Connetti a</strong> &#8220;<strong>Host-only ad hoc network</strong>&#8221; e premiamo sul tasto <strong>Aggiungi una scheda di rete, </strong>essa ora apparirà nella lista sinistra.</p>
<p style="text-align: left;">Infine selezioniamo una immagine per la nostra nuova macchina virtuale tramite la scheda <strong>Configura Mattone</strong>:</p>
<div id="attachment_717" class="wp-caption aligncenter" style="width: 696px"><a href="http://www.ldlabs.org/blog/wp-content/uploads/2011/03/6_config3.png"><img class="size-full wp-image-717  colorbox-708" title="6_config3" src="http://www.ldlabs.org/blog/wp-content/uploads/2011/03/6_config3.png" alt="" width="686" height="582" /></a><p class="wp-caption-text">Tab Configura Mattone - Fig. 6</p></div>
<p>Premiamo ora sul tasto <em><strong>Ok</strong></em> in basso in modo da non perdere le modifiche effettuate alla configurazione.</p>
<p>Una volta ritornati nella nostra lista dei bricks, facciamo ora click con il tasto destro del mouse sul brick appena creato e clickiamo su <strong>Avvia Mattone, </strong>la macchina virtuale partirà:</p>
<div id="attachment_718" class="wp-caption aligncenter" style="width: 673px"><a href="http://www.ldlabs.org/blog/wp-content/uploads/2011/03/7_brickslist_with_started_bricks.png"><img class="size-large wp-image-718    colorbox-708" title="7_brickslist_with_started_bricks" src="http://www.ldlabs.org/blog/wp-content/uploads/2011/03/7_brickslist_with_started_bricks-1024x614.png" alt="" width="663" height="398" /></a><p class="wp-caption-text">Macchina virtuale avviate - Fig. 7</p></div>
<p>Passiamo ora alla scheda <em><strong>Componenti in esecuzione</strong></em>: questa tab contiene tutti i componenti lanciati, e tramite il menu di configurazione è possibile eseguire alcune operazioni:</p>
<div class="mceTemp mceIEcenter" style="text-align: left;">
<dl id="attachment_719" class="wp-caption aligncenter" style="width: 696px;">
<dt class="wp-caption-dt"><a href="http://www.ldlabs.org/blog/wp-content/uploads/2011/03/8_brickslist_with_started_brick.png"><img class="size-full wp-image-719  colorbox-708" title="8" src="http://www.ldlabs.org/blog/wp-content/uploads/2011/03/8_brickslist_with_started_brick.png" alt="" width="686" height="582" /></a></dt>
<dd class="wp-caption-dd">Componenti in esecuzione &#8211; Fig. 8</dd>
</dl>
</div>
<ul>
<li><em><strong>Apri terminale di controllo: </strong></em>apre in una nuova finestra la console di configurazione della macchina Qemu<strong><span style="text-decoration: underline;"> </span></strong></li>
<li><em><strong>stop job: </strong></em>invia al processo della macchina virtuale un segnale di stop</li>
<li><em><strong>continue job: </strong></em>invia al processo della macchina virtuale un segnale di continua ad eseguire (solo se prima è stato bloccato tramite il precedente comando)</li>
<li><em><strong>Sospendi Qemu: </strong></em>sospendi la macchina virtuale sul disco immagine</li>
<li><em><strong>Invia poweroff ACPI: </strong></em>invia un il power off alla macchina virtuale (equivalente di premere il tasto di spegnimento su una macchina reale), la VM quindi si spegne correttamente</li>
<li><em><strong>Invia hard reset ACPI: </strong></em>invia un reset alla macchina virtuale (equivalente di premere il tasto reset su una macchina reale)</li>
<li><em><strong>reset job: </strong></em>kill del processo e riavvio della macchina virtuale</li>
<li><em><strong>kill job: </strong></em>kill del processo</li>
</ul>
<p>Scheda <em><strong>Topologia</strong></em>:</p>
<div class="mceTemp mceIEcenter" style="text-align: left;">
<dl id="attachment_720" class="wp-caption aligncenter" style="width: 696px;">
<dt class="wp-caption-dt"><a href="http://www.ldlabs.org/blog/wp-content/uploads/2011/03/9_brickslist_with_started_brick.png"><img class="size-full wp-image-720  colorbox-708" title="9_brickslist_with_started_brick" src="http://www.ldlabs.org/blog/wp-content/uploads/2011/03/9_brickslist_with_started_brick.png" alt="" width="686" height="582" /></a></dt>
<dd class="wp-caption-dd">Topologia &#8211; Fig. 9</dd>
</dl>
</div>
<p style="text-align: left;">La topologia è una visuale grafica di come i vari bricks son collegati tra loro, è possibile effettuare alcune operazioni direttamente da questa tab come <strong>Avvia/Ferma</strong>, <strong>Cancella, Configura, Crea una copia, Sospendi VM.</strong></p>
<p style="text-align: left;">Scheda<strong><em> Eventi</em>: </strong>gli eventi sono degli automatismi che si possono inserire nelle configurazioni; se si vuole simulare ad esempio che dopo N secondi una VM si spenga è possibile inserire un apposito evento in questa tab. È possibile inserire come eventi qualsiasi comando presente nella shell. Questa caratteristica è molto utile ad esempio se si vogliono eseguire alcuni test e, magari utilizzando l&#8217;emulatore di canale VDE Wirefilter, cambiare la banda disponibile tra due VM automaticamente dopo N secondi.</p>
<p style="text-align: left;"><strong>CONCLUSIONI</strong></p>
<p style="text-align: left;">In questa rapida carrellata sono state analizzate solo alcune delle caratteristiche principali di questo software, in pentola ci sono molte altre feature; se volete avere un idea più completa vi consiglio di guardare la sezione Blueprint dello spazio launchpad del progetto, alcune delle caratteristiche in sviluppo sono:</p>
<ul>
<li>Miglioramento della shell con il supporto per l&#8217;autocompletamento</li>
<li>Gestione remota di brick creati su host remoti</li>
<li>Live migration</li>
<li>Salvataggio e ripristino di progetti (topologie e liste di brick differenti)</li>
</ul>
<p>Vi voglio ricordare che il progetto ha solo 3 mesi di vita, aiutateci e segnalateci tutti i bug e, perchè no, eventuali caratteristiche aggiuntive.</p>
<p>Vi ripeto i contatti: <a href="https://launchpad.net/virtualbrick">https://launchpad.net/virtualbrick</a> e <a href="http://www.virtualbricks.eu/">http://www.virtualbricks.eu/</a> provatelo e fatemi sapere cosa ne pensate!</p>
<div id="bottomcontainerBox">
			<div class="buttons">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.ldlabs.org%2Fblog%2F2011%2F03%2F16%2Fvirtualbricks-gui-per-la-configurazione-di-macchine-qemukvm-e-componenti-vde%2F&amp;layout=button_count&amp;show_faces=false&amp;width=100&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:100px; height:21px;" allowTransparency="true"></iframe></div>
			<div class="buttons">
			<g:plusone size="medium" href="http://www.ldlabs.org/blog/2011/03/16/virtualbricks-gui-per-la-configurazione-di-macchine-qemukvm-e-componenti-vde/"></g:plusone>
			</div>
			<div class="buttons">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.ldlabs.org/blog/2011/03/16/virtualbricks-gui-per-la-configurazione-di-macchine-qemukvm-e-componenti-vde/"  data-text="VirtualBricks: GUI per la configurazione di macchine Qemu/KVM e componenti VDE" data-count="horizontal">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://www.ldlabs.org/blog/2011/03/16/virtualbricks-gui-per-la-configurazione-di-macchine-qemukvm-e-componenti-vde/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>javascript shell</title>
		<link>http://www.ldlabs.org/blog/2011/03/01/javascript-shell/</link>
		<comments>http://www.ldlabs.org/blog/2011/03/01/javascript-shell/#comments</comments>
		<pubDate>Tue, 01 Mar 2011 14:44:19 +0000</pubDate>
		<dc:creator>Francesco Apollonio</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[recensione]]></category>
		<category><![CDATA[code tips]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[program]]></category>
		<category><![CDATA[utility]]></category>

		<guid isPermaLink="false">http://www.ldlabs.org/blog/?p=630</guid>
		<description><![CDATA[<style type="text/css">
#leftcontainerBox {
float:left;
position: fixed;
top:40%;
left:60px;
z-index:1;
#F0F4F9 
}

#leftcontainerBox .buttons {
float:left;
clear:both;
margin:4px 4px 4px 4px;
width:110px;
height:60px;
padding-bottom:2px;
}


#bottomcontainerBox {
float:left;
height:30px;
width:100%;
#F0F4F9}

#bottomcontainerBox .buttons {
float:left;
height:30px;
width:110px;
margin:4px 4px 4px 4px;
}

</style>
Mi serviva un modo per testare uno scriptino in javascript al volo e mi sono imbattuto in questa pagina: Script carino e soprattutto molto utile in caso di emergenza! Da annotare! Tweet]]></description>
			<content:encoded><![CDATA[<style type="text/css">
#leftcontainerBox {
float:left;
position: fixed;
top:40%;
left:60px;
z-index:1;
#F0F4F9 
}

#leftcontainerBox .buttons {
float:left;
clear:both;
margin:4px 4px 4px 4px;
width:110px;
height:60px;
padding-bottom:2px;
}


#bottomcontainerBox {
float:left;
height:30px;
width:100%;
#F0F4F9}

#bottomcontainerBox .buttons {
float:left;
height:30px;
width:110px;
margin:4px 4px 4px 4px;
}

</style>
<p>Mi serviva un modo per testare uno scriptino in javascript al volo e mi sono imbattuto in <a href="http://www.squarefree.com/shell/shell.html" target="_blank">questa</a> pagina:</p>
<p><img class="alignnone img_post colorbox-630" title="JavaScript shell" src="http://www.ldlabs.org/blog/wp-content/uploads/manual/javascript_shell.PNG" alt="" width="658" height="268" /></p>
<p>Script carino e soprattutto molto utile in caso di emergenza!</p>
<p>Da annotare! <img src='http://www.ldlabs.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley colorbox-630' /> </p>
<div id="bottomcontainerBox">
			<div class="buttons">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.ldlabs.org%2Fblog%2F2011%2F03%2F01%2Fjavascript-shell%2F&amp;layout=button_count&amp;show_faces=false&amp;width=100&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:100px; height:21px;" allowTransparency="true"></iframe></div>
			<div class="buttons">
			<g:plusone size="medium" href="http://www.ldlabs.org/blog/2011/03/01/javascript-shell/"></g:plusone>
			</div>
			<div class="buttons">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.ldlabs.org/blog/2011/03/01/javascript-shell/"  data-text="javascript shell" data-count="horizontal">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://www.ldlabs.org/blog/2011/03/01/javascript-shell/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VirtualBricks: mattoncini virtuali</title>
		<link>http://www.ldlabs.org/blog/2011/02/14/virtualbricks-mattoncini-virtuali/</link>
		<comments>http://www.ldlabs.org/blog/2011/02/14/virtualbricks-mattoncini-virtuali/#comments</comments>
		<pubDate>Mon, 14 Feb 2011 09:28:48 +0000</pubDate>
		<dc:creator>Francesco Apollonio</dc:creator>
				<category><![CDATA[news]]></category>
		<category><![CDATA[recensione]]></category>
		<category><![CDATA[annunci]]></category>
		<category><![CDATA[code tips]]></category>
		<category><![CDATA[guida virtualbricks]]></category>
		<category><![CDATA[kvm]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[program]]></category>
		<category><![CDATA[utility]]></category>
		<category><![CDATA[vde]]></category>
		<category><![CDATA[virtual]]></category>
		<category><![CDATA[virtualbricks]]></category>

		<guid isPermaLink="false">http://www.ldlabs.org/blog/?p=626</guid>
		<description><![CDATA[<style type="text/css">
#leftcontainerBox {
float:left;
position: fixed;
top:40%;
left:60px;
z-index:1;
#F0F4F9 
}

#leftcontainerBox .buttons {
float:left;
clear:both;
margin:4px 4px 4px 4px;
width:110px;
height:60px;
padding-bottom:2px;
}


#bottomcontainerBox {
float:left;
height:30px;
width:100%;
#F0F4F9}

#bottomcontainerBox .buttons {
float:left;
height:30px;
width:110px;
margin:4px 4px 4px 4px;
}

</style>
Visitate questo link: VirtualBricks &#8211; GUI per la configurazione di macchine Qemu/KVM e componenti VDE. Tweet]]></description>
			<content:encoded><![CDATA[<style type="text/css">
#leftcontainerBox {
float:left;
position: fixed;
top:40%;
left:60px;
z-index:1;
#F0F4F9 
}

#leftcontainerBox .buttons {
float:left;
clear:both;
margin:4px 4px 4px 4px;
width:110px;
height:60px;
padding-bottom:2px;
}


#bottomcontainerBox {
float:left;
height:30px;
width:100%;
#F0F4F9}

#bottomcontainerBox .buttons {
float:left;
height:30px;
width:110px;
margin:4px 4px 4px 4px;
}

</style>
<p>Visitate questo link: <a href="http://www.ldlabs.org/blog/2011/03/16/virtualbricks-gui-per-la-configurazione-di-macchine-qemukvm-e-componenti-vde/">VirtualBricks &#8211; GUI per la configurazione di macchine Qemu/KVM e componenti VDE</a>.</p>
<div id="bottomcontainerBox">
			<div class="buttons">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.ldlabs.org%2Fblog%2F2011%2F02%2F14%2Fvirtualbricks-mattoncini-virtuali%2F&amp;layout=button_count&amp;show_faces=false&amp;width=100&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:100px; height:21px;" allowTransparency="true"></iframe></div>
			<div class="buttons">
			<g:plusone size="medium" href="http://www.ldlabs.org/blog/2011/02/14/virtualbricks-mattoncini-virtuali/"></g:plusone>
			</div>
			<div class="buttons">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.ldlabs.org/blog/2011/02/14/virtualbricks-mattoncini-virtuali/"  data-text="VirtualBricks: mattoncini virtuali" data-count="horizontal">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://www.ldlabs.org/blog/2011/02/14/virtualbricks-mattoncini-virtuali/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>pySynchronize</title>
		<link>http://www.ldlabs.org/blog/2010/04/02/pysynchronize/</link>
		<comments>http://www.ldlabs.org/blog/2010/04/02/pysynchronize/#comments</comments>
		<pubDate>Fri, 02 Apr 2010 14:20:05 +0000</pubDate>
		<dc:creator>Francesco Apollonio</dc:creator>
				<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[code tips]]></category>
		<category><![CDATA[kde]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[program]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[qt4]]></category>
		<category><![CDATA[utility]]></category>

		<guid isPermaLink="false">http://www.ldlabs.org/blog/?p=609</guid>
		<description><![CDATA[<style type="text/css">
#leftcontainerBox {
float:left;
position: fixed;
top:40%;
left:60px;
z-index:1;
#F0F4F9 
}

#leftcontainerBox .buttons {
float:left;
clear:both;
margin:4px 4px 4px 4px;
width:110px;
height:60px;
padding-bottom:2px;
}


#bottomcontainerBox {
float:left;
height:30px;
width:100%;
#F0F4F9}

#bottomcontainerBox .buttons {
float:left;
height:30px;
width:110px;
margin:4px 4px 4px 4px;
}

</style>
Molto spesso ho bisogno di sincronizzare i file del mio netbook con quelli del fisso, ecco che m&#8217;aiuta questo script che ho realizzato. Sfruttando ssh e l&#8217;autenticazione a chiave pubblica/privata il programma, leggendo dal file toSynchronize.list le cartelle da sincronizzare, controlla quali file sono più aggiornati e, se richiesto, effettua l&#8217;aggiornamento. Lo script ha una [...]]]></description>
			<content:encoded><![CDATA[<style type="text/css">
#leftcontainerBox {
float:left;
position: fixed;
top:40%;
left:60px;
z-index:1;
#F0F4F9 
}

#leftcontainerBox .buttons {
float:left;
clear:both;
margin:4px 4px 4px 4px;
width:110px;
height:60px;
padding-bottom:2px;
}


#bottomcontainerBox {
float:left;
height:30px;
width:100%;
#F0F4F9}

#bottomcontainerBox .buttons {
float:left;
height:30px;
width:110px;
margin:4px 4px 4px 4px;
}

</style>
<p>Molto spesso ho bisogno di sincronizzare i file del mio netbook con quelli del fisso, ecco che m&#8217;aiuta questo script che ho realizzato.<span id="more-609"></span></p>
<p>Sfruttando ssh e l&#8217;autenticazione a chiave pubblica/privata il programma, leggendo dal file <em>toSynchronize.list</em> le cartelle da sincronizzare, controlla quali file sono più aggiornati e, se richiesto, effettua l&#8217;aggiornamento.</p>
<p>Lo script ha una semplice gui Qt4 che permette anche la configurazione di base.</p>
<p>Per il funzionamento lo script richiede le librerie <em>python-paramiko</em>.</p>
<p>Potete scaricare la versione 0.2 da <a href="http://www.ldlabs.org/sources/pySynchronize-v0.2.tar.bz2" target="_blank">qui</a>.</p>
<div id="bottomcontainerBox">
			<div class="buttons">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.ldlabs.org%2Fblog%2F2010%2F04%2F02%2Fpysynchronize%2F&amp;layout=button_count&amp;show_faces=false&amp;width=100&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:100px; height:21px;" allowTransparency="true"></iframe></div>
			<div class="buttons">
			<g:plusone size="medium" href="http://www.ldlabs.org/blog/2010/04/02/pysynchronize/"></g:plusone>
			</div>
			<div class="buttons">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.ldlabs.org/blog/2010/04/02/pysynchronize/"  data-text="pySynchronize" data-count="horizontal">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://www.ldlabs.org/blog/2010/04/02/pysynchronize/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>problem with vlc fullscreen and kde panel</title>
		<link>http://www.ldlabs.org/blog/2010/01/13/problem-with-vlc-fullscreen-and-kde-panel/</link>
		<comments>http://www.ldlabs.org/blog/2010/01/13/problem-with-vlc-fullscreen-and-kde-panel/#comments</comments>
		<pubDate>Wed, 13 Jan 2010 11:25:06 +0000</pubDate>
		<dc:creator>Francesco Apollonio</dc:creator>
				<category><![CDATA[Guide]]></category>
		<category><![CDATA[64bit]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[experimental]]></category>
		<category><![CDATA[kde]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[program]]></category>
		<category><![CDATA[squeeze]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[utility]]></category>
		<category><![CDATA[vlc]]></category>

		<guid isPermaLink="false">http://blog.ldlabs.org/?p=595</guid>
		<description><![CDATA[<style type="text/css">
#leftcontainerBox {
float:left;
position: fixed;
top:40%;
left:60px;
z-index:1;
#F0F4F9 
}

#leftcontainerBox .buttons {
float:left;
clear:both;
margin:4px 4px 4px 4px;
width:110px;
height:60px;
padding-bottom:2px;
}


#bottomcontainerBox {
float:left;
height:30px;
width:100%;
#F0F4F9}

#bottomcontainerBox .buttons {
float:left;
height:30px;
width:110px;
margin:4px 4px 4px 4px;
}

</style>
If kde panel override  vlc&#8217;s fullscreen, you need to install vlc 1.0.4. How to install vlc-1.0.4 in debian squeeze (64b)  from sid packages: Remove old version: apt-get remove vlc-nox Get packages: wget http://ftp.dk.debian.org/debian/pool/main/v/vlc/vlc-nox_1.0.4-2_amd64.deb wget http://ftp.hu.debian.org/debian/pool/main/v/vlc/vlc_1.0.4-2_amd64.deb Install dependencies: apt-get install libxcb-keysyms1 Install new packages: dpkg -i vlc-nox_1.0.4-2_amd64.deb vlc_1.0.4-2_amd64.deb Tweet]]></description>
			<content:encoded><![CDATA[<style type="text/css">
#leftcontainerBox {
float:left;
position: fixed;
top:40%;
left:60px;
z-index:1;
#F0F4F9 
}

#leftcontainerBox .buttons {
float:left;
clear:both;
margin:4px 4px 4px 4px;
width:110px;
height:60px;
padding-bottom:2px;
}


#bottomcontainerBox {
float:left;
height:30px;
width:100%;
#F0F4F9}

#bottomcontainerBox .buttons {
float:left;
height:30px;
width:110px;
margin:4px 4px 4px 4px;
}

</style>
<p>If kde panel override  vlc&#8217;s fullscreen, you need to install vlc 1.0.4.<br />
How to install vlc-1.0.4 in debian squeeze (64b)  from sid packages:</p>
<p>Remove old version:</p>
<p>apt-get remove vlc-nox</p>
<p>Get packages:</p>
<p>wget http://ftp.dk.debian.org/debian/pool/main/v/vlc/vlc-nox_1.0.4-2_amd64.deb<br />
wget http://ftp.hu.debian.org/debian/pool/main/v/vlc/vlc_1.0.4-2_amd64.deb</p>
<p>Install dependencies:</p>
<p>apt-get install libxcb-keysyms1</p>
<p>Install new packages:</p>
<p>dpkg -i vlc-nox_1.0.4-2_amd64.deb vlc_1.0.4-2_amd64.deb</p>
<div id="bottomcontainerBox">
			<div class="buttons">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.ldlabs.org%2Fblog%2F2010%2F01%2F13%2Fproblem-with-vlc-fullscreen-and-kde-panel%2F&amp;layout=button_count&amp;show_faces=false&amp;width=100&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:100px; height:21px;" allowTransparency="true"></iframe></div>
			<div class="buttons">
			<g:plusone size="medium" href="http://www.ldlabs.org/blog/2010/01/13/problem-with-vlc-fullscreen-and-kde-panel/"></g:plusone>
			</div>
			<div class="buttons">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.ldlabs.org/blog/2010/01/13/problem-with-vlc-fullscreen-and-kde-panel/"  data-text="problem with vlc fullscreen and kde panel" data-count="horizontal">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://www.ldlabs.org/blog/2010/01/13/problem-with-vlc-fullscreen-and-kde-panel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

