<?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>Rodolfo Pilas &#187; Scripts</title>
	<atom:link href="http://www.pilas.net/category/soft-libre/scripts/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.pilas.net</link>
	<description>Rio Pilas</description>
	<lastBuildDate>Wed, 08 Feb 2012 22:42:12 +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>Google Storage</title>
		<link>http://www.pilas.net/20120102/google-storage/</link>
		<comments>http://www.pilas.net/20120102/google-storage/#comments</comments>
		<pubDate>Mon, 02 Jan 2012 22:07:03 +0000</pubDate>
		<dc:creator>rodolfo</dc:creator>
				<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Scripts]]></category>
		<category><![CDATA[Soft. Libre]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Utilidades]]></category>

		<guid isPermaLink="false">http://www.pilas.net/?p=943</guid>
		<description><![CDATA[Google Storage es el espacio compartido de nube que ofrece Google para archivos en Gmail, fotos en Picasa y Google Docs, por defecto son 1GB gratis, que no es mucho si lo comparamos con las ofertas de otros servicios como DropBox (2GB) o Box (5GB), pero que tiene una muy competitiva relación espacio/precio cuando entramos [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Google Storage" href="http://support.google.com/picasa/bin/answer.py?hl=en&amp;answer=39567" target="_blank">Google Storage</a> es el espacio compartido de nube que ofrece Google para archivos en Gmail, fotos en Picasa y Google Docs, por defecto son <strong>1GB gratis</strong>, que no es mucho si lo comparamos con las ofertas de otros servicios como <a title="DropBox" href="http://db.tt/SHqlJCZ" target="_blank">DropBox</a> (2GB) o <a title="Box" href="http://www.box.com/" target="_blank">Box</a> (5GB), pero que tiene una muy competitiva relación espacio/precio cuando entramos a <a title="Precios" href="https://accounts.google.com/b/0/PurchaseStorage" target="_blank">las opciones pagas</a>.</p>
<p>Hasta ahora soy un entusiasta usuario <a title="DropBox" href="http://db.tt/SHqlJCZ" target="_blank">DropBox</a> y lo recomiendo, pero he empezado a prestar atención a un par de opciones que han aparecido para hacer uso de ese espacio que Google nos da con cada usuario.</p>
<h2>google-docs-fs</h2>
<p><a href="http://code.google.com/p/google-docs-fs/" target="_blank">Google-docs-fs</a> es una aplicación escrita en Python que permite integrar (montar) el espacio disponible en Google Docs como parte del arbol de directorios de nuestro sistema y usarlo en forma transparente con nuestras aplicaciones, por ejemplo el <a href="http://live.gnome.org/Nautilus/Screenshots" target="_blank">Nautilus</a>.</p>
<p>Se integra mediante <a href="http://fuse.sourceforge.net/" target="_blank">FUSE</a> que viene disponible en forma estandar en la mayoría de las distrubuciones de Linux y permtite que cada usuario del sistema pueda montar y desmontar su espacio en forma independiente y privada. Además de podeer usarlo en MacOS X con <a href="http://code.google.com/p/macfuse/" target="_blank">MacFUSE</a>, lo que lo hace ideal para mi entorno de trabajo.</p>
<p>La instalación para Ubuntu es simple agregando un repositorio PPA con el comando:</p>
<blockquote><p>sudo add-apt-repository ppa:invernizzi/google-docs-fs</p></blockquote>
<p>y luego de instalado el paquete <cite>google-docs-fs</cite> y sus dependencias, ejecutar:</p>
<blockquote><p>~$ mkdir GDocs<br />
~$ gmount GDocs/ usuario@gmail.com<br />
Password:<br />
~$</p></blockquote>
<p>y para desmontar es tan fácil como escribir <cite>gumount ~/GDocs/</cite>.</p>
<h2>Insync</h2>
<p>La segunda herramienta que me ha llevado a utiliziar este espacio de Google es <a href="https://www.insynchq.com/" target="_blank">Insync</a>. Funciona al mejor estilo DropBox, es decir, genera una carpeta en tu home que estará sincronizada con el espacio en GoogleDocs.</p>
<p>Por ahora solo dispone de versiones para MacOS X (dónde lo he probado) y para Windows, pero está prometida una versión para Linux.</p>
<p>Lo que se ponga o se quite de esa carpeta, será sincronizado a la nube y luego con otras computadoras que estén vinculadas a la misma cuenta. Insync también permite administrar por la web la posibilidad de compartir documentos y carpetas (que es un servicio de GoogleDocs pero que Insync integra y maneja).</p>
<h2>Comparando</h2>
<p>Google-Docs-FS presenta archivos que están y son accedidos directamente en la nube, lo que supone un ahorro de espacio local, pero tambien una mayor lentitud en el intercambio de datos. Por su parte Insync trabaja sobre una copia local que sincroniza, en segundo plano, con el espacio en GoogleDocs.</p>
<p>Son herramientas distintas, por ejemplo, utilizaría Google-Docs-FS en computadoras donde no deseo tener una copia de todos mis archivos, pero si trabajar con ellos; por ejemplo en mi trabajo o en un servidor al que accedo remoto.</p>
<p>Ver:</p>
<ul>
<li><a href="http://www.freesoftwaremagazine.com/articles/mounting_google_documents_gnulinux_just_not_real_option" target="_blank">Mounting Google Documents in GNU/Linux is just not a (real) option</a></li>
<li><a href="http://www.tuexpertoit.com/2012/01/01/insync-sincroniza-google-docs-con-tu-pc-o-mac/" target="_blank">Insync, sincroniza Google Docs con tu PC o Mac</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.pilas.net/20120102/google-storage/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>NIS servicio para validar usuarios</title>
		<link>http://www.pilas.net/20110624/nis-servicio-para-validar-usuarios/</link>
		<comments>http://www.pilas.net/20110624/nis-servicio-para-validar-usuarios/#comments</comments>
		<pubDate>Sat, 25 Jun 2011 00:44:40 +0000</pubDate>
		<dc:creator>rodolfo</dc:creator>
				<category><![CDATA[Documentos]]></category>
		<category><![CDATA[Scripts]]></category>
		<category><![CDATA[Soft. Libre]]></category>
		<category><![CDATA[Utilidades]]></category>

		<guid isPermaLink="false">http://www.pilas.net/?p=873</guid>
		<description><![CDATA[Acabo de terminar un pequeño manual NIS servicio para validar usuarios que he publicado en WikiLibros. Posiblemente, algunos piensen que me he alejado de la cúspide tecnológica para remitirme a los principios de la informática (NIS se remonta al inicio de la década del &#8217;90), pero hay que reconocer que NIS es rápido, fácil y [...]]]></description>
			<content:encoded><![CDATA[<p>Acabo de terminar un pequeño manual <a href="http://es.wikibooks.org/wiki/NIS_servicio_para_validar_usuarios">NIS servicio para validar usuarios</a> que he publicado en <a href="http://es.wikibooks.org/">WikiLibros</a>.</p>
<p>Posiblemente, algunos piensen que me he alejado de la cúspide tecnológica para remitirme a los principios de la informática (NIS se remonta al inicio de la década del &#8217;90), pero hay que reconocer que NIS es rápido, fácil y está ahi pronto para usar.</p>
<p>Por último comentar que me he decidido a ir compartiendo mis manuales personales en WikiLibros, y obviamente, si alguien ve que merece un ajuste o corrección, pues adelante!, editar para que sea más útil para todos.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pilas.net/20110624/nis-servicio-para-validar-usuarios/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Automatizando SSH</title>
		<link>http://www.pilas.net/20100202/automatizando-ssh/</link>
		<comments>http://www.pilas.net/20100202/automatizando-ssh/#comments</comments>
		<pubDate>Tue, 02 Feb 2010 14:37:07 +0000</pubDate>
		<dc:creator>rodolfo</dc:creator>
				<category><![CDATA[Scripts]]></category>
		<category><![CDATA[administración]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[ssh]]></category>

		<guid isPermaLink="false">http://www.pilas.net/?p=727</guid>
		<description><![CDATA[Algnas veces me ha tocado escriir líneas de ssh bastante complejas, como por ejemplo: ssh -1 -p 23 -l root -i /etc/ssh/key01 -o CheckHostIP=no 192.134.27.24 que realmente terminan siendo un incordio, cuando esa conexión debe ser vuelta a realizar para repetir tareas de administración remota. Entonces, este artículo es un resúmen de algunos trucos de [...]]]></description>
			<content:encoded><![CDATA[<p>Algnas veces me ha tocado escriir líneas de ssh bastante complejas, como por ejemplo:</p>
<p><code>ssh -1 -p 23 -l root -i /etc/ssh/key01 -o CheckHostIP=no 192.134.27.24</code></p>
<p>que realmente terminan siendo un incordio, cuando esa conexión debe ser vuelta a realizar para repetir tareas de administración remota. Entonces, este artículo es un resúmen de algunos trucos de automatización que he logrado aprender hasta ahora, para hacer mi ssh más fácil y mi vida también.</p>
<h2>1. el nombre</h2>
<p>Escribir la IP 192.134.27.24 cada vez que me conecto es antidiluviano y no escala a IPv6. Así que lo ideal es disponer de un DNS bien configurado al cuál recurrir.  </p>
<p>Lamentablemente en redes internas he visto que asignan nombres a las máquinas que resultan más difíciles que la dirección IPv4 misma, por ejemplo: <code>sssd2p1r3db.sss.com</code>, que significa <code>sss</code> es el nombre de la empresa, datacenter 2, piso 1, rack 3, <code>db</code> pues es el server de base de datos.  Fantástico!  Cómo no recordarlo?  Claro, despues uno ve que terminan usando la IP.</p>
<p>Así que llamemos a nuestro servidor 192.134.27.24 <code>sssd2p1r3db</code> como <strong>&#8220;tito&#8221;</strong> (o cualquier otro nombre que me resulte fácil de recordar)</p>
<p>Para que funcione el ssh a tito debo llegar a la IP.  Y esta tarea de <em>personalización</em> de los nombres en la red la hace el archivo <code>/etc/hosts</code>.  Edito el archivo y agrego:</p>
<blockquote><p>
# Servidor sssd2p3r3db<br />
192.134.27.24  tito
</p></blockquote>
<p>A partir de ahora, todo lo que yo haga a nivel de red con el nombre &#8220;tito&#8221; va a funcionar desde <code>ssh tito</code>, <code>ping tito</code>, hasta <code>http://tito</code> en el Firefox.</p>
<h2>2. las opciones ssh</h2>
<p>Las opciones del ssh que son necesarias para esta conexión de ejemplo son: <code>-1 -p 23 -l root -i /etc/ssh/key01 -o CheckHostIP=no</code>, que no es necesario explicar su significado, pues todas estas opciones están a un man de distancia.</p>
<p>El archivo que permite automatizar todo esto para todos los usuarios es <code>/etc/ssh/ssh_config</code> y para un usuario en específico es el archivo <code>$HOME/.ssh/config</code>.  Edito el archivo y creo una entrada Host acorde a mis necesidades:</p>
<blockquote><p>
Host tito<br />
   Protocol 1<br />
   Port 23<br />
   User root<br />
   IdentityFile /etc/ssh/key01<br />
   CheckHostIP no
</p></blockquote>
<p>Y ya está!</p>
<p>Ahora puedo escribir <code>ssh tito</code> y mi conexión va a ser realizada exactamente como si escribiera toda la linea del principio. </p>
<p>Solo una aclaración:  la sentencia Host funciona por string, es decir que si escribo <code>ssh 192.134.27.24</code> no va a producir el mismo efecto de levantar los datos del ssh_config, aunque me esté conectando al mismo servidor. </p>
<h2>3. Bash completion</h2>
<p>Y por último, hacer que mi Bash permita usar tabulador para los nombres caprichozos y fáciles que he colocado a mis servidores&#8230; porque?, a ver: nadie pretende que me acuerde que el server se llama &#8220;tito&#8221;, es mucho más acordarme que empieza con &#8220;t&#8221; y sigue con &#8220;algo&#8221; <img src='http://www.pilas.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Edito <code>~/.bashrc</code> y agrego:</p>
<blockquote><p>
_completossh ()<br />
{<br />
  actual=${COMP_WORDS[COMP_CWORD]};<br />
  COMPREPLY=($(compgen -W &#8216;$(cat /etc/ssh/config | grep &#8220;^Host\b&#8221; &#8211; | sed -e &#8220;s/Host //&#8221;)&#8217; &#8212; $actual))<br />
}<br />
complete -F _completossh ssh
</p></blockquote>
<p>Y ahora puedo escribir <code>ssh t</code> + tabulador, y me completará &#8220;tito&#8221;. Y si tengo más de un servidor que comience con &#8220;t&#8221; pues dar dos veces tabulador y me muestra la lista.</p>
<h2>4. Algunos documentos para leer del tema</h2>
<ul>
<li><a href="http://www.faqs.org/docs/securing/chap15sec121.html">Securing and Optimizing Linux: RedHat Edition -A Hands on Guide, cap. 13</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.pilas.net/20100202/automatizando-ssh/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Twitteando desde la consola</title>
		<link>http://www.pilas.net/20090504/twitteando-desde-la-consola/</link>
		<comments>http://www.pilas.net/20090504/twitteando-desde-la-consola/#comments</comments>
		<pubDate>Mon, 04 May 2009 22:05:49 +0000</pubDate>
		<dc:creator>rodolfo</dc:creator>
				<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Scripts]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://www.pilas.net/?p=607</guid>
		<description><![CDATA[Hace rato que no actualizo mi Twitter, pero hoy de casualidad me topé con la forma de poder publicar en Twitter desde la consola de Linux (y también de las XO, obviamente), así que cree este simple script: #!/bin/bash # Script que permite publicar un mensaje en Twitter desde la consola Linux USUARIO=nombre-usuario-twitter #CAMBIAR!!! echo [...]]]></description>
			<content:encoded><![CDATA[<p>Hace rato que no actualizo <a href="http://twitter.com/ysidorito">mi Twitter</a>, pero hoy de casualidad me topé con la forma de poder publicar en Twitter desde la consola de Linux (y también de las XO, obviamente), así que cree este simple script:</p>
<p><span id="more-607"></span></p>
<pre lang="bash" file="tw">
 #!/bin/bash
# Script que permite publicar un mensaje en Twitter desde la consola Linux
USUARIO=nombre-usuario-twitter    #CAMBIAR!!!
echo "Ingrese mensaje para Twitter (enter para terminar)"
read MSG
LARGO=$(echo $MSG | wc -c)
echo "Largo del mensaje $LARGO caracteres"
echo -n "Ingrese clave en Twitter: "
read -s PW
echo; echo "... publicando mensaje ..."
wget --keep-session-cookies --http-user=$USUARIO --http-password=$PW \
    --post-data="status=$MSG" -O - --no-verbose \
    http://twitter.com:80/statuses/update.xml > /dev/null
if [ $? -eq 0 ]; then
        echo "Mensaje publicado."
else
        echo "ERROR al publicar el mensaje."
fi
exit 0
</pre>
<p>que permite publicar fácilmente micro-artículos.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pilas.net/20090504/twitteando-desde-la-consola/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Correo POP3+SSL por telnet</title>
		<link>http://www.pilas.net/20081127/correo-pop3ssl-por-telnet/</link>
		<comments>http://www.pilas.net/20081127/correo-pop3ssl-por-telnet/#comments</comments>
		<pubDate>Thu, 27 Nov 2008 13:58:05 +0000</pubDate>
		<dc:creator>rodolfo</dc:creator>
				<category><![CDATA[Scripts]]></category>
		<category><![CDATA[Utilidades]]></category>
		<category><![CDATA[correo]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[pop]]></category>
		<category><![CDATA[telnet]]></category>

		<guid isPermaLink="false">http://www.pilas.net/?p=561</guid>
		<description><![CDATA[Siguiendo con el reciente artículo sobre Correo POP3 por telnet, debo tener en cuenta que mis servidores suelen tener el correo con SSL, para lograr la capa de validación y cifrado para la trasmisión de los datos, por este motivo, el telnet no sirve para hacer conexiones. Entonces cuando el servidor POP3 tiene SSL (sPOP3) [...]]]></description>
			<content:encoded><![CDATA[<p>Siguiendo con el reciente artículo sobre <a href="http://www.pilas.net/20081104/correo-pop3-por-telnet/">Correo POP3 por telnet</a>, debo tener en cuenta que mis servidores suelen tener el correo con <a href="http://es.wikipedia.org/wiki/Transport_Layer_Security">SSL</a>, para lograr la capa de validación y cifrado para la trasmisión de los datos, por este motivo, el telnet no sirve para hacer conexiones.</p>
<p>Entonces cuando el servidor POP3 tiene <a href="http://es.wikipedia.org/wiki/Transport_Layer_Security">SSL</a>  (sPOP3) la solución es usar <a href="http://es.wikipedia.org/wiki/OpenSSL">openssl</a>, asi: </p>
<blockquote><p>$ openssl s_client -connect servidor.correo.com:995<br />
CONNECTED(00000005)<br />
-> Aqui se muestra la validación y<br />
-> el contenido del certificado digital<br />
-> &#8230; en varios renglones<br />
-><br />
+OK POP3 Ready
</p></blockquote>
<p>A partir de aquí, funcionan perfectamente todos los comandos de <a href="http://es.wikipedia.org/wiki/POP3">POP3</a>, indicados en <a href="http://www.pilas.net/20081104/correo-pop3-por-telnet/">el artículo anterior</a>, exactamente como si estuvieramos por telnet normal.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pilas.net/20081127/correo-pop3ssl-por-telnet/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Correo POP3 por telnet</title>
		<link>http://www.pilas.net/20081104/correo-pop3-por-telnet/</link>
		<comments>http://www.pilas.net/20081104/correo-pop3-por-telnet/#comments</comments>
		<pubDate>Tue, 04 Nov 2008 15:44:08 +0000</pubDate>
		<dc:creator>rodolfo</dc:creator>
				<category><![CDATA[Scripts]]></category>
		<category><![CDATA[Utilidades]]></category>
		<category><![CDATA[correo]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[pop]]></category>
		<category><![CDATA[telnet]]></category>

		<guid isPermaLink="false">http://www.pilas.net/?p=558</guid>
		<description><![CDATA[Esto no es nada nuevo ni &#8220;rocket science&#8220;, solo es un apunte personal, ya que esto lo requiero de vez en cuando y al final termino buscando entre documentos y documentos hasta que veo lo que quiero. Es simplemente cómo hacer telnet al servidor de correo (POP3) y ver los mensajes. Iniciar sesión en el [...]]]></description>
			<content:encoded><![CDATA[<p>Esto no es nada nuevo ni &#8220;<a href="http://en.wikipedia.org/wiki/Rocket_science">rocket science</a>&#8220;, solo es un apunte personal, ya que esto lo requiero de vez en cuando y al final termino buscando entre documentos y documentos hasta que veo lo que quiero.</p>
<p>Es simplemente cómo hacer telnet al servidor de correo (POP3) y ver los mensajes.</p>
<h2>Iniciar sesión en el servidor</h2>
<blockquote><p>$ telnet servidor.correo.com 110</p></blockquote>
<p>Cuando conecte con el servidor, aparece como lo siguiente: </p>
<blockquote><p>+OK POP3 Ready</p></blockquote>
<p>El protocolo POP3 es muy sencillo. Cuando hacemos algo bien el servidor nos contesta con &#8220;+OK&#8221; y cuando lo hacemos mal nos devuelve un &#8220;-ERR&#8221;. En ambos casos se añadirá un texto descriptivo.</p>
<p>Ahora el servidor espera nuestra validación:</p>
<blockquote><p>USER usuario@correo.com</p></blockquote>
<p>El servidor le responderá con el mensaje de OK:</p>
<blockquote><p>+OK USER</p></blockquote>
<p>Significa que ha aceptado el nombre de usuario y que esta esperando por su contraseña. Escriba:</p>
<blockquote><p>PASS contraseña</p></blockquote>
<p>empleando la contraseña de su buzón de correo. Si todo ha ido bien el servidor nos responde con lo siguiente</p>
<blockquote><p>+OK Logged in.</p></blockquote>
<h2>Comandos al servidor</h2>
<p>Una vez conectados disponemos de varios comandos que podemos utilizar:</p>
<p><strong>STAT</strong> (status) solicita el estado de tu buzón de correos. El servidor responderá informando de cuantos mensajes hay a la espera, en el siguiente formato: +OK mm bb, donde mm es el numero de mensajes, y bb el numero de bytes del total.</p>
<p><strong>LIST</strong> te lista todos los mensajes.  El primer número es el identificador del mensaje (que se requiere para otros comandos y el segundo número es el tamaño.</p>
<blockquote><p>
LIST<br />
+OK 2 messages (320 octets)<br />
1 120<br />
2 200<br />
.</p>
<p>LIST 2<br />
+OK 2 200</p>
<p>LIST 3<br />
-ERR no such message, only 2 messages in maildrop
</p></blockquote>
<p><strong>TOP nn nl</strong> para ver las cabeceras y primeras lineas del mensaje (nn sería el numero del mensaje que quieras ver, nl el numero de lineas de la cabecera, p ej: TOP 1 ALL)</p>
<p><strong>RETR #</strong> para ver un mensaje, debe especificarse su numero identificados del mensaje.</p>
<blockquote><p>+OK XXXX octets follow.<br />
Cabecera del mensaje<br />
Cuerpo del mensaje<br />
.
</p></blockquote>
<p>Donde XXXX es el tamaño del mensaje en bytes. Seguido de esta linea se mostrará la cabecera del mensaje y el cuerpo del mismo. Si el mensaje está codificado en HTML o tiene datos adjuntos es más que probable que entienda poco del mismo.</p>
<p><strong>DELE #</strong> borra el mensaje elegido. El borrado no es al enviar el comando, sino al terminar la sesión (se debe desconectar con <strong>QUIT</strong> o los mensajes no serán borrados)</p>
<p><strong>RSET</strong> recupera los mensajes marcados para borrado</p>
<p><strong>NOOP</strong> (No Operation) instruye al servidor para que no ejecute ninguna acción, salvo responder con un mensaje de confirmación (+OK).</p>
<p><strong>UIDL</strong> (Unique Identifier List) sirve para asignar un identificador unico a todos los mensajes o a uno especifico.</p>
<p><strong>APOP</strong> (Authenticate Post Office Protocol) Este comando puede ser usado como sustituto del binomio USER &#8211; PASS para identificar y validar un usuario. Su utilidad es evitar que el password del usuario viaje por la red de forma no encriptada. La sintaxis es: APOP (nombre) (codigo).</p>
<h2>Desconectar y cerrar sesión</h2>
<p>Para desconectar correctamente del servidor escriba:</p>
<blockquote><p>QUIT</p></blockquote>
<p>El servidor nos responde con:</p>
<blockquote><p>+OK Logging out.</p></blockquote>
<p>Y se cierra el telnet: <em>Connection closed by foreign host.</em></p>
<h2>Fuentes:</h2>
<ul>
<li><a href="http://www.helpy.com.ar/telnet/comprobar-correo-pop.htm">Verificar correo POP con Telnet</a></li>
<li><a href="http://www.ignside.net/man/telnet/sesion.php">Una sesion de correo con telnet</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.pilas.net/20081104/correo-pop3-por-telnet/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Colores para el prompt</title>
		<link>http://www.pilas.net/20071216/colores-para-el-prompt/</link>
		<comments>http://www.pilas.net/20071216/colores-para-el-prompt/#comments</comments>
		<pubDate>Sun, 16 Dec 2007 16:14:58 +0000</pubDate>
		<dc:creator>rodolfo</dc:creator>
				<category><![CDATA[Scripts]]></category>
		<category><![CDATA[Soft. Libre]]></category>

		<guid isPermaLink="false">http://www.pilas.net/20071216/colores-para-el-prompt/</guid>
		<description><![CDATA[Hace tiempo que mi CLI tiene colores y la mayoría de las configuraciones están descriptas en Colores para el CLI, pero el otro día estaba configurando mi consola bash en MacOS X y me puse a buscar sobre una guía de colores y encontré esta buena idea: # ANSI color codes RS="\[\033[0m\]" # reset HC="\[\033[1m\]" [...]]]></description>
			<content:encoded><![CDATA[<p>Hace tiempo que mi CLI tiene colores y la mayoría de las configuraciones están descriptas en <a href="http://www.pilas.net/20060706/colores-para-el-cli/">Colores para el CLI</a>, pero el otro día estaba configurando mi consola bash en MacOS X y me puse a buscar sobre una guía de colores y encontré esta buena idea:</p>
<p><code># ANSI color codes<br />
RS="\[\033[0m\]"    # reset<br />
HC="\[\033[1m\]"    # hicolor<br />
UL="\[\033[4m\]"    # underline<br />
INV="\[\033[7m\]"   # inverse background and foreground<br />
FBLK="\[\033[30m\]" # foreground black<br />
FRED="\[\033[31m\]" # foreground red<br />
FGRN="\[\033[32m\]" # foreground green<br />
FYEL="\[\033[33m\]" # foreground yellow<br />
FBLE="\[\033[34m\]" # foreground blue<br />
FMAG="\[\033[35m\]" # foreground magenta<br />
FCYN="\[\033[36m\]" # foreground cyan<br />
FWHT="\[\033[37m\]" # foreground white<br />
BBLK="\[\033[40m\]" # background black<br />
BRED="\[\033[41m\]" # background red<br />
BGRN="\[\033[42m\]" # background green<br />
BYEL="\[\033[43m\]" # background yellow<br />
BBLE="\[\033[44m\]" # background blue<br />
BMAG="\[\033[45m\]" # background magenta<br />
BCYN="\[\033[46m\]" # background cyan<br />
BWHT="\[\033[47m\]" # background white</p>
<p>export PS1="$FYEL\h$RS:$FBLE\w $FGRN\u$RS\$ "<br />
</code></p>
<p>La ventaja de tener todas las variables dentro del propio <em>.bashrc</em> es que resulta muy simple cambiar y experimentar con otros colores, combinaciones y opciones.</p>
<p>La idea original la postea en <a href="http://ubuntuforums.org/showthread.php?t=614743">MiCovran  en Ubuntu Forums</a>.</p>
<p>El promtp del bash puede tener información bastante útil (y en algunos casos divertida):<br />
<code><br />
              \a     El carácter ASCII de campanita(07)<br />
              \d     la fecha en formato "DiaSemana Mes Fecha"<br />
                      p.ej: Tue May26<br />
              \D{formato}<br />
                      El formato de fecha de acuerdo con strftime(3)  y el<br />
                      resultdo es mostrado en el prompt.<br />
              \e     El carácter ASCII de escape (033)<br />
              \h     El hostname antes del primer '.'<br />
              \H     El Hostname<br />
              \j     El numero de tareas que está ejecutando el shell<br />
              \l     El nombre del dispositivo usado por el shell<br />
              \n     Nueva línea<br />
              \r     Retorno de Carro<br />
              \s     El nombre del shell, el $0 (a partir de la útima /)<br />
              \t     Hora actual 24-horas formato HH:MM:SS<br />
              \T     Hora actual 12-horas formato HH:MM:SS<br />
              \@     Hora actual 12-horas formato  am/pm<br />
              \A     Hora actual 24-horas formato HH:MM<br />
              \u     El nombre de usuario actual<br />
              \v     Version del bash<br />
              \V     Version del bash completa<br />
              \w     Directorio actual<br />
              \W     Nombre completo del directorio actual<br />
              \!     Numero en el hisórico del actual comando<br />
              \#     Numero de comando del actual comando<br />
              \$      Si el UID es 0, un #, de lo contrario un $<br />
              \nnn   El caracter correspondiente al número octal nnn<br />
              \\     Una retrobarra<br />
              \[     Inicio de secuencia de caracteres que no se muestran,<br />
                     se puede usar para incluir caracteres de control<br />
              \]     fin de caracteres que no se muestran<br />
</code><br />
Claro, el <em>mataburro</em> de todo esto es un simple <code>man bash</code>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pilas.net/20071216/colores-para-el-prompt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>debmirror.sh 1.5</title>
		<link>http://www.pilas.net/20060206/debmirrorsh-15/</link>
		<comments>http://www.pilas.net/20060206/debmirrorsh-15/#comments</comments>
		<pubDate>Mon, 06 Feb 2006 13:39:43 +0000</pubDate>
		<dc:creator>rodolfo</dc:creator>
				<category><![CDATA[Scripts]]></category>

		<guid isPermaLink="false">http://www.pilas.net/?p=139</guid>
		<description><![CDATA[Luego de usar por mÃ¡s de un aÃ±o el sistema de replicaciÃ³n de un repositorio Debian GNU/Linux que expliquÃ© en el artÃ­culo Tu propio repositorio de Debian acabo de hacerle una pequeÃ±a mejora al cÃ³digo: esta versiÃ³n 1.5 lo que hace ahora es, en caso que por algun motivo aborte la ejecuciÃ³n de debmirror vuelve [...]]]></description>
			<content:encoded><![CDATA[<p>Luego de usar por mÃ¡s de un aÃ±o el sistema de replicaciÃ³n de un repositorio Debian GNU/Linux que expliquÃ© en el artÃ­culo <a title="Permanent Link: Tu propio repositorio de Debian" rel="bookmark" href="http://www.pilas.net/?p=54">Tu propio repositorio de Debian</a> acabo de hacerle una pequeÃ±a mejora al cÃ³digo: esta versiÃ³n 1.5 lo que hace ahora es, en caso que por algun motivo aborte la ejecuciÃ³n de debmirror vuelve a intentar correrlo. Lo descargan al <a title="debmirror.sh 1.5" href="http://www.pilas.net/archivos/codigo/debmirror.sh">de aquÃ­: debmirror.sh-1.5</a></p>
<p>Muchas veces la actualizaciÃ³n aborta, ya sea por <em>timeout</em> o por disco lleno, etc., lo que hace ahora es reintentar un numero controlado de veces (se sugiere que no sean muchas).</p>
<p>Aprovecho a agradecer a todas las personas que me he encontrado que me han dicho <em>&#8220;yo tengo un mirror de Debian siguiento tu tutorial&#8221;</em>, es algo que me ha llenado de orgullo. Gracias.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pilas.net/20060206/debmirrorsh-15/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Tu propio repositorio de Debian</title>
		<link>http://www.pilas.net/20050117/tu-propio-mirror-de-debian/</link>
		<comments>http://www.pilas.net/20050117/tu-propio-mirror-de-debian/#comments</comments>
		<pubDate>Mon, 17 Jan 2005 03:49:35 +0000</pubDate>
		<dc:creator>rodolfo</dc:creator>
				<category><![CDATA[Scripts]]></category>

		<guid isPermaLink="false">http://www.pilas.net/?p=54</guid>
		<description><![CDATA[Hace ya tiempo que mi amigo Luis Mariño me había hablado de tener una réplica (mirror) de Debian GNU/Linux; de hecho, la Primera Fiesta Debian de Instalación fue hecha utilizando un mirror del propio Luis. Así­ que un día me puse las pilas (aunque parezca redundante ) y armé mi propio repositorio de Debian, a [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.pilas.net/archivos/debianmirror.gif" alt="debian mirror" align="left" />Hace ya tiempo que mi amigo Luis Mariño me había hablado de tener una réplica (<em>mirror</em>) de <a href="http://www.debian.org">Debian GNU/Linux</a>; de hecho, la <a href="http://uylug.linux.net.uy/tiki-read_article.php?articleId=5">Primera Fiesta Debian de Instalación</a> fue hecha utilizando un mirror del propio Luis.  Así­ que un día me puse las pilas (aunque parezca redundante <img src='http://www.pilas.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ) y armé mi propio repositorio de Debian, a partir del cual actualizo todas mis computadoras (y las computadoras de mis amigos que vienen por casa).  El esfuerzo vale la pena, pues hacer</p>
<blockquote><p><code><br />
apt-get upgrade<br />
Descargados 3621kB en 5s (716kB/s)<br />
</code><code><br />
apt-get dist-upgrade<br />
Descargados 14,4MB en 2s (6773kB/s)<br />
</code></p></blockquote>
<p>en solamente 7 segundos es fantástico.</p>
<p>Unos días atrás, ante una consulta en la <a href="http://www.espaciolibre.net/cgi-bin/listinfo/uylug-linux">lista uylug-linux</a>, Christian Huelmo <a href="http://www.espaciolibre.net/pipermail/uylug-linux/2005-January/032180.html">me sugirió documentar cómo hacer un repositorio</a>, así que aquí­ escribo una breve receta para tener un repositorio funcionando, bah, exactamente cómo hago yo para tenerlo funcionando <img src='http://www.pilas.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><strong>Version 1.5</strong><br />
<span id="more-54"></span><br />
<strong>Preparando el terreno</strong></p>
<p>Debemos tener al menos un espacio libre de 15 Gb.  Yo actualmente estoy replicando Sid y en total ocupa 12 Gb.  En mi script la variable <em>LOCATION</em> define el lugar donde estará el repositorio.</p>
<p>Tenemos que instalar los paquetes:</p>
<ul>
<li>gnupg &#8211; GNU privacy guard</li>
<li>debmirror &#8211; Debian partial mirror script, with ftp and package pool support</li>
</ul>
<p>Es necesario informar a su sistema de verificación de firmas dÃ³nde encontrar las firmas de los <em>releases</em> de Debian, para ello debe editar el archivo que esta en el <em>home</em> del usuario que mantendrÃ¡ el mirror y tener las dos líneas que se indican abajo; el archivo es el <code>~/.gnupg/gpg.conf</code>:</p>
<blockquote><p><code>keyserver-options auto-key-retrieve<br />
keyserver keyring.debian.org</code></p></blockquote>
<p><strong>Armando y manteniendo la réplica</strong></p>
<p>El siguiente es el script que utilizo para mantener mi réplica, yo lo tengo colocado en <code>/usr/local/bin/</code>, pero puede estar ubicado en el lugar de su preferencia.</p>
<p><viewcode src="debmirror.sh" link="yes" /></p>
<pre lang="bash" file="debmirror.sh">
#!/bin/sh
# Mirrorea debian
#
# Version 1.5 - 06.feb.2006
# 	* Eliminado repositorio non-US
#	* Control de sincronizacion y reintentos
# Version  1.0 - 17.ene.2005
#	* Primer version

# 0 corre en modo consola con feedback a stdout
# 1 corre en modo batch con feedback a /var/log/syslog
SILENT=0

# Cantidad de reintentos en sincronizar antes de abortar
REINTENTOS=10

DEBMIRROR=/usr/bin/debmirror

function bajo_mirror {
	if [ $SILENT -eq 1 ]; then
        	/usr/bin/logger "Inicio actualizacion mirror $DISTRO"
		PROGRESO=""
	else
		echo Distro:     $DISTRO
        	echo Section:    $SECTION
        	echo Server:     $HOST
		echo Mirror en:  $LOCATION
		PROGRESO="-p -v"
	fi
	BUCLES=1
	run_debmirror
	if [ $SILENT -eq 1 ]; then
		/usr/bin/logger "Final actualizacion mirror $DISTRO"
	else
		echo "========================================================================================"
	fi
}

function run_debmirror {
	if [ $BUCLES -gt $REINTENTOS ]; then return; fi
	# TEST="--dry-run"
	$DEBMIRROR $TEST $PROGRESO -h $HOST -d $DISTRO $REPOSIT --nosource -s $SECTION $LOCATION
	if [ $? -ne 0 ]; then
		if [ $SILENT -eq 1 ]; then
			/usr/bin/logger "Error al sincronizar repositorio, intento $BUCLES"
		else
			echo "Error al sincronizar repositorio, intento $BUCLES"
		fi
		BUCLES=$(($BUCLES+1))
		run_debmirror
	fi
}

#DISTRO=sid,sarge
DISTRO=sid
SECTION=main,contrib,non-free,main/debian-installer
LOCATION=/mirror/debmirror
HOST=ftp.us.debian.org
bajo_mirror

# Para hacer una replica de otro repositorio, agregar bloques como el siguiente
#
#DISTRO=sid/non-US
#SECTION=main,contrib,non-free
#LOCATION=/mirror/debmirror_non-US
#HOST=non-us.debian.org
#REPOSIT="-r /debian-non-US"
# bajo_mirror

exit 0
</pre>
<p>Al ejecutar el script, <em>debmirror</em> se encargaró de crear todos los directiorios que sean necesarios, por lo que no precisa tener ninguna estructura pre-creada.</p>
<p>Recuerde que estamos hablando de descargar de Internet aproximadamente 12 Gb de archivos, por lo que puede ser una tarea que insuma varios dias o semanas, dependiendo de su conexión.  Si su conexión se corta o la transferencia aborta, simplemente re-inicie el script.   (una buena solución es un amigo que le provea de una primera copia del repositorio&#8230;. Gracias Luis!)</p>
<p>Al finalizar la réplica, posiblemente algunos paquetes que bajaron hace algunos días han sido cambiados por nuevos, vuelva a correr el script las veces que sean necesarias hasta estar <ins datetime="2005-01-17T01:35:0902:00">completamente seguro</ins> que ya no hay paquetes nuevos para bajar a su repositorio local.</p>
<p>Luego que tenga todo replicado, debemos mantener todo día; para esto yo tengo en el crontab de root la siguiente linea:</p>
<blockquote><p><code>1  5  *  *  *  /usr/local/bin/debmirror.sh</code></p></blockquote>
<p>De todas formas, si esta solución no le satisface, puede ejecutar el script cada cierto tiempo, pero recuerde que Debian tiene un desarrollo vertiginoso y puede ser que cambien muchos paquetes en poco tiempo, lo que puede obligarle a bajar ~6 Gb de cosas nuevas si demora alguna semana en sincronizar  réplica.</p>
<p>En principio, si tomó las precauciones previas, todo debería funcionar correctamente, aunque el script tiene variables que pueden requerir ser modificadas para obtener un mejor funcionamiento o adecuación a las necesidades de cada sistema:</p>
<ul>
<li>DISTRO &#8211; Qué distribución de Debian se va a replicar</li>
<li>SECTION &#8211; Qué secciones dentro de la distribución se van a replicar</li>
<li>LOCATION &#8211; (ya comentada anteriormente) Lugar donde estará guardada la réplica en el sistema local</li>
<li>HOST &#8211; Fuente u origen desde donde se descargará la réplica</li>
<li>TEST &#8211; Permite correr correr el script en modo prueba, es decir, se muestra lo que hará, pero no se hace o modifica nada</li>
<li>SILENT &#8211; Permite correr en modo consola o desatendido, mostrando salida por consola o dejando registro en los logs</li>
</ul>
<p><strong>Disponibilizando los paquetes en su red</strong></p>
<p>Bien, asumiendo de que todo a funcionado de maravillas y que en estos momentos su ancho de banda está saturado descargando paquetes y armando su repositorio, podemos dedicarnos a otras tareas:  la primera de ellas es ofrecer o disponibilizar el repositorio al resto de las máquinas de la red y, por qué no, al mismo servidor donde está haciendo su réplica.</p>
<p>Puede hacerlo por ftp o por http. Yo lo hago por http pues ya tengo <a href="http://httpd.apache.org/">Apache</a> instalado y funcionando.  En otras palabras, lo primero que deberá tener es Apache funcionando y que las máquinas de su red puedan acceder con <a href="http://www.mozilla.org/products/firefox/">Firefox</a> (como? hay alguien que navega con otro software&#8230;??) al servidor done está su repositorio.   Pero, cómo hacer ésto, es tema de <em>otro</em> documento&#8230;.</p>
<p>Lo más fácil es colocar dos <a href="http://es.tldp.org/Manuales-LuCAS/LIPP2/lipp-2.0-beta-html/node256.html">enlaces simbólicos</a> dentro del <a href="http://httpd.apache.org/docs/mod/core.html#documentroot">DocumentRoot</a> de su servidor web.  Yo lo tengo así:</p>
<blockquote><p><code>/var/www/debian -&gt; /mirror/debmirror<br />
/var/www/debian-non-US -&gt; /mirror/debmirror_non-US</code></p></blockquote>
<p>Para que esto funcione deberá asegurarse que la configuración permita que Apache sirva enlaces simbólicos.  Busque la configuración de <code>Directory /var/www</code> y asegúrese de tener habilitado <a href="http://httpd.apache.org/docs/mod/core.html#options"><code>Options FollowSymLinks</code></a> (esto debería venir deshabilitado por defecto).</p>
<p>Para hacer más <em>flexible</em> la forma en que su repositorio sirve paquetes, sugiero dos enlaces simbólicos llamados <em>testing</em> y <em>unstable</em> que apunten a los directorios de los nombres reales de las distribuciones, asi:</p>
<blockquote><p><code>/mirror/debmirror/dists/testing -&gt; /mirror/debmirror/dists/sarge<br />
/mirror/debmirror/dists/unstable -&gt; /mirror/debmirror/dists/sid<br />
/mirror/debmirror_non-US/dists/testing -&gt;  /mirror/debmirror_non-US/dists/sarge<br />
/mirror/debmirror_non-US/dists/unstable -&gt; /mirror/debmirror_non-US/dists/sid</code></p></blockquote>
<p>esto permitirá que las máquinas de su red puedan acceder tanto por el nombre real de la distribución (<em>sid</em>), como por su categoría (<em>unstable</em>); se puede leer más sobre esto en <a href="http://sigt.debianitas.net/archivos/categorias/debian/sobre_repositorios_debian.xhtml"> SigT</a>.  Además, haciendo esto, dejará todo preparado para la próxima versión de Debian.</p>
<p><strong>El sources.list de sus sistemas Debian</strong></p>
<p>Bueno, ahora la configuración de cada Debian de la red&#8230;..  Ponga estos repositorios en el <code>/etc/apt/sources.list</code>:</p>
<blockquote><p><code>deb http://SU_SERVER/debian unstable main contrib non-free<br />
deb http://SU_SERVER/debian-non-US unstable/non-US main contrib non-free</code></p></blockquote>
<p>y cuando tenga ya todo el repositorio replicado disfrute del <a href="http://www.debian.org/doc/manuals/apt-howto/index.es.html"><strong>apt-get</strong></a></p>
<p><strong>Notas finales</strong></p>
<p>Este documento tiene por objetivo ser una guía rápida. Si alguno de los conceptos aquí descriptos le son ajenos busque documentación complementaria.</p>
<p>Obviamente, este documento es perfectible.  Si tiene alguna sugerencia que permita mejorar cómo yo hago mi repositorio, le agradecerí si la comparte conmigo, colocando un comentario aquí mismo o mediante el <a href="http://www.pilas.net/index.php?page_id=37">formulario de contacto</a>.  Me comprometo a publicar aquÃ­ mismo su sugerencia.</p>
<p><em>Histórico:</em></p>
<ul>
<li>Version 1.5 &#8211; 25.ago.2005 &#8211; Verificacion de firmas en gpg.conf</li>
<li>Version 1.0 &#8211; 17.ene.2005</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.pilas.net/20050117/tu-propio-mirror-de-debian/feed/</wfw:commentRss>
		<slash:comments>30</slash:comments>
		</item>
	</channel>
</rss>

