<?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>orvtech: Linux, Android, BASH Scripts, y Fedora &#187; NSLU2</title>
	<atom:link href="http://orvtech.com/category/nslu2/feed/" rel="self" type="application/rss+xml" />
	<link>http://orvtech.com</link>
	<description>Blog de referencia para apasionados del software libre, sistemas embebidos y todo lo que tenga que ver con shell scripting</description>
	<lastBuildDate>Sat, 28 Jan 2012 01:49:25 +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>Respaldar iTunes a un servidor remoto con Rsync</title>
		<link>http://orvtech.com/howto/respaldar-itunes-a-un-servidor-remoto-con-rsync/</link>
		<comments>http://orvtech.com/howto/respaldar-itunes-a-un-servidor-remoto-con-rsync/#comments</comments>
		<pubDate>Sat, 11 Sep 2010 23:11:26 +0000</pubDate>
		<dc:creator>orvtech</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[NSLU2]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[rsync]]></category>
		<category><![CDATA[Scripts]]></category>
		<category><![CDATA[SSH]]></category>

		<guid isPermaLink="false">http://orvtech.com/?p=220</guid>
		<description><![CDATA[Un script que practimanete es un <acronym title="script de una sola liena">one-liner</acronym> de BASH que te ayudara a respaldar tu librería de iTunes a un servidor remoto vía SSH. No requiere que configures el servicio de rsync en el servidor y te permite excluir archivos o directorios. Actualmente uso este script para tener un respaldo del iTunes de mi laptop en mi NSLU2. <p><a href="http://orvtech.com/howto/respaldar-itunes-a-un-servidor-remoto-con-rsync/">Respaldar iTunes a un servidor remoto con Rsync</a> es un articulo de: <a href="http://orvtech.com" rel="friend">orvtech.com</a></p>
]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Forvtech.com%2Fhowto%2Frespaldar-itunes-a-un-servidor-remoto-con-rsync%2F' data-shr_title='Respaldar+iTunes+a+un+servidor+remoto+con+Rsync'></a><a class='shareaholic-fbsend' data-shr_href='http%3A%2F%2Forvtech.com%2Fhowto%2Frespaldar-itunes-a-un-servidor-remoto-con-rsync%2F'></a><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Forvtech.com%2Fhowto%2Frespaldar-itunes-a-un-servidor-remoto-con-rsync%2F' data-shr_title='Respaldar+iTunes+a+un+servidor+remoto+con+Rsync'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Aquí les dejo un script que me ayuda a mi a respaldar mi librería de música desde mi laptop a mi NSLU2 que por cierto esta a unas 30 millas (48 kilómetros) de distancia. El script usa Rsync sobre SSH. Démosle un vistazo a este script al cual he salvado como <em>rsync_itunes.sh</em>.</p>
<p><code>#!/bin/bash<br />
#rsync -avx --delete --exclude='iTunes/iTunes\ Media/Movies/*' --progress ~/Music/iTunes -e "ssh -p22" usuario.aqui@host.remoto.aqui:~/<br />
#rsync -avx --progress ~/Music/iTunes -e "ssh -p22" usuario.aqui@host.remoto.aqui:~/<br />
rsync -avx --delete --progress ~/Music/iTunes -e "ssh -p22" usuario.aqui@host.remoto.aqui:~/</code></p>
<p>Como pueden ver tengo dos lineas comentadas las cuales las descomento de acuerdo con lo que quiera hacer. La primera omite el directorio &#8216;Movies&#8217;. La segunda no borra los archivos que he eliminado de iTunes o que ya no están en esa ubicación. La ultima que es la que no esta comentada borra y sincroniza la librería entera. Noten que <em>-e &#8220;ssh -p22&#8243;</em> le dice a <a title="Link a wikipedia" href="http://es.wikipedia.org/wiki/Rsync">Rsync</a> que va a ejecutar <abbr title="Secure SHell">SSH</abbr> por el puerto 22, útil en caso de que engan <abbr title="Secure SHell">SSH</abbr> corriendo en otro puerto.<br />

<a href='http://orvtech.com/howto/respaldar-itunes-a-un-servidor-remoto-con-rsync/attachment/backup_itunes_02-2/' title='haciendo el respaldo de iTunes'><img width="150" height="150" src="http://orvtech.info/2010/12/backup_itunes_02-150x150.jpg" class="attachment-thumbnail" alt="rsync iTunes" title="haciendo el respaldo de iTunes" /></a>
<a href='http://orvtech.com/howto/respaldar-itunes-a-un-servidor-remoto-con-rsync/attachment/backup_itunes_01-2/' title='reslpaldando iTunes con rsync'><img width="150" height="150" src="http://orvtech.info/2010/12/backup_itunes_01-150x150.jpg" class="attachment-thumbnail" alt="ejecutando el script que va a respaldar iTunes via rsync" title="reslpaldando iTunes con rsync" /></a>
</p>
<p>Yo en particular lo tengo en ~/scripts y lo ejecuto así:<br />
<code>cd ~/<br />
sh scripts/rsync_itunes.sh</code></p>
<div id="crp_related"><br /><h4>Artículos relacionados:</h4><ul><li><a href="http://orvtech.com/howto/encontrar-archivos-con-formato-ms-dos/" rel="bookmark" class="crp_title">Encontrar archivos con formato MS-DOS.:</a><span class="crp_excerpt"> Recientemente tuve un montón de problemas con una aplicación web la cual fue modificada bajo ...</span></li><li><a href="http://orvtech.com/howto/acceso-remoto-via-ssh-a-mi-appletv/" rel="bookmark" class="crp_title">Acceso remoto via SSH a mi AppleTV:</a><span class="crp_excerpt"> 
Instale mediante un pendrive USB un parche que permite el acceso remoto a mi AppleTV ...</span></li><li><a href="http://orvtech.com/howto/reparar-mobileterminal-en-ios4-0-para-el-iphone/" rel="bookmark" class="crp_title">Reparar mobileterminal en iOS4.0 para el iPhone:</a><span class="crp_excerpt"> Desde que actualicé a iOS4.0 no he podido usar la aplicación MobileTerminal pues al abrirla ...</span></li></ul><br /></div><p><a href="http://orvtech.com/howto/respaldar-itunes-a-un-servidor-remoto-con-rsync/">Respaldar iTunes a un servidor remoto con Rsync</a> es un articulo de: <a href="http://orvtech.com" rel="friend">orvtech.com</a></p>
<div class="shr-publisher-220"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Forvtech.com%2Fhowto%2Frespaldar-itunes-a-un-servidor-remoto-con-rsync%2F' data-shr_title='Respaldar+iTunes+a+un+servidor+remoto+con+Rsync'></a><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Forvtech.com%2Fhowto%2Frespaldar-itunes-a-un-servidor-remoto-con-rsync%2F' data-shr_title='Respaldar+iTunes+a+un+servidor+remoto+con+Rsync'></a><a class='shareaholic-fbsend' data-shr_href='http%3A%2F%2Forvtech.com%2Fhowto%2Frespaldar-itunes-a-un-servidor-remoto-con-rsync%2F'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://orvtech.com/howto/respaldar-itunes-a-un-servidor-remoto-con-rsync/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Los zombis podrían estar consumiendo tu procesador en este instante</title>
		<link>http://orvtech.com/general/los-zombis-podrian-estar-consumiendo-tu-procesador-en-este-instante/</link>
		<comments>http://orvtech.com/general/los-zombis-podrian-estar-consumiendo-tu-procesador-en-este-instante/#comments</comments>
		<pubDate>Tue, 17 Aug 2010 03:58:54 +0000</pubDate>
		<dc:creator>orvtech</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[NSLU2]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[BASH]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[recursos]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[zombie]]></category>

		<guid isPermaLink="false">http://orvtech.com/?p=227</guid>
		<description><![CDATA[Son procesos que han completado su ejecución pero aun tienen una entrada en la tabla de procesos, los zombis aparecen cuando un proceso hijo ha terminado pero aun no se ha eliminado de la tabla de procesos y el comando kill no tiene efectos sobre él.<p><a href="http://orvtech.com/general/los-zombis-podrian-estar-consumiendo-tu-procesador-en-este-instante/">Los zombis podrían estar consumiendo tu procesador en este instante</a> es un articulo de: <a href="http://orvtech.com" rel="friend">orvtech.com</a></p>
]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Forvtech.com%2Fgeneral%2Flos-zombis-podrian-estar-consumiendo-tu-procesador-en-este-instante%2F' data-shr_title='Los+zombis+podr%C3%ADan+estar+consumiendo+tu+procesador+en+este+instante'></a><a class='shareaholic-fbsend' data-shr_href='http%3A%2F%2Forvtech.com%2Fgeneral%2Flos-zombis-podrian-estar-consumiendo-tu-procesador-en-este-instante%2F'></a><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Forvtech.com%2Fgeneral%2Flos-zombis-podrian-estar-consumiendo-tu-procesador-en-este-instante%2F' data-shr_title='Los+zombis+podr%C3%ADan+estar+consumiendo+tu+procesador+en+este+instante'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetTop Automatic --><div style="text-align:left;"><img class="size-full wp-image-232" title="Zombi NSLU2" src="http://orvtech.info/2010/12/zombie-nslu2.101x100.png" alt="Los zombis también pueden estar en el NSLU2" width="101" height="100" align="left"/>
<div>Un proceso zombi es un proceso que ha completado su ejecución pero aun tiene una entrada en la tabla de procesos. Esta entrada aun es necesitada para permitir la lectura del estado de su estado de salida. El Termino zombi se deriva de la definición de un muerto viviente (se acuerdan de esa película?). Para ponerlo en términos simples y un poco mas técnicos, un proceso hijo ha terminado pero aun no se ha eliminado de la tabla de procesos y el comando <em>kill</em> no tiene efectos sobre él.</p>
<p>Identificarlos es fácil, podemos ejecutar el comando ps y buscamos cuales procesos tienen una &#8220;<em>z</em>&#8221; en la columna &#8220;<em>STAT</em>&#8220;. Los procesos zombi que permanecen por un periodo mas que corto por lo general es señal de <a href="http://orvtech.com/general/importante-reportar-bugs/" title="En este caso deberias deportarlo usando el ABRT de Fedora" rel="bookmark">un Bug en el proceso padre</a>. Ahora bien, si el zombi aun existe después de que el proceso padre ha terminado esto por lo general indica un bug en el sistema operativo.</p>
<div style="text-align: center;">
<div id="attachment_231" class="wp-caption aligncenter" style="width: 710px"><a href="http://orvtech.info/2010/12/terminal-zombies-700x291.png"><img class="size-full wp-image-231" title="Zombis en el terminal" src="http://orvtech.info/2010/12/terminal-zombies-700x291.png" alt="La salida de el comando TOP que muestra donde estan los zombis" width="700" height="291" /></a><p class="wp-caption-text">La salida de el comando top que muestra donde están los zombis</p></div>
</div>
<p>Un procesos zombi no es un problema tan grave, el problema se agrava si el computador va a ser sometido a fuertes cargas pues puede ser que se multipliquen. A pesar de que los zombis no consumen memoria un incremento acelerado de estos podría traer consecuencias a la hora de que el sistema operativo se le acaben los PID a asignar.</p>
<p>Una vez que el padre haya matado el zombi el proceso ID (<abbr title="Process ID">PID</abbr>) y la entrada en la tabla de procesos puede ser reutilizada, pero si este falla, el zombi permanece en la tabla de procesos.</p>
<p>Para eliminar un zombi del sistema, se le debe enviar la señal <abbr title="Señal usada para informar que un procesos hijo ha terminado">SIGCHLD</abbr> al padre usando el comando <em>kill</em>. En caso de que el padre se no pueda eliminar el zombi de la tabla de procesos podríamos intentar matando el proceso padre. Algo que debemos tomar en cuenta es que cuando un proceso pierde a su padre, &#8216;<em>init</em>&#8216; pasar a ser su nuevo padre y este se encarga de limpiar periódicamente la tabla de procesos de los zombis cuyos padres sean init.</div>
</div>
<div id="crp_related"><br /><h4>Artículos relacionados:</h4><ul><li><a href="http://orvtech.com/general/oom-killer-y-manipulacion-de-candidatos/" rel="bookmark" class="crp_title">OOM Killer y manipulación de candidatos.:</a><span class="crp_excerpt">  El OOM es un estado indeseado en la que el computador opera sin poder ...</span></li><li><a href="http://orvtech.com/general/archivos-swap-y-paralelizacion-de-espacio-swap/" rel="bookmark" class="crp_title">Archivos swap y paralelizacion de espacio swap:</a><span class="crp_excerpt">  
Los archivos swap o particiones swap son archivos que residen en bajo el directorio ...</span></li><li><a href="http://orvtech.com/howto/nphup-procesos-corriendo-aun-cuando-cerremos-sesion/" rel="bookmark" class="crp_title">Dejar procesos corriendo en el fondo aun cuando cerremos la sesión:</a><span class="crp_excerpt"> Revisando mi lista de artículos me di cuenta que no tengo uno donde hable de ...</span></li></ul><br /></div><p><a href="http://orvtech.com/general/los-zombis-podrian-estar-consumiendo-tu-procesador-en-este-instante/">Los zombis podrían estar consumiendo tu procesador en este instante</a> es un articulo de: <a href="http://orvtech.com" rel="friend">orvtech.com</a></p>
<div class="shr-publisher-227"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Forvtech.com%2Fgeneral%2Flos-zombis-podrian-estar-consumiendo-tu-procesador-en-este-instante%2F' data-shr_title='Los+zombis+podr%C3%ADan+estar+consumiendo+tu+procesador+en+este+instante'></a><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Forvtech.com%2Fgeneral%2Flos-zombis-podrian-estar-consumiendo-tu-procesador-en-este-instante%2F' data-shr_title='Los+zombis+podr%C3%ADan+estar+consumiendo+tu+procesador+en+este+instante'></a><a class='shareaholic-fbsend' data-shr_href='http%3A%2F%2Forvtech.com%2Fgeneral%2Flos-zombis-podrian-estar-consumiendo-tu-procesador-en-este-instante%2F'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://orvtech.com/general/los-zombis-podrian-estar-consumiendo-tu-procesador-en-este-instante/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Comparte un archivo via torrents con tu propio tracker</title>
		<link>http://orvtech.com/howto/comparte-un-archivo-via-torrents-con-tu-propio-tracker/</link>
		<comments>http://orvtech.com/howto/comparte-un-archivo-via-torrents-con-tu-propio-tracker/#comments</comments>
		<pubDate>Fri, 13 Aug 2010 03:59:19 +0000</pubDate>
		<dc:creator>orvtech</dc:creator>
				<category><![CDATA[HowTo]]></category>
		<category><![CDATA[NSLU2]]></category>
		<category><![CDATA[torrents]]></category>

		<guid isPermaLink="false">http://orvtech.com/?p=244</guid>
		<description><![CDATA[Hoy tenia la necesidad de compartir un archivo de 1,1GB con un grupo de amigos y no quería usar el ancho de banda de mi servidor por completo para esto así que decidí usar torrents. El torrent es un protocolo para compartir archivos con la...<p><a href="http://orvtech.com/howto/comparte-un-archivo-via-torrents-con-tu-propio-tracker/">Comparte un archivo via torrents con tu propio tracker</a> es un articulo de: <a href="http://orvtech.com" rel="friend">orvtech.com</a></p>
]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Forvtech.com%2Fhowto%2Fcomparte-un-archivo-via-torrents-con-tu-propio-tracker%2F' data-shr_title='Comparte+un+archivo+via+torrents+con+tu+propio+tracker'></a><a class='shareaholic-fbsend' data-shr_href='http%3A%2F%2Forvtech.com%2Fhowto%2Fcomparte-un-archivo-via-torrents-con-tu-propio-tracker%2F'></a><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Forvtech.com%2Fhowto%2Fcomparte-un-archivo-via-torrents-con-tu-propio-tracker%2F' data-shr_title='Comparte+un+archivo+via+torrents+con+tu+propio+tracker'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Hoy tenia la necesidad de compartir un archivo de 1,1GB con un grupo de amigos y no quería usar el ancho de banda de mi servidor por completo para esto así que decidí usar torrents. El torrent es un protocolo para compartir archivos con la peculiaridad de que todo lo que descargas por este medio, durante el transcurso de su descarga, estará siempre disponible para ser descargado por otro. Ya en el articulo <em>&#8220;<a href="http://orvtech.com/howto/descargas-automatizadas-de-torrents-en-el-nslu2">Descargas automatizadas</a> de <a title="mas informacion en wikipedia" href="http://es.wikipedia.org/wiki/.torrent">torrents</a> en el NSLU2&#8243;</em> toque el tema de los torrents en el NSLU2, esta vez les voy a comentar un poco de como crear un torrent tracker y como crear el torrent como tal.<br />
<div id="attachment_243" class="wp-caption aligncenter" style="width: 572px"><a href="http://orvtech.info/2010/12/torrentsx750.png"><img class="size-full wp-image-243" title="NSLU2 como torrent tracker" src="http://orvtech.info/2010/12/torrentsx750.png" alt="El NSLU2 como un torrent tracker" width="562" height="419" /></a><p class="wp-caption-text">La internet es como una serie de tubos</p></div></p>
<p></p>
<p>&nbsp; </p>
<h2>El torrent tracker es la pieza clave</h2>
<p>Un tracker es un server (en este caso mi <a title="Servidor de casa, economico y silencioso" href="http://orvtech.com/tag/nslu2">NSLU2</a>) que contiene la información necesaria para que los peers se conecten con otros peers coordinando la comunicación entre ellos. Los trackers son el único punto de encuentro al cual los clientes requieren conectarse para poder comunicarse y poder iniciar una descarga. En nuestro caso usaremos el que trae el kit de utilidades bittornado.<br />
bttrack.py viene incluido con bittornado, yo use el siguiente comando con estos flags para levantar mi servicio de torrent tracker:<br />
<code>nohup /usr/bin/bttrack.py --port 6969 --dfile ~/dstate.txt --logfile ~/tracker.log &amp;</code></p>
<p>Así de simple como se ve, invoco el script de python y le paso los siguientes parámetros:<br />
<strong>&#8211;port:</strong> El puerto en el que va a escuchar.<br />
<strong>&#8211;difile:</strong> El archivo con la información mas reciente de las descargas.<br />
<strong>&#8211;logfile:</strong> El archivo de registros de las actividades del tracker.</p>
<p></p>
<p>&nbsp;</p>
<h2>El archivo *.torrent es algo mas complejo.</h2>
<p>El archivo torrent es un poco mas complejo pero igual fácil de crear, usando btmakemetafile que también esta incluido en bittornado podemos crear el archivo tan solo con proporcionarle el hipervínculo del tracker y el nombre del archivo que queremos compartir como se puede ver aquí:<br />
<code>btmakemetafile.py http://orvtech.com:6969/announce --comment "http://orvtech.com/latest/torrent" guardianes_de_chavez.mp4</code></p>
<p>El parámetro <em>&#8211;comment</em> simplemente nos permite agregarle un comentario al torrent.</p>
<p></p>
<p>&nbsp;</p>
<h2>Hacerlo publico para distribuirlo</h2>
<p>Hay muchas formas de hacerlo publico, solo basta con enviar el archivo *.torrent a las personas que queremos que descarguen el archivo, publicarlo en tu blog personal o subirlo a uno de estos sitios que sirven para buscar torrents, en mi caso use <a title="Los Guardianes de Chavez en The Pirate Bay" rel="nofollow" href="http://thepiratebay.org/torrent/5756041/guardianes_de_chavez.mp4">TPB</a> el cual tiene la particularidad que toma el *.torrent que tu creaste y agrega otros 2 trackers a el ( http://tracker.thepiratebay.org/announce y http://tracker.openbittorrent.com/announce )</p>
<p>&nbsp;</p>
<p></p>
<p>&nbsp;</p>
<p></p>
<p>&nbsp;</p>
<h3 title="Un bug en el torrent tracker">UPDATE Viernes Agosto 13, 2010:  Un bug en el tracker.</h3>
<p>Al parecer mi versión de bttracker no es del todo compatible con mi versión de python, y el proceso muere después de mas de un par de horas con un error referente a la incompatibilidad con el modulo <abbr title="algoritmo de hash seguro">SHA</abbr>. Por ahora he decidido hacer un pseudo whatchdog para vigilar que el tracker este siempre arriba.<br />
Modifique el script a esto:<br />
<code>while true<br />
do  if pidof -x bttrack.py &gt; /dev/null<br />
then sleep 2<br />
else /usr/bin/bttrack.py --port 6969 --dfile ~/dstate.txt --logfile ~/tracker.log<br />
fi<br />
done</code></p>
<p>Como ven es un loop infinito que constantemente pregunta por el <abbr title="un numero que identifica de manera inequívoca a un proceso">PID</abbr> del proceso, de no encontrarlo simplemente ejecuta de nuevo el comando.Luego descargo una versión mas nueva de bittornado a ver si esto soluciona el problema.</p>
<p><strong>páginas de interés:</strong><br />
<a href="http://www.bittornado.com">TheShad0w&#8217;s experimental bittorrent client (BitTornado)</a><br />
<a href="http://www.bittorrent.org">Pagina del proyecto bittorrent.org</a></p>
<div id="crp_related"><br /><h4>Artículos relacionados:</h4><ul><li><a href="http://orvtech.com/general/las-cinco-publicaciones-mas-vistas-en-orvtech-com/" rel="bookmark" class="crp_title">Las cinco publicaciones mas vistas en orvtech.com del 2010:</a><span class="crp_excerpt"> Aquí les dejo los cinco posts mas visitados en mi blog durante el 2010. Las ...</span></li><li><a href="http://orvtech.com/howto/descargas-automatizadas-de-torrents-en-el-nslu2/" rel="bookmark" class="crp_title">Descargas automatizadas de torrents en el NSLU2:</a><span class="crp_excerpt"> Como dice el titulo, automatizado (gracias a cron) y con una consola para monitorear las ...</span></li><li><a href="http://orvtech.com/howto/servidor-completo-casero-economico-linux/" rel="bookmark" class="crp_title">Un servidor casero, completo y económico con Linux:</a><span class="crp_excerpt"> Hoy quiero retomar el tema del NSLU2, el tema de un servidor casero, silencioso y ...</span></li></ul><br /></div><p><a href="http://orvtech.com/howto/comparte-un-archivo-via-torrents-con-tu-propio-tracker/">Comparte un archivo via torrents con tu propio tracker</a> es un articulo de: <a href="http://orvtech.com" rel="friend">orvtech.com</a></p>
<div class="shr-publisher-244"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Forvtech.com%2Fhowto%2Fcomparte-un-archivo-via-torrents-con-tu-propio-tracker%2F' data-shr_title='Comparte+un+archivo+via+torrents+con+tu+propio+tracker'></a><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Forvtech.com%2Fhowto%2Fcomparte-un-archivo-via-torrents-con-tu-propio-tracker%2F' data-shr_title='Comparte+un+archivo+via+torrents+con+tu+propio+tracker'></a><a class='shareaholic-fbsend' data-shr_href='http%3A%2F%2Forvtech.com%2Fhowto%2Fcomparte-un-archivo-via-torrents-con-tu-propio-tracker%2F'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://orvtech.com/howto/comparte-un-archivo-via-torrents-con-tu-propio-tracker/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
<enclosure url="http://thepiratebay.org/torrent/5756041/guardianes_de_chavez.mp4" length="0" type="video/mp4" />
		</item>
		<item>
		<title>AppleTV, el futuro remplazo de mi NSLU2</title>
		<link>http://orvtech.com/nslu2/appletv-el-futuro-remplazo-de-mi-nslu2/</link>
		<comments>http://orvtech.com/nslu2/appletv-el-futuro-remplazo-de-mi-nslu2/#comments</comments>
		<pubDate>Thu, 08 Jul 2010 03:18:38 +0000</pubDate>
		<dc:creator>orvtech</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[NSLU2]]></category>
		<category><![CDATA[AppleTV]]></category>
		<category><![CDATA[OSX]]></category>

		<guid isPermaLink="false">http://orvtech.com/?p=348</guid>
		<description><![CDATA[Por ahora no he jugado mucho con el Apple TV, tan solo unos minutos esta mañana, en cuestión de minutos lo conecte al TV, prendió y logre configurar para que se conecte a la red inalámbrica de la casa. Este sera el reemplazo de mi...<p><a href="http://orvtech.com/nslu2/appletv-el-futuro-remplazo-de-mi-nslu2/">AppleTV, el futuro remplazo de mi NSLU2</a> es un articulo de: <a href="http://orvtech.com" rel="friend">orvtech.com</a></p>
]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Forvtech.com%2Fnslu2%2Fappletv-el-futuro-remplazo-de-mi-nslu2%2F' data-shr_title='AppleTV%2C+el+futuro+remplazo+de+mi+NSLU2'></a><a class='shareaholic-fbsend' data-shr_href='http%3A%2F%2Forvtech.com%2Fnslu2%2Fappletv-el-futuro-remplazo-de-mi-nslu2%2F'></a><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Forvtech.com%2Fnslu2%2Fappletv-el-futuro-remplazo-de-mi-nslu2%2F' data-shr_title='AppleTV%2C+el+futuro+remplazo+de+mi+NSLU2'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetTop Automatic --><p>
Por ahora no he jugado mucho con el Apple TV, tan solo unos minutos esta mañana, en cuestión de minutos lo conecte al TV, prendió y  logre configurar para que se conecte a la red inalámbrica de la casa. Este sera el reemplazo de mi servidor NSLU2 en un par de meses. Por su puesto no podian faltar las fotos:</p>
<div style="text-align: center;">

<a href='http://orvtech.com/nslu2/appletv-el-futuro-remplazo-de-mi-nslu2/attachment/appletv-1/' title='appletv 1'><img width="150" height="150" src="http://orvtech.info/2010/12/appletv-1-150x150.jpg" class="attachment-thumbnail" alt="Aquí les dejo unas fotos que tome durante la instalación del xmbc, sshd entre otras aplicaciones via USB. La instalación es fácil, toma unos 2 minutos una vez que se tiene el usb stick con el parche ya listo. La creación del USB con el parche toma unos 25 minutos con mi connexion de 1024kbps." title="appletv 1" /></a>
<a href='http://orvtech.com/nslu2/appletv-el-futuro-remplazo-de-mi-nslu2/attachment/appletv-2/' title='appletv 2'><img width="150" height="150" src="http://orvtech.info/2010/12/appletv-2-150x150.jpg" class="attachment-thumbnail" alt="Aquí les dejo unas fotos que tome durante la instalación del xmbc, sshd entre otras aplicaciones via USB. La instalación es fácil, toma unos 2 minutos una vez que se tiene el usb stick con el parche ya listo. La creación del USB con el parche toma unos 25 minutos con mi connexion de 1024kbps." title="appletv 2" /></a>
<a href='http://orvtech.com/nslu2/appletv-el-futuro-remplazo-de-mi-nslu2/attachment/appletv-3/' title='appletv 3'><img width="150" height="150" src="http://orvtech.info/2010/12/appletv-3-150x150.jpg" class="attachment-thumbnail" alt="Aquí les dejo unas fotos que tome durante la instalación del xmbc, sshd entre otras aplicaciones via USB. La instalación es fácil, toma unos 2 minutos una vez que se tiene el usb stick con el parche ya listo. La creación del USB con el parche toma unos 25 minutos con mi connexion de 1024kbps." title="appletv 3" /></a>
<a href='http://orvtech.com/nslu2/appletv-el-futuro-remplazo-de-mi-nslu2/attachment/appletv-4/' title='appletv 4'><img width="150" height="150" src="http://orvtech.info/2010/12/appletv-4-150x150.jpg" class="attachment-thumbnail" alt="Aquí les dejo unas fotos que tome durante la instalación del xmbc, sshd entre otras aplicaciones via USB. La instalación es fácil, toma unos 2 minutos una vez que se tiene el usb stick con el parche ya listo. La creación del USB con el parche toma unos 25 minutos con mi connexion de 1024kbps." title="appletv 4" /></a>
<a href='http://orvtech.com/nslu2/appletv-el-futuro-remplazo-de-mi-nslu2/attachment/appletv-5/' title='appletv 5'><img width="150" height="150" src="http://orvtech.info/2010/12/appletv-5-150x150.jpg" class="attachment-thumbnail" alt="Aquí les dejo unas fotos que tome durante la instalación del xmbc, sshd entre otras aplicaciones via USB. La instalación es fácil, toma unos 2 minutos una vez que se tiene el usb stick con el parche ya listo. La creación del USB con el parche toma unos 25 minutos con mi connexion de 1024kbps." title="appletv 5" /></a>
<a href='http://orvtech.com/nslu2/appletv-el-futuro-remplazo-de-mi-nslu2/attachment/appletv-6/' title='appletv 6'><img width="150" height="150" src="http://orvtech.info/2010/12/appletv-6-150x150.jpg" class="attachment-thumbnail" alt="Aquí les dejo unas fotos que tome durante la instalación del xmbc, sshd entre otras aplicaciones via USB. La instalación es fácil, toma unos 2 minutos una vez que se tiene el usb stick con el parche ya listo. La creación del USB con el parche toma unos 25 minutos con mi connexion de 1024kbps." title="appletv 6" /></a>
<a href='http://orvtech.com/nslu2/appletv-el-futuro-remplazo-de-mi-nslu2/attachment/appletv-7/' title='appletv 7'><img width="150" height="150" src="http://orvtech.info/2010/12/appletv-7-150x150.jpg" class="attachment-thumbnail" alt="Aquí les dejo unas fotos que tome durante la instalación del xmbc, sshd entre otras aplicaciones via USB. La instalación es fácil, toma unos 2 minutos una vez que se tiene el usb stick con el parche ya listo. La creación del USB con el parche toma unos 25 minutos con mi connexion de 1024kbps." title="appletv 7" /></a>
<a href='http://orvtech.com/nslu2/appletv-el-futuro-remplazo-de-mi-nslu2/attachment/appletv-8/' title='appletv Y el NSLU2 8'><img width="150" height="150" src="http://orvtech.info/2010/12/appletv-8-150x150.jpg" class="attachment-thumbnail" alt="Aquí les dejo unas fotos que tome durante la instalación del xmbc, sshd entre otras aplicaciones via USB. La instalación es fácil, toma unos 2 minutos una vez que se tiene el usb stick con el parche ya listo. La creación del USB con el parche toma unos 25 minutos con mi connexion de 1024kbps." title="appletv Y el NSLU2 8" /></a>

</div>
<p></p>
<p>
Las características técnicas del equipo son:</p>
<table border="0">
<tr>
<td>Procesador: </td>
<td> Intel 1.0 GHz &#8220;Crofton&#8221; Processor </td>
</tr>
<tr>
<td>Gráficos: </td>
<td> NVIDIA GeForce Go 7300 (64 MB VRAM) </td>
</tr>
<tr>
<td>Memoria: </td>
<td> 256 Mb de 400 MHz DDR2 SDRAM </td>
</tr>
<tr>
<td>Disco duro: </td>
<td> 160 GB hard disk </td>
</tr>
<tr>
<td>Conectividad: </td>
<td> USB 2.0, receptor infrarrojo, HDMI y Vídeo por componentes. </td>
</tr>
<tr>
<td>Networking: </td>
<td> 10BASE-T/100BASE-T Ethernet, 802.11 b, g, n wireless networking (AirPort) </td>
</tr>
<tr>
<td>Salida: </td>
<td> 1080p/1080i 60/50 Hz (pero la resolución máxima de vídeo es de 720p)</td>
</tr>
<tr>
<td>Audio: </td>
<td> S/PDIF digital audio óptico, RCA analógico de sonido estéreo </td>
</tr>
<tr>
<td>Alimentación: </td>
<td> Fuente de alimentación universal 48W </td>
</tr>
<tr>
<td>Dimensiones: </td>
<td> 197x197x28 mm (7.7&#215;7.7&#215;1.1 in)</td>
</tr>
<tr>
<td>Peso: </td>
<td> 1.09 kg (2.4 libra)</td>
</tr>
</table>
<p></p>
<p>
A simple vista, mas de ocho veces la cantidad de memoria que tiene mi <a href="http://es.wikipedia.org/wiki/NSLU2" title="mas informacion del NSLU2 en wikipedia">NSLU2</a> (que por cierto aloja esta pagina web), casi ocho veces mas poder de procesamiento, disco duro interno vía IDE que ya de por si es mucho mas rápido que USB 2.0, lo puedo conectar al TV y ver en HD las películas, photos, y demás contenido multimedia que descargue vía torrents. Todo esto por $108 puesto en mi casa.</p>
<div id="crp_related"><br /><h4>Artículos relacionados:</h4><ul><li><a href="http://orvtech.com/howto/servidor-completo-casero-economico-linux/" rel="bookmark" class="crp_title">Un servidor casero, completo y económico con Linux:</a><span class="crp_excerpt"> Hoy quiero retomar el tema del NSLU2, el tema de un servidor casero, silencioso y ...</span></li><li><a href="http://orvtech.com/nslu2/ha-llegado-el-fin-del-acceso-publico-a-mi-nslu2/" rel="bookmark" class="crp_title">Ha llegado el fin del acceso publico a mi NSLU2?:</a><span class="crp_excerpt"> 
Me entere este fin de semana que el datacenter que aloja mi NSLU2 (la casa ...</span></li><li><a href="http://orvtech.com/general/me-llego-mi-lenovo-thinkpad-x120e/" rel="bookmark" class="crp_title">En Fotos: La Lenovo ThinkPad x120e:</a><span class="crp_excerpt"> Luego del fiasco de la HP DM1Z decidí comprarme comprarme el equivalente de la marca ...</span></li></ul><br /></div><p><a href="http://orvtech.com/nslu2/appletv-el-futuro-remplazo-de-mi-nslu2/">AppleTV, el futuro remplazo de mi NSLU2</a> es un articulo de: <a href="http://orvtech.com" rel="friend">orvtech.com</a></p>
<div class="shr-publisher-348"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Forvtech.com%2Fnslu2%2Fappletv-el-futuro-remplazo-de-mi-nslu2%2F' data-shr_title='AppleTV%2C+el+futuro+remplazo+de+mi+NSLU2'></a><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Forvtech.com%2Fnslu2%2Fappletv-el-futuro-remplazo-de-mi-nslu2%2F' data-shr_title='AppleTV%2C+el+futuro+remplazo+de+mi+NSLU2'></a><a class='shareaholic-fbsend' data-shr_href='http%3A%2F%2Forvtech.com%2Fnslu2%2Fappletv-el-futuro-remplazo-de-mi-nslu2%2F'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://orvtech.com/nslu2/appletv-el-futuro-remplazo-de-mi-nslu2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Respaldar NanoBlogger</title>
		<link>http://orvtech.com/howto/respaldar-nanoblogger/</link>
		<comments>http://orvtech.com/howto/respaldar-nanoblogger/#comments</comments>
		<pubDate>Thu, 10 Jun 2010 03:52:21 +0000</pubDate>
		<dc:creator>orvtech</dc:creator>
				<category><![CDATA[HowTo]]></category>
		<category><![CDATA[NSLU2]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[rsync]]></category>
		<category><![CDATA[Scripts]]></category>

		<guid isPermaLink="false">http://orvtech.com/?p=366</guid>
		<description><![CDATA[Los directorios mas importantes de NanoBlogger son data templates styles images y plugins. Anoche decidí a automatizar el respaldo de mi blog, como no tengo problemas de espacio decidí solo dejar por fuera el directorio cache. Este es el script para crear un archivo comprimido...<p><a href="http://orvtech.com/howto/respaldar-nanoblogger/">Respaldar NanoBlogger</a> es un articulo de: <a href="http://orvtech.com" rel="friend">orvtech.com</a></p>
]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Forvtech.com%2Fhowto%2Frespaldar-nanoblogger%2F' data-shr_title='Respaldar+NanoBlogger'></a><a class='shareaholic-fbsend' data-shr_href='http%3A%2F%2Forvtech.com%2Fhowto%2Frespaldar-nanoblogger%2F'></a><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Forvtech.com%2Fhowto%2Frespaldar-nanoblogger%2F' data-shr_title='Respaldar+NanoBlogger'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Los directorios mas importantes de NanoBlogger son data templates styles images y plugins. Anoche decidí a automatizar el respaldo de mi blog, como no tengo problemas de espacio decidí solo dejar por fuera el directorio cache. Este es el script para crear un archivo comprimido y subirlo a otro server vía SCP:</p>
<p><code>#!/bin/bash<br />
BLOG_PATH="/path/to/the/directory/that/contains/your/blog.conf/"<br />
BLOG_NAME="orvtech.com"<br />
DATE=`date +%d%b%Y-h%Hm%M`<br />
NO_BAKUP="cache/*"<br />
SCP_SERVER=""<br />
SCP_USER=""<br />
SCP_PORT="22"<br />
cd $BLOG_PATH<br />
tar -czpsf ~/$BLOG_NAME-nanoblogger.$DATE.tar.gz --exclude "$NO_BAKUP" *<br />
ls -lah  ~/$BLOG_NAME-nanoblogger.$DATE.tar.gz<br />
scp -P$SCP_PORT ~/$BLOG_NAME-nanoblogger.$DATE.tar.gz $SCP_USER@$SCP_SERVER:~/</code></p>
<div id="crp_related"><br /><h4>Artículos relacionados:</h4><ul><li><a href="http://orvtech.com/howto/manten-tu-firma-al-dia-en-todos-los-foros-en-que-participas/" rel="bookmark" class="crp_title">Mantén tu firma al día en todos los foros en que participas.:</a><span class="crp_excerpt"> Como buen troll que soy me mantengo entretenido y participo en varias comunidades o foros ...</span></li><li><a href="http://orvtech.com/howto/thumbnails-cuadradas-en-plugin-galleries-sh-de-nanoblogger/" rel="bookmark" class="crp_title">Thumbnails cuadradas en plugin galleries.sh de NanoBlogger.:</a><span class="crp_excerpt"> 
Con leves modificaciones a el plugin galleries de NanoBlogger logre generar imágenes miniaturas cuadradas manteniendo ...</span></li><li><a href="http://orvtech.com/general/protege-tus-archivos-en-lighttpd-parte-1/" rel="bookmark" class="crp_title">Protege tus archivos en lighttpd (Parte 1).:</a><span class="crp_excerpt">  En ocasiones es necesario proteger nuestros archivos. En articulo anterior explique de como hacer ...</span></li></ul><br /></div><p><a href="http://orvtech.com/howto/respaldar-nanoblogger/">Respaldar NanoBlogger</a> es un articulo de: <a href="http://orvtech.com" rel="friend">orvtech.com</a></p>
<div class="shr-publisher-366"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Forvtech.com%2Fhowto%2Frespaldar-nanoblogger%2F' data-shr_title='Respaldar+NanoBlogger'></a><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Forvtech.com%2Fhowto%2Frespaldar-nanoblogger%2F' data-shr_title='Respaldar+NanoBlogger'></a><a class='shareaholic-fbsend' data-shr_href='http%3A%2F%2Forvtech.com%2Fhowto%2Frespaldar-nanoblogger%2F'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://orvtech.com/howto/respaldar-nanoblogger/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Descargas automatizadas de torrents en el NSLU2</title>
		<link>http://orvtech.com/howto/descargas-automatizadas-de-torrents-en-el-nslu2/</link>
		<comments>http://orvtech.com/howto/descargas-automatizadas-de-torrents-en-el-nslu2/#comments</comments>
		<pubDate>Tue, 18 May 2010 17:10:00 +0000</pubDate>
		<dc:creator>orvtech</dc:creator>
				<category><![CDATA[HowTo]]></category>
		<category><![CDATA[NSLU2]]></category>
		<category><![CDATA[Scripts]]></category>
		<category><![CDATA[torrents]]></category>

		<guid isPermaLink="false">http://orvtech.com/?p=448</guid>
		<description><![CDATA[Como dice el titulo, automatizado (gracias a cron) y con una consola para monitorear las descargas. La consola luce algo así: Este es el script que uso para descargar torrents a horas y días pre-determinadas, es un wrapper de btlaunchmanycurses.py y lo llamo en un...<p><a href="http://orvtech.com/howto/descargas-automatizadas-de-torrents-en-el-nslu2/">Descargas automatizadas de torrents en el NSLU2</a> es un articulo de: <a href="http://orvtech.com" rel="friend">orvtech.com</a></p>
]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Forvtech.com%2Fhowto%2Fdescargas-automatizadas-de-torrents-en-el-nslu2%2F' data-shr_title='Descargas+automatizadas+de+torrents+en+el+NSLU2'></a><a class='shareaholic-fbsend' data-shr_href='http%3A%2F%2Forvtech.com%2Fhowto%2Fdescargas-automatizadas-de-torrents-en-el-nslu2%2F'></a><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Forvtech.com%2Fhowto%2Fdescargas-automatizadas-de-torrents-en-el-nslu2%2F' data-shr_title='Descargas+automatizadas+de+torrents+en+el+NSLU2'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Como dice el titulo, automatizado (gracias a cron) y con una consola para monitorear las descargas. La consola luce algo así:</p>
<div style="text-align:center">
<div id="attachment_447" class="wp-caption aligncenter" style="width: 602px"><a href="http://orvtech.info/2010/12/torrents_cron_script.png"><img src="http://orvtech.info/2010/12/torrents_cron_script.png" alt="Bittornado es iniciado via un script el cual lo deja corriendo dentro de una instancia de screen" title="bittornado corriendo dentro de una instanc" width="592" height="367" class="size-full wp-image-447" /></a><p class="wp-caption-text">Bittornado es iniciado via un script el cual lo deja corriendo dentro de una instancia de screen</p></div>
</div>
<p>
Este es el script que uso para descargar torrents a horas y días pre-determinadas, es un wrapper de btlaunchmanycurses.py y lo llamo en un cronjob a distintas horas y días. Demosle un vistazo y luego hablamos de las opciones:
</p>
<p><code>#!/bin/bash<br />
DESCARGA_VELOCIDAD=1458<br />
COMPARTE_VELOCIDAD=113<br />
LIMPIAR_INTERVALO=5<br />
MIN_PUERTO=27777<br />
MAX_PUERTO=27799<br />
TORRENTS_CARPETA="/home/TU_USUARIO_AQUI/descargas"<br />
DESCARGAS_DESTINO="/home/TU_USUARIO_AQUI/descargas"<br />
test -d $TORRENTS_CARPETA || mkdir -p $TORRENTS_CARPETA<br />
test -d $DESCARGAS_DESTINO || mkdir -p $DESCARGAS_DESTINO<br />
cd $TORRENTS_CARPETA<br />
nice /usr/bin/btlaunchmanycurses.py $TORRENTS_CARPETA \<br />
--saveas_style 3 \<br />
--upnp_nat_access 0 \<br />
--minport $MIN_PUERTO \<br />
--maxport $MAX_PUERTO \<br />
--max_upload_rate $COMPARTE_VELOCIDAD \<br />
--max_download_rate $DESCARGA_VELOCIDAD \<br />
--auto_flush $LIMPIAR_INTERVALO</code></p>
<p>
Para empezar la descarga solo basta poner los *.torrent en <i>~/descargas/</i> y el script hará el resto. </p>
<p><b>saveas_style:</b><br />
Que nombre le va a poner a la descarga del torrent. Acepta hasta tres valores del 1 al 3:</p>
<ul>
<li>1= Lo renombra al nombre que el torrent especifica.</li>
<li>2= Lo salva bajo el nombre del torrent.</li>
<li>3= Lo salva dentro de un directorio que tiene el nombre especificado en el torrent.</li>
<p>La ultima (3) es la opcion que usaremos para tener todo mas ordenado.
</ul>
</p>
<p>
<b>upnp_nat_access:</b><br />
Intenta autoconfigurar un puerto UPnP en el router para que le haga foward al server. En mi caso uso la primera opción que lo deshabilita. Pero aquí tienen la lista completa de opciones:</p>
<ul>
<li>0= deshabilitada.</li>
<li>1= modo 1, esta es rápida y es la que btlaunchmanycurses usa como predeterminada.</li>
<li>2= modo 2, esta es un poco mas lenta.</li>
</ul>
<p>
<b>minport:</b><br />
El puerto que va a usar para escuchar, en caso de que este puerto este ocupado o no este disponible, btlaunchmanycurses utilizara el siguiente puerto y así de manera sucesiva hasta llegar al maxport.
</p>
<p>
<b>maxport:</b><br />
El número de puerto máximo en el que puede escuchar, el predeterminado es el 60000.
</p>
<p>
<b>max_upload_rate:</b><br />
El máximo de ancho de banda a usar para compartir nuestros torrents, este acepta el numero máximo de kB/s o estas dos opciones:</p>
<ul>
<li>0= Sin limites.</li>
<li>-1= Automático.</li>
</ul>
<p>El valor predeterminado es 0 (sin limites).
</p>
<p>
<b>max_download_rate:</b><br />
El máximo de kB/s que se pueden descargar, el valor predeterminado es 0 que indica que no tiene limites.
</p>
<p>
<b>auto_flush:</b><br />
Los minutos entre cada flush al disco, el predeterminado es 0 que indica deshabilitado.
</p>
<p>
Una opcion que Uds pueden considerar es <i>&#8211;random_port</i> que toma los valores 0 o 1, esta opción le dice a btlaunchmanycurses que use un puerto aleatoriamente seleccionado dentro del rango de <i>minport</i> y <i>maxport</i>.</p>
<p></p>
<p>
<b>El Cronjob.</b></p>
<pre>30 0  *   *   *     /home/TU_USUARIO_AQUI/descargas/cron_torrent.sh >/dev/null 2>&#038;1
8  8  *   *   *     /home/TU_USUARIO_AQUI/descargas/killbtlaunch.sh >/dev/null 2>&#038;1</pre>
<p>Como verán ejecuto dos scripts distintos, uno que levanta el torrent y otro que lo mata. veamos el primero, cron_torrent.sh:<br />
<code>#!/bin/bash<br />
screen -D -m -S "torrents-nightly" /home/TU_USUARIO_AQUI/descargas/download.sh</code></p>
<p>Este a las 12:30am creara un screen de nombre <i>torrents-nightly</i> y dentro de ese screen ejecutara el script que discutimos arriba el cual lo llamo download.sh. El segundo script que se ejecuta a las 8:08am termina las descargas. Aquí esta el cod<br />
igo fuente de <i>killbtlaunch.sh</i>:<br />
<code>#!/bin/bash<br />
for X in `ps ax | grep -i -E 'btlaunchmanycurses|bittornado|irssi|torrents-nightly' | grep -v grep |awk '{print $1}'`<br />
do kill -9 $X<br />
done</code></p>
<div id="crp_related"><br /><h4>Artículos relacionados:</h4><ul><li><a href="http://orvtech.com/howto/recuperar-archivos-borrados/" rel="bookmark" class="crp_title">Recuperar archivos borrados:</a><span class="crp_excerpt"> A todos nos ha pasado, estamos trabajando, por error le damos en el teclado a ...</span></li><li><a href="http://orvtech.com/howto/comparte-un-archivo-via-torrents-con-tu-propio-tracker/" rel="bookmark" class="crp_title">Comparte un archivo via torrents con tu propio tracker:</a><span class="crp_excerpt"> Hoy tenia la necesidad de compartir un archivo de 1,1GB con un grupo de amigos ...</span></li><li><a href="http://orvtech.com/howto/encontrar-los-directorios-y-archivos-mas-grandes-en-una-carpeta/" rel="bookmark" class="crp_title">Encontrar los directorios y archivos mas grandes en una carpeta:</a><span class="crp_excerpt"> Usando `du` podemos encontrar los directorios y archivos mas grande dentro de un directorio. el ...</span></li></ul><br /></div><p><a href="http://orvtech.com/howto/descargas-automatizadas-de-torrents-en-el-nslu2/">Descargas automatizadas de torrents en el NSLU2</a> es un articulo de: <a href="http://orvtech.com" rel="friend">orvtech.com</a></p>
<div class="shr-publisher-448"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Forvtech.com%2Fhowto%2Fdescargas-automatizadas-de-torrents-en-el-nslu2%2F' data-shr_title='Descargas+automatizadas+de+torrents+en+el+NSLU2'></a><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Forvtech.com%2Fhowto%2Fdescargas-automatizadas-de-torrents-en-el-nslu2%2F' data-shr_title='Descargas+automatizadas+de+torrents+en+el+NSLU2'></a><a class='shareaholic-fbsend' data-shr_href='http%3A%2F%2Forvtech.com%2Fhowto%2Fdescargas-automatizadas-de-torrents-en-el-nslu2%2F'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://orvtech.com/howto/descargas-automatizadas-de-torrents-en-el-nslu2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CGI para obtener el BBCode de Flickr y Picasaweb hecha en BASH.</title>
		<link>http://orvtech.com/howto/cgi-para-obtener-el-bbcode-de-flickr-y-picasaweb-hecha-en-bash/</link>
		<comments>http://orvtech.com/howto/cgi-para-obtener-el-bbcode-de-flickr-y-picasaweb-hecha-en-bash/#comments</comments>
		<pubDate>Fri, 14 May 2010 04:45:34 +0000</pubDate>
		<dc:creator>orvtech</dc:creator>
				<category><![CDATA[HowTo]]></category>
		<category><![CDATA[NSLU2]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[BASH]]></category>
		<category><![CDATA[Flickr]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Picasa]]></category>
		<category><![CDATA[Scripts]]></category>

		<guid isPermaLink="false">http://orvtech.com/?p=421</guid>
		<description><![CDATA[No hace mucho publique dos scripts para obtener el código BBCode a partir de la URL de un álbum de Picasa o de un set de flickr, luego de jugar un poco logre unirlos en un CGI hecho en BASH. pueden ojearlo en esta URL:...<p><a href="http://orvtech.com/howto/cgi-para-obtener-el-bbcode-de-flickr-y-picasaweb-hecha-en-bash/">CGI para obtener el BBCode de Flickr y Picasaweb hecha en BASH.</a> es un articulo de: <a href="http://orvtech.com" rel="friend">orvtech.com</a></p>
]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Forvtech.com%2Fhowto%2Fcgi-para-obtener-el-bbcode-de-flickr-y-picasaweb-hecha-en-bash%2F' data-shr_title='CGI+para+obtener+el+BBCode+de+Flickr+y+Picasaweb+hecha+en+BASH.+'></a><a class='shareaholic-fbsend' data-shr_href='http%3A%2F%2Forvtech.com%2Fhowto%2Fcgi-para-obtener-el-bbcode-de-flickr-y-picasaweb-hecha-en-bash%2F'></a><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Forvtech.com%2Fhowto%2Fcgi-para-obtener-el-bbcode-de-flickr-y-picasaweb-hecha-en-bash%2F' data-shr_title='CGI+para+obtener+el+BBCode+de+Flickr+y+Picasaweb+hecha+en+BASH.+'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetTop Automatic --><p>No hace mucho publique dos scripts para obtener el código BBCode a partir de la URL de un álbum de Picasa o de un set de flickr, luego de jugar un poco logre unirlos en un CGI hecho en BASH. pueden ojearlo en esta URL:<br />
<a href="http://orvtech.com/album2bbcode.cgi">http://orvtech.com/album2bbcode.cgi</a>
</p>
<p>
El script primero evalua si la URL es de picasa o flickr, luego procede a diseccionar la data del REQUEST_URI a el script que le toque dependiendo de si es de Flickr o si es de Picasa. El <a href="http://es.wikipedia.org/wiki/Interfaz_de_entrada_com%C3%BAn#Enlaces_externos" title="Interfaz de entrada común">CGI</a> puede ser mejorado, actualmente no controlo si los servidores de flickr o picasa devuelven un Status distinto a 200. También se podría implementar un método de cache o regular el acceso (hacerle throtle).
</p>
<p>
El código base del CGI es el siguiente:
</p>
<p><code>#!/bin/bash<br />
echo "Content-type&#58; text/html"<br />
echo -e "Status&#58; 200 \n"<br />
GET_DATA=`env | grep REQUEST_URI |sed -e 's/\?/\ /g' | awk '{print $2}'`<br />
ALBUM_DATA=`echo "$GET_DATA" | sed -e 's/%3A/\&#58;/g' -e 's/%2F/\//g' -e 's/\&amp;/ /g' |grep -i -E 'http\&#58;\/\/picasaweb\.google\.com\/[a-z 0-9]?.&#42;/[a-z 0-9]?|http&#58;//(www\.)&#42;flickr.com/photos/.&#42;/sets/[0-9]?&#42;[0-9]'`<br />
SIZE=`echo "$GET_DATA" | sed -e 's/%3A/\&#58;/g' -e 's/%2F/\//g' -e 's/\&amp;/ /g' |grep [0-9][0-9]px| sed -e 's/\=/ /g'| awk '{print $4}'`<br />
if `echo $ALBUM_DATA | grep -i -q -E 'http\&#58;\/\/picasaweb\.google\.com\/[a-z 0-9]?.&#42;/[a-z 0-9]?'`<br />
then<br />
ALBUM_TYPE="picasa"<br />
else<br />
  if `echo $ALBUM_DATA | grep -i -q -E 'http&#58;//(www\.)&#42;flickr.com/photos/.&#42;/sets/[0-9]?&#42;[0-9]'`<br />
  then<br />
  ALBUM_TYPE="flickr"<br />
  else<br />
  ALBUM_TYPE="unknown"<br />
  fi<br />
fi<br />
echo "<br />
&lt;html&gt;<br />
&lt;body&gt;<br />
&lt;table&gt;<br />
&lt;tr&gt;<br />
&lt;td&gt;<br />
&lt;b&gt;Album o Set URL&#58;&lt;/b&gt;<br />
&lt;form method=get action=\"/album2bbcode.cgi\"&gt;&lt;input type=text name=albumoset /&gt;<br />
&lt;/td&gt;<br />
&lt;td&gt;<br />
&lt;select name=\"SIZE\"&gt;"<br />
for X in 640px 144px 288px 320px 400px 512px 576px 800px 1024px<br />
do echo "&lt;option value=\"$X\"&gt; $X &lt;/option&gt;"<br />
done<br />
echo "&lt;/select&gt;<br />
&lt;/td&gt;<br />
&lt;/tr&gt;<br />
&lt;tr colspan=2&gt;&lt;td&gt;<br />
&lt;input type=submit&gt;<br />
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;<br />
&lt;/form&gt;"<br />
echo -e "&lt;b&gt;Album&#58;&lt;/b&gt; &lt;i&gt;$ALBUM_DATA&lt;/i&gt;" | sed -e 's/=/ /g'<br />
echo "&lt;br /&gt;&lt; textarea class=\"bashcode\" style=\"width&#58; 700px; height&#58; 280px;\"&gt;"<br />
if [[ "$ALBUM_TYPE" == picasa ]]<br />
then<br />
PICASA_DATA=`echo -e " $ALBUM_DATA"|sed -e 's/=/ /g'|awk '{print $2}'`<br />
echo -e " $PICASA_DATA" | curl -s `awk -F / '{print "http&#58;//picasaweb.google.com/data/feed/api/user/"$4"/album/"$5}'` | sed -e 's/\"/\ /g' -e s/\'/\ /g | tr ' ' '\n' | grep 's72' | awk '{print "[url='$PICASA_DATA'][img]"$0"[/img][/url]\n"}' | sed s/s72/s$SIZE/g<br />
fi<br />
if [[ "$ALBUM_TYPE" == flickr ]]<br />
then<br />
FLICKR_DATA=`echo $ALBUM_DATA |sed -e 's/=/ /g'| awk '{print $2}'`<br />
curl -s `echo $FLICKR_DATA`| tr ' ' '\n' | grep '_s.jpg' | sed "s/\"/\ /g" |sed -e 's/_s\.jpg/\.jpg/g'| awk '{print "[url='$FLICKR_DATA'][img]"$2"[/img][/url]\n"}'<br />
fi<br />
if [[ "$ALBUM_TYPE" == unknown ]]<br />
then<br />
UNKNOWN=`echo -e " $ALBUM_DATA"|sed -e 's/=/ /g'|awk '{print $2}'`<br />
echo "Hasta ahora solo soportamos Flickr y Picasa. Lo que Ud. introdujo $UNKNOWN no parece ser de ninguno de estos.<br />
&#42;El formato de URL para los sets de flickr es&#58;<br />
http&#58;//www.flickr.com/photos/USUARIO/sets/SET/<br />
&#42;El formato de URL para los álbum de Picasa es&#58;<br />
http&#58;//picasaweb.google.com/USUARIO/ALBUM"<br />
fi<br />
echo "&lt;/ textarea&gt;&lt;br /&gt;"<br />
echo "&lt;/ body&gt;&lt;/ html&gt;"</code></p>
<div id="crp_related"><br /><h4>Artículos relacionados:</h4><ul><li><a href="http://orvtech.com/howto/de-picasa-a-bbcode/" rel="bookmark" class="crp_title">De Picasa a BBCode:</a><span class="crp_excerpt"> Este script es cumple la misma función que el anterior de Flickr pero con los ...</span></li><li><a href="http://orvtech.com/general/script-de-arranque-para-znc-bouncer/" rel="bookmark" class="crp_title">Script de arranque para ZNC Bouncer.:</a><span class="crp_excerpt"> 
Hace un par de artículos publique como tener el servicio de push desde un canal ...</span></li><li><a href="http://orvtech.com/howto/script-para-monitorear-recursos-del-sistema-en-el-nslu2/" rel="bookmark" class="crp_title">Script para monitorear recursos del sistema en el NSLU2:</a><span class="crp_excerpt"> Este script muestra la utilización de recursos en el NSLU2 siempre y cuando este corriendo ...</span></li></ul><br /></div><p><a href="http://orvtech.com/howto/cgi-para-obtener-el-bbcode-de-flickr-y-picasaweb-hecha-en-bash/">CGI para obtener el BBCode de Flickr y Picasaweb hecha en BASH.</a> es un articulo de: <a href="http://orvtech.com" rel="friend">orvtech.com</a></p>
<div class="shr-publisher-421"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Forvtech.com%2Fhowto%2Fcgi-para-obtener-el-bbcode-de-flickr-y-picasaweb-hecha-en-bash%2F' data-shr_title='CGI+para+obtener+el+BBCode+de+Flickr+y+Picasaweb+hecha+en+BASH.+'></a><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Forvtech.com%2Fhowto%2Fcgi-para-obtener-el-bbcode-de-flickr-y-picasaweb-hecha-en-bash%2F' data-shr_title='CGI+para+obtener+el+BBCode+de+Flickr+y+Picasaweb+hecha+en+BASH.+'></a><a class='shareaholic-fbsend' data-shr_href='http%3A%2F%2Forvtech.com%2Fhowto%2Fcgi-para-obtener-el-bbcode-de-flickr-y-picasaweb-hecha-en-bash%2F'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://orvtech.com/howto/cgi-para-obtener-el-bbcode-de-flickr-y-picasaweb-hecha-en-bash/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Audio via bluetooth desde el nslu2</title>
		<link>http://orvtech.com/nslu2/audio_via_bluetooh_desde_el_nslu2/</link>
		<comments>http://orvtech.com/nslu2/audio_via_bluetooh_desde_el_nslu2/#comments</comments>
		<pubDate>Mon, 12 Apr 2010 20:50:35 +0000</pubDate>
		<dc:creator>orvtech</dc:creator>
				<category><![CDATA[NSLU2]]></category>
		<category><![CDATA[Bluetooth]]></category>
		<category><![CDATA[Hacks]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://orvtech.com/?p=4549</guid>
		<description><![CDATA[como usar el NSLU2 en conjunto con un adaptador USB de bluetooth como un servidor de audio.<p><a href="http://orvtech.com/nslu2/audio_via_bluetooh_desde_el_nslu2/">Audio via bluetooth desde el nslu2</a> es un articulo de: <a href="http://orvtech.com" rel="friend">orvtech.com</a></p>
]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Forvtech.com%2Fnslu2%2Faudio_via_bluetooh_desde_el_nslu2%2F' data-shr_title='Audio+via+bluetooth+desde+el+nslu2'></a><a class='shareaholic-fbsend' data-shr_href='http%3A%2F%2Forvtech.com%2Fnslu2%2Faudio_via_bluetooh_desde_el_nslu2%2F'></a><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Forvtech.com%2Fnslu2%2Faudio_via_bluetooh_desde_el_nslu2%2F' data-shr_title='Audio+via+bluetooth+desde+el+nslu2'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetTop Automatic --><p>
<a href="http://twitter.com/POTUSCamacho" rev="Autor de esta guia">@POTUSCamacho</a> tiene un articulo interesante acerca de como usar el NSLU2 en conjunto con un adaptador USB de bluetooth como un servidor de audio. POTUSCamacho explica como hacerlo usando un adaptador con audio &#8216;mono&#8217; pero aclara que debería de ser posible lograr lo mismo usando uno estéreo.
</p>
<p>
Echemosle un vistazo a esta guia.
</p>
<blockquote cite="http://potuscamacho-industries.blogspot.com/2010/04/linksys-nslu2-utilizing-bluetooth-audio.html">
<p>
Una vez que ya se tenga el firmware de Ubuntu instalado en el NSLU2, podemos hacer login y actualizar nuestros paquetes.
</p>
<p><code> sudo -i apt-get update</code> </p>
<p>
Luego instalamos los siguientes paquetes:
</p>
<p><code>sudo -i apt-get install linux-sound-base bluetooth bluez bluez-alsa bluez-btsco bluez-compat bluez-utils python python-bluez vlc</code> </p>
<p><i><br />
Nota: Yo hago bastante desarrollo en mi NSLU2 así que puede ser que falte algún paquete aquí.<br />
</i><br /> <br />
Ahora que ya tenemos los paquetes que necesitavamos instalados, crearemos el archivo .asoundrc en nuestro directorio home. Aquí un ejemplo:
</p>
<p><code>pcm.bluetooth {<br />
type bluetooth<br />
device 00:00:00:00:00:00<br />
}</code> </p>
<p>
Editamos la sección del dispositivo para poner el MAC address de nuestros audífonos bluetooth. Para conseguir esta MAC address puedes resetear el adaptador ejecutando el comando:
</p>
<p><code>hciconfig hci0 reset</code> </p>
<p>
Luego configura tus audífonos para que estén en modo &#8216;pairing&#8217; y ejecuta el siguiente comando:
</p>
<p><code>sdptool browse</code> </p>
<p>
Ahora copia el siguiente script hecho en python en un archivo que se llame pair.py
</p>
<p><code>#!/usr/bin/python</p>
<p>import gobject</p>
<p>import sys<br />
import dbus<br />
import dbus.service<br />
import dbus.mainloop.glib</p>
<p>class Rejected(dbus.DBusException):<br />
_dbus_error_name = "org.bluez.Error.Rejected"</p>
<p>class Agent(dbus.service.Object):<br />
exit_on_release = True</p>
<p>def set_exit_on_release(self, exit_on_release):<br />
self.exit_on_release = exit_on_release</p>
<p>@dbus.service.method("org.bluez.Agent",<br />
in_signature="", out_signature="")<br />
def Release(self):<br />
print "Release"<br />
if self.exit_on_release:<br />
mainloop.quit()</p>
<p>@dbus.service.method("org.bluez.Agent",<br />
in_signature="os", out_signature="")<br />
def Authorize(self, device, uuid):<br />
print "Authorize (%s, %s)" % (device, uuid)<br />
authorize = raw_input("Authorize connection (yes/no): ")<br />
if (authorize == "yes"):<br />
return<br />
raise Rejected("Connection rejected by user")</p>
<p>@dbus.service.method("org.bluez.Agent",<br />
in_signature="o", out_signature="s")<br />
def RequestPinCode(self, device):<br />
print "RequestPinCode (%s)" % (device)<br />
return raw_input("Enter PIN Code: ")</p>
<p>@dbus.service.method("org.bluez.Agent",<br />
in_signature="o", out_signature="u")<br />
def RequestPasskey(self, device):<br />
print "RequestPasskey (%s)" % (device)<br />
passkey = raw_input("Enter passkey: ")<br />
return dbus.UInt32(passkey)</p>
<p>@dbus.service.method("org.bluez.Agent",<br />
in_signature="ou", out_signature="")<br />
def DisplayPasskey(self, device, passkey):<br />
print "DisplayPasskey (%s, %d)" % (device, passkey)</p>
<p>@dbus.service.method("org.bluez.Agent",<br />
in_signature="ou", out_signature="")<br />
def RequestConfirmation(self, device, passkey):<br />
print "RequestConfirmation (%s, %d)" % (device, passkey)<br />
confirm = raw_input("Confirm passkey (yes/no): ")<br />
if (confirm == "yes"):<br />
return<br />
raise Rejected("Passkey doesn't match")</p>
<p>@dbus.service.method("org.bluez.Agent",<br />
in_signature="s", out_signature="")<br />
def ConfirmModeChange(self, mode):<br />
print "ConfirmModeChange (%s)" % (mode)</p>
<p>@dbus.service.method("org.bluez.Agent",<br />
in_signature="", out_signature="")<br />
def Cancel(self):<br />
print "Cancel"</p>
<p>def create_device_reply(device):<br />
print "New device (%s)" % (device)<br />
mainloop.quit()</p>
<p>def create_device_error(error):<br />
print "Creating device failed: %s" % (error)<br />
mainloop.quit()</p>
<p>if __name__ == '__main__':<br />
dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)</p>
<p>bus = dbus.SystemBus()<br />
manager = dbus.Interface(bus.get_object("org.bluez", "/"),<br />
"org.bluez.Manager")</p>
<p>if len(sys.argv) > 1:<br />
path = manager.FindAdapter(sys.argv[1])<br />
else:<br />
path = manager.DefaultAdapter()</p>
<p>adapter = dbus.Interface(bus.get_object("org.bluez", path),<br />
"org.bluez.Adapter")</p>
<p>path = "/test/agent"<br />
agent = Agent(bus, path)</p>
<p>mainloop = gobject.MainLoop()</p>
<p>if len(sys.argv) > 2:<br />
if len(sys.argv) > 3:<br />
device = adapter.FindDevice(sys.argv[2])<br />
adapter.RemoveDevice(device)</p>
<p>agent.set_exit_on_release(False)<br />
adapter.CreatePairedDevice(sys.argv[2], path, "DisplayYesNo",<br />
reply_handler=create_device_reply,<br />
error_handler=create_device_error)<br />
else:<br />
adapter.RegisterAgent(path, "DisplayYesNo")<br />
print "Agent registered"</p>
<p>mainloop.run()</p>
<p>#adapter.UnregisterAgent(path)<br />
#print "Agent unregistered"</code> </p>
<p>
Ahora pon tus audífonos en modo &#8216;pairing&#8217; de nuevo y ejecuta este comando:
</p>
<p><code>sudo -i python pair.py hci0 00:00:00:00:00:00</code> </p>
<p>
Una vez mas, recuerda remplazar el MAC address con el de tus audífonos.<br />
El ultimo paso involucra editar el vlcrc, para hacer esto puedes ejecutar:
</p>
<p><code>pico .vlc/vlcrc</code> </p>
<p>
Recorre el archivo y remplaza:
</p>
<p><code>alsadev=(default soundcard) </code> </p>
<p>Por:</p>
<p><code>alsadev=bluetooth</code> </p>
<p>
Si el archivo no existe, entonces créalo:
</p>
<p>
A este punto ya deberías de poder escuchar en tus audífonos. Para escuchar el audio de NASA TV (video online), puedes ejecutar:
</p>
<p><code>cvlc --aout-rate 8000 --novideo http://www.nasa.gov/55644main_NASATV_Windows.asx</code> </p>
<p>
Si todo esta bien, deberías de escuchar el audio. Cuando ejecutando estos comandos, recuerda el el sample rate debe de ser de 8000Hz ya que esto es lo que los audífonos soportan.
</p>
<p>
Para configurar otros audífonos o re-conectar los actuales, el archivo  /var/lib/bluetooth/&lt;tu MAC address&gt;/linkkeys debe de ser eliminado. Este se re-creara una vez que el dispositivo se vuelva a conectar. Si conectas otros audífonos, también debe de editar el archivo .asoundrc
</p>
</blockquote>
<p>
Para mas información, no dudes en visitar el blog de  <a href="http://potuscamacho-industries.blogspot.com/2010/04/linksys-nslu2-utilizing-bluetooth-audio.html">POTUSCamacho Industries</a>.</p>
<div id="crp_related"><br /><h4>Artículos relacionados:</h4><ul><li><a href="http://orvtech.com/howto/script-para-monitorear-recursos-del-sistema-en-el-nslu2/" rel="bookmark" class="crp_title">Script para monitorear recursos del sistema en el NSLU2:</a><span class="crp_excerpt"> Este script muestra la utilización de recursos en el NSLU2 siempre y cuando este corriendo ...</span></li><li><a href="http://orvtech.com/howto/nueva-otra-vez/" rel="bookmark" class="crp_title">Nueva otra vez:</a><span class="crp_excerpt"> Alguna vez haz querido que al iniciar el sistema Fedora o RedHat te salga de ...</span></li><li><a href="http://orvtech.com/howto/el-nslu2-como-un-puente-de-last-fm-a-twitter/" rel="bookmark" class="crp_title">El NSLU2 como un puente de last.fm a twitter.:</a><span class="crp_excerpt"> Este script nació de la necesidad (ocio?) de actualizar mi estado en twitter con la ...</span></li></ul><br /></div><p><a href="http://orvtech.com/nslu2/audio_via_bluetooh_desde_el_nslu2/">Audio via bluetooth desde el nslu2</a> es un articulo de: <a href="http://orvtech.com" rel="friend">orvtech.com</a></p>
<div class="shr-publisher-4549"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Forvtech.com%2Fnslu2%2Faudio_via_bluetooh_desde_el_nslu2%2F' data-shr_title='Audio+via+bluetooth+desde+el+nslu2'></a><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Forvtech.com%2Fnslu2%2Faudio_via_bluetooh_desde_el_nslu2%2F' data-shr_title='Audio+via+bluetooth+desde+el+nslu2'></a><a class='shareaholic-fbsend' data-shr_href='http%3A%2F%2Forvtech.com%2Fnslu2%2Faudio_via_bluetooh_desde_el_nslu2%2F'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://orvtech.com/nslu2/audio_via_bluetooh_desde_el_nslu2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://www.nasa.gov/55644main_NASATV_Windows.asx" length="0" type="video/asf" />
		</item>
		<item>
		<title>Thumbnails cuadradas en plugin galleries.sh de NanoBlogger.</title>
		<link>http://orvtech.com/howto/thumbnails-cuadradas-en-plugin-galleries-sh-de-nanoblogger/</link>
		<comments>http://orvtech.com/howto/thumbnails-cuadradas-en-plugin-galleries-sh-de-nanoblogger/#comments</comments>
		<pubDate>Tue, 30 Mar 2010 17:56:38 +0000</pubDate>
		<dc:creator>orvtech</dc:creator>
				<category><![CDATA[HowTo]]></category>
		<category><![CDATA[NSLU2]]></category>
		<category><![CDATA[NanoBlogger]]></category>
		<category><![CDATA[Scripts]]></category>

		<guid isPermaLink="false">http://orvtech.com/?p=474</guid>
		<description><![CDATA[Con leves modificaciones a el plugin galleries de NanoBlogger logre generar imágenes miniaturas cuadradas manteniendo la proporción. Modifique el plugin para generar imágenes en formato GIF que tienen menor tamaño y por lo tanto consumen menos ancho de banda que jpeg o png. La modificación...<p><a href="http://orvtech.com/howto/thumbnails-cuadradas-en-plugin-galleries-sh-de-nanoblogger/">Thumbnails cuadradas en plugin galleries.sh de NanoBlogger.</a> es un articulo de: <a href="http://orvtech.com" rel="friend">orvtech.com</a></p>
]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Forvtech.com%2Fhowto%2Fthumbnails-cuadradas-en-plugin-galleries-sh-de-nanoblogger%2F' data-shr_title='Thumbnails+cuadradas+en+plugin+galleries.sh+de+NanoBlogger.'></a><a class='shareaholic-fbsend' data-shr_href='http%3A%2F%2Forvtech.com%2Fhowto%2Fthumbnails-cuadradas-en-plugin-galleries-sh-de-nanoblogger%2F'></a><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Forvtech.com%2Fhowto%2Fthumbnails-cuadradas-en-plugin-galleries-sh-de-nanoblogger%2F' data-shr_title='Thumbnails+cuadradas+en+plugin+galleries.sh+de+NanoBlogger.'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetTop Automatic --><p>
Con leves modificaciones a el plugin galleries de NanoBlogger logre generar imágenes miniaturas cuadradas manteniendo la proporción. </p>
<p>
<div id="attachment_473" class="wp-caption aligncenter" style="width: 310px"><a href="http://orvtech.info/2010/12/sqare_thumbs.png"><img src="http://orvtech.info/2010/12/sqare_thumbs-300x170.png" alt="El script modificado del plugin de galleries para nanoblogger produce miniaturas cuadradas sin distorcionar" title="Miniaturas cuadradas" width="300" height="170" class="size-medium wp-image-473" /></a><p class="wp-caption-text">El script modificado del plugin de galleries para nanoblogger produce miniaturas cuadradas sin distorcionar</p></div><br />
</p>
<p>Modifique el plugin para generar imágenes en formato GIF que tienen menor tamaño y por lo tanto consumen menos ancho de banda que jpeg o png. La modificación para que genere *.gif lo hice por aligerar la carga de mi NSLU2 ya que esta sirviendo paginas a través  de una conexión de 1024Kbps que además comparto.
</p>
<p>
Básicamente lo que hago es determinar si la imagen es postal o panorámica para saber  como le voy a hacer el ajuste de tamaño, para esto uso el comando <i>identify</i> y filtro un poco la salida del comando, quedaría algo así:
</p>
<p><code>/usr/bin/identify `echo $GALLERY_DIR"/"$PICTURE` |\<br />
awk '{print $3}' |\<br />
sed -e 's/x/ /g'</code></p>
<p>
Luego procedo a centrar la imagen y cortarla en base al lado mas corto. de allí  simplemente se le ajusta el tamaño al deseado y continuo con el resto del plugin.</p>
<p>
Puedes descargar el plugin modificado de <a href="http://orvtech.com/gallery.tar.bz2">aquí</a>, este plugin esta optimizado para el NSLU2 corriendo Debian 2.6.18-6-ixp4xx e ImageMagick 6.2.4.</p>
<div id="crp_related"><br /><h4>Artículos relacionados:</h4><ul><li><a href="http://orvtech.com/howto/el-nslu2-como-puente-para-tener-push-de-un-servidor-irc-en-el-iphone/" rel="bookmark" class="crp_title">El NSLU2 como puente para tener PUSH de un servidor IRC en el iPhone.:</a><span class="crp_excerpt"> Tengo que reconocerlo, soy adicto a la internet y mi debilidad es el IRC, anterior ...</span></li><li><a href="http://orvtech.com/howto/exportar-shell-scripts-html/" rel="bookmark" class="crp_title">Exportar shell scripts a HTML:</a><span class="crp_excerpt"> Exportar tu shell script a HTML, con sintaxis resaltada en colores es posible con la ...</span></li><li><a href="http://orvtech.com/nslu2/ha-llegado-el-fin-del-acceso-publico-a-mi-nslu2/" rel="bookmark" class="crp_title">Ha llegado el fin del acceso publico a mi NSLU2?:</a><span class="crp_excerpt"> 
Me entere este fin de semana que el datacenter que aloja mi NSLU2 (la casa ...</span></li></ul><br /></div><p><a href="http://orvtech.com/howto/thumbnails-cuadradas-en-plugin-galleries-sh-de-nanoblogger/">Thumbnails cuadradas en plugin galleries.sh de NanoBlogger.</a> es un articulo de: <a href="http://orvtech.com" rel="friend">orvtech.com</a></p>
<div class="shr-publisher-474"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Forvtech.com%2Fhowto%2Fthumbnails-cuadradas-en-plugin-galleries-sh-de-nanoblogger%2F' data-shr_title='Thumbnails+cuadradas+en+plugin+galleries.sh+de+NanoBlogger.'></a><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Forvtech.com%2Fhowto%2Fthumbnails-cuadradas-en-plugin-galleries-sh-de-nanoblogger%2F' data-shr_title='Thumbnails+cuadradas+en+plugin+galleries.sh+de+NanoBlogger.'></a><a class='shareaholic-fbsend' data-shr_href='http%3A%2F%2Forvtech.com%2Fhowto%2Fthumbnails-cuadradas-en-plugin-galleries-sh-de-nanoblogger%2F'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://orvtech.com/howto/thumbnails-cuadradas-en-plugin-galleries-sh-de-nanoblogger/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Un CGI en BASH para mantener tu firma al dia en todos los foros en que participas.</title>
		<link>http://orvtech.com/howto/un-cgi-en-bash-para-mantener-tu-firma-al-dia-en-todos-los-foros-en-que-participas/</link>
		<comments>http://orvtech.com/howto/un-cgi-en-bash-para-mantener-tu-firma-al-dia-en-todos-los-foros-en-que-participas/#comments</comments>
		<pubDate>Tue, 23 Mar 2010 18:04:30 +0000</pubDate>
		<dc:creator>orvtech</dc:creator>
				<category><![CDATA[HowTo]]></category>
		<category><![CDATA[NSLU2]]></category>
		<category><![CDATA[BASH]]></category>
		<category><![CDATA[Hacks]]></category>
		<category><![CDATA[lighttpd]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://orvtech.com/?p=481</guid>
		<description><![CDATA[A raíz de la migración de apache a lighttpd he tenido algunos problemitas por resolver, El primero seria el redireccionamiento de /latest sin usar archivos htaccess. En esta oportunidad apuntaremos el directorio /latest y todo lo que este adentro a nuestro CGI hecho en BASH,...<p><a href="http://orvtech.com/howto/un-cgi-en-bash-para-mantener-tu-firma-al-dia-en-todos-los-foros-en-que-participas/">Un CGI en BASH para mantener tu firma al dia en todos los foros en que participas.</a> es un articulo de: <a href="http://orvtech.com" rel="friend">orvtech.com</a></p>
]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Forvtech.com%2Fhowto%2Fun-cgi-en-bash-para-mantener-tu-firma-al-dia-en-todos-los-foros-en-que-participas%2F' data-shr_title='Un+CGI+en+BASH+para+mantener+tu+firma+al+dia+en+todos+los+foros+en+que+participas.'></a><a class='shareaholic-fbsend' data-shr_href='http%3A%2F%2Forvtech.com%2Fhowto%2Fun-cgi-en-bash-para-mantener-tu-firma-al-dia-en-todos-los-foros-en-que-participas%2F'></a><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Forvtech.com%2Fhowto%2Fun-cgi-en-bash-para-mantener-tu-firma-al-dia-en-todos-los-foros-en-que-participas%2F' data-shr_title='Un+CGI+en+BASH+para+mantener+tu+firma+al+dia+en+todos+los+foros+en+que+participas.'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetTop Automatic --><p>A raíz de la <a href="http://orvtech.com/general/la-mudanza-comienza-y-no-hay-vuelta-atras">migración de apache a lighttpd</a> he tenido algunos problemitas por resolver, El primero seria el <a href="http://orvtech.com/howto/manten-tu-firma-al-dia-en-todos-los-foros-en-que-participas">redireccionamiento de /latest</a> sin usar archivos htaccess. En esta oportunidad apuntaremos el directorio /latest y todo lo que este adentro a nuestro <a href="http://es.wikipedia.org/wiki/Interfaz_de_entrada_com%C3%BAn#Enlaces_externos" title="Interfaz de entrada común ">CGI</a> hecho en BASH, con la ayuda de lighttpd redireccionaremos todas las peticiones a la entrada mas reciente de nuestro blog que esta corriendo NanoBlogger.
</p>
</p>
<p>
El script (ultimas.cgi) luce así:<br />
</p>
<p><code>#!/bin/bash<br />
DocummentRoot="/var/www/orvtech.com/htdocs"<br />
Latest=`cat $DocummentRoot/rss.xml  | grep link | grep archives | head -n1 | sed -e :a -e 's/< [^>]*>//g;/</p>
<p></code></p>
<p>
Para poder ejecutar nuestro script como un <a href="http://es.wikipedia.org/wiki/Interfaz_de_entrada_com%C3%BAn#Enlaces_externos" title="Interfaz de entrada común">CGI</a> necesitamos habilitar mod_cgi en nuestra configuración y agregar las siguientes linea a nuestro VirtualHost:<br />
<br />
<code>cgi.assign = ( ".cgi" => "/bin/bash" )<br />
url.redirect =( "^/latest/(.*)" => "http://orvtech.com/ultimas.cgi")</code><code><br />
</code></p>
<p>
La ultima linea es en caso de que ya tengamos nuestra firma así en varios foros, en mi caso lo uso mas que todo para registro en los logs y poder contabilizar desde donde me vienen mas hits, por ejemplo, pongo links como http://orvtech.com/latest/meneame luego en los logs se que todo lo que tenga &#8216;meneame&#8217; viene de meneame.net sin importar que este o no recibiendo el header de &#8216;referrer&#8217;</p>
<div id="crp_related"><br /><h4>Artículos relacionados:</h4><ul><li><a href="http://orvtech.com/howto/manten-tu-firma-al-dia-en-todos-los-foros-en-que-participas/" rel="bookmark" class="crp_title">Mantén tu firma al día en todos los foros en que participas.:</a><span class="crp_excerpt"> Como buen troll que soy me mantengo entretenido y participo en varias comunidades o foros ...</span></li><li><a href="http://orvtech.com/general/la-mudanza-comienza-y-no-hay-vuelta-atras/" rel="bookmark" class="crp_title">La mudanza comienza y no hay vuelta atrás.:</a><span class="crp_excerpt"> Hace una semana comente de la necesidad de dejar de usar IPs fijas para hostear ...</span></li><li><a href="http://orvtech.com/general/protege-tus-archivos-en-lighttpd-parte-1/" rel="bookmark" class="crp_title">Protege tus archivos en lighttpd (Parte 1).:</a><span class="crp_excerpt">  En ocasiones es necesario proteger nuestros archivos. En articulo anterior explique de como hacer ...</span></li></ul><br /></div><p><a href="http://orvtech.com/howto/un-cgi-en-bash-para-mantener-tu-firma-al-dia-en-todos-los-foros-en-que-participas/">Un CGI en BASH para mantener tu firma al dia en todos los foros en que participas.</a> es un articulo de: <a href="http://orvtech.com" rel="friend">orvtech.com</a></p>
<div class="shr-publisher-481"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Forvtech.com%2Fhowto%2Fun-cgi-en-bash-para-mantener-tu-firma-al-dia-en-todos-los-foros-en-que-participas%2F' data-shr_title='Un+CGI+en+BASH+para+mantener+tu+firma+al+dia+en+todos+los+foros+en+que+participas.'></a><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Forvtech.com%2Fhowto%2Fun-cgi-en-bash-para-mantener-tu-firma-al-dia-en-todos-los-foros-en-que-participas%2F' data-shr_title='Un+CGI+en+BASH+para+mantener+tu+firma+al+dia+en+todos+los+foros+en+que+participas.'></a><a class='shareaholic-fbsend' data-shr_href='http%3A%2F%2Forvtech.com%2Fhowto%2Fun-cgi-en-bash-para-mantener-tu-firma-al-dia-en-todos-los-foros-en-que-participas%2F'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://orvtech.com/howto/un-cgi-en-bash-para-mantener-tu-firma-al-dia-en-todos-los-foros-en-que-participas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

