<?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>blog.interrupciones.net &#187; comandos</title>
	<atom:link href="http://blog.interrupciones.net/tag/comandos/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.interrupciones.net</link>
	<description></description>
	<lastBuildDate>Mon, 31 May 2010 08:26:44 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Montando /usr como read-only</title>
		<link>http://blog.interrupciones.net/montando-usr-como-read-only/</link>
		<comments>http://blog.interrupciones.net/montando-usr-como-read-only/#comments</comments>
		<pubDate>Tue, 30 Jun 2009 08:47:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[comandos]]></category>
		<category><![CDATA[fhs]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[mount]]></category>

		<guid isPermaLink="false">http://blog.interrupciones.net/?p=607</guid>
		<description><![CDATA[El Filesystem Hierarchy Standard es una especificación que define una pautas y requerimentos para la construcción del árbol de directorios que constituye un sistema operativo tipo-UNIX. Algunas distribuciones GNU/Linux se adhieren a este estándar y otras no, los BSD tampoco. Algunos de los puntos pueden ser bastante discutibles, pero tiene aspectos interesantes.
Al principio me sorprendió [...]]]></description>
			<content:encoded><![CDATA[<p>El <a href="http://proton.pathname.com/fhs/">Filesystem Hierarchy Standard</a> es una especificación que define una pautas y requerimentos para la construcción del árbol de directorios que constituye un sistema operativo tipo-UNIX. Algunas distribuciones GNU/Linux se adhieren a este estándar y otras no, los BSD tampoco. Algunos de los puntos pueden ser bastante discutibles, pero tiene aspectos interesantes.</p>
<p>Al principio me sorprendió que uno de los consejos fuera que el directorio /usr tendría que estar en una partición separada y montada como sólo lectura. Pero el objetivo es que /usr pueda ser compartido entre distintos servidores por red. A mi personalmente me parece más interesante pensando en aspectos de seguridad:  ¿quién es el guapo que mete un <a href="http://es.wikipedia.org/wiki/Rootkit">rootkit</a> en los ejecutables de un sistema de sólo lectura?</p>
<p>Así que decidí montar en mi sistema el directorio /usr como <em>read-only</em>. Esta es la entrada correspondiente en el fichero /etc/fstab, en mi caso la partición correspondiente a /usr es /dev/sda6.</p>
<pre>/dev/sda6    /usr    ext4    ro    0    1</pre>
<p>Pero esto supone un problema, ¿cómo actualizo el sistema sin permiso de escritura en /usr? Fácil, el sistema puede remontarse (no hace falta desmontar y volver a montar, con el riesgo que esto supondría para la estabilidad), podemos usar <em>mount</em> con el parámetro <em>remount</em> para aplicar cambios en un sistema de ficheros montado. Ejemplos:</p>
<pre># mount /dev/sda6 /usr -o remount,ro
# mount /dev/sda6 /usr -o remount,rw</pre>
<p>Lo que yo hice para facilitar las cosas fué añadir estas dos entradas de alias en /root/.bashrc</p>
<pre>alias usrro='mount /dev/sda6 /usr -o remount,ro &amp;&amp; mount | grep sda6'
alias usrrw='mount /dev/sda6 /usr -o remount,rw &amp;&amp; mount | grep sda6'</pre>
<p>Ahora puedo usar los comandos <em>usrrw</em> y <em>usrro</em> antes y después de actualizar el sistema. En estos comandos de alias, la parte que hay a partir de &amp;&amp; es puramente informativa, así podemos asegurarnos que los cambios se han aplicado correctamente.</p>
<p>Si se diera el caso de que somos unos paranoicos de la seguridad, no estaría nada mal aplicar el mismo cuento a los directorios /bin y /sbin, aunque hacer particiones expresamente para directorios que ocupan tan poco puede parecer un poco ridículo. Quizás la solución sería que estos dos directorios, donde encontramos los comandos básicos del sistema, no estuviesen montados en una partición sinó en un fichero con la opción <em>loop</em>, aunque hay que tener claro que esto es peligroso, si se corrompiera dicho fichero nos quedaríamos con un sistema inusable.</p>
<p>Se aceptan ideas.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.interrupciones.net/montando-usr-como-read-only/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Buscar archivos duplicados en nuestro sistema</title>
		<link>http://blog.interrupciones.net/buscar-archivos-duplicados-en-nuestro-sistema/</link>
		<comments>http://blog.interrupciones.net/buscar-archivos-duplicados-en-nuestro-sistema/#comments</comments>
		<pubDate>Tue, 16 Jun 2009 10:47:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Utilidades]]></category>
		<category><![CDATA[comandos]]></category>
		<category><![CDATA[howto]]></category>

		<guid isPermaLink="false">http://blog.interrupciones.net/?p=570</guid>
		<description><![CDATA[Recientemente me he encontrado con el problema de tener un desorden brutal en mis archivos, y la necesidad de encontrar cuáles tengo duplicados y en qué sitios. El problema se complica, y mucho, cuando estamos hablando de un servidor que comparte discos en red y en el que acceden más de 100 usuarios todos los [...]]]></description>
			<content:encoded><![CDATA[<p>Recientemente me he encontrado con el problema de tener un desorden brutal en mis archivos, y la necesidad de encontrar cuáles tengo duplicados y en qué sitios. El problema se complica, y mucho, cuando estamos hablando de un servidor que comparte discos en red y en el que acceden más de 100 usuarios todos los dias. El espacio usado en disco ha crecido rápidamente y tenemos sospechas de que hay cosas repetidas por todas partes&#8230; ¿cómo localizar las consecuencias del desorden colectivo?</p>
<p><strong>Solución para BSD, GNU/Linux y otros UNIX</strong></p>
<p>Descargamos la aplicación <a href="http://premium.caribe.net/~adrian2/fdupes.html">fdupes</a>, que se autodefine como <em>un programa para identificar o eliminar archivos duplicados que residen en los directorios especificados</em>. Podemos compilarlo nosotros mismos o, como siempre, descargarlo de los repositorios de software de nuestro sistema operativo. El uso es así de simple:</p>
<pre>$ fdupes &lt;directorio&gt;</pre>
<p>Este comando compara el tamaño de cada archivo, su <a href="http://es.wikipedia.org/wiki/MD5">MD5</a> y finalmente hace una comparación <em>byte</em> a <em>byte</em>. Podemos añadir el parámetro <strong>-d</strong> para que nos vaya peguntando si queremos eliminar los repetidos. También tenemos opciones para seguir los directorios <em>symlink</em> e incluso para tratar archivos con <em>hardlink</em>.</p>
<p><strong>Solución para MS Windows</strong></p>
<p>Descargamos la aplicación <a href="http://freshmeat.net/projects/findrepe">findrepe</a>, la descomprimimos en el directorio <em>Archivos de Programa</em> y luego, desde línea de comandos ejecutamos:</p>
<pre>C:\Archivos de Programa&gt; java -jar findrepe-0.5.1/FindRepe.jar --install</pre>
<p>Ahora tenemos instalado el ejecutable <em>findrepe.bat</em> en el directorio de nuestro sistema, esto es sólo un script que llama a la aplicación Java pasándole los parámetros que nosotros deseemos, por esto es importante no eliminar los archivos descomprimidos al finalizar el paso anterior.</p>
<p>Ahora ya podemos usar el programa del siguiente modo:</p>
<pre>C:\&gt; findrepe c:\&lt;directorio&gt;</pre>
<p>&#8230;y nos devolverá una lista de todos los archivos repetidos en dicho directorio. Además podemos pasarle más de un directorio o unidad como parámetros.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.interrupciones.net/buscar-archivos-duplicados-en-nuestro-sistema/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Usar cat como editor de texto</title>
		<link>http://blog.interrupciones.net/usar-cat-como-editor-de-texto/</link>
		<comments>http://blog.interrupciones.net/usar-cat-como-editor-de-texto/#comments</comments>
		<pubDate>Fri, 06 Feb 2009 12:49:16 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Utilidades]]></category>
		<category><![CDATA[cat]]></category>
		<category><![CDATA[comandos]]></category>
		<category><![CDATA[howto]]></category>

		<guid isPermaLink="false">http://blog.interrupciones.net/?p=313</guid>
		<description><![CDATA[Esto lo aprendí la primera vez que instalé LFS y me parece bastante gracioso. cat es un comando clásico de UNIX que sirve para imprimir en pantalla el contenido de un archivo, y podemos usarlo también para concatenar archivos mediante los símbolos &#62; y &#62;&#62;.
¡Pero puede usarse incluso como editor de texto! Creamos un archivo [...]]]></description>
			<content:encoded><![CDATA[<p>Esto lo aprendí la primera vez que <a href="http://blog.interrupciones.net/linux-from-scratch">instalé LFS</a> y me parece bastante gracioso. <strong>cat</strong> es un comando clásico de UNIX que sirve para imprimir en pantalla el contenido de un archivo, y podemos usarlo también para concatenar archivos mediante los símbolos <strong>&gt;</strong> y <strong>&gt;&gt;</strong>.</p>
<p>¡Pero puede usarse incluso como editor de texto! Creamos un archivo desde cero:</p>
<pre>$ cat &gt; /ruta/archivo.txt &lt;&lt; "EOF"
Escribimos el texto &lt;enter&gt;
de tantas líneas como &lt;enter&gt;
queramos, y finalmente... &lt;enter&gt;
EOF</pre>
<p>Ahora podemos comprobar si ha funcionado:</p>
<pre>$ cat /ruta/archivo.txt
Escribimos el texto
de tantas líneas como
queramos, y finalmente...</pre>
<p>Vemos que ha funcionado, hemos creado un archivo sin usar un editor de texto. Como aclaración, la palabra <em>EOF</em> significa <em>End Of File</em>, y podríamos usar cualquier otro indicador de fin de archivo, por ejemplo FIN o un punto.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.interrupciones.net/usar-cat-como-editor-de-texto/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Enviar e-mail desde la consola</title>
		<link>http://blog.interrupciones.net/enviar-e-mail-desde-la-consola/</link>
		<comments>http://blog.interrupciones.net/enviar-e-mail-desde-la-consola/#comments</comments>
		<pubDate>Mon, 02 Feb 2009 13:36:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Utilidades]]></category>
		<category><![CDATA[comandos]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[mail]]></category>

		<guid isPermaLink="false">http://blog.interrupciones.net/?p=289</guid>
		<description><![CDATA[Si queremos que nuestro sistema pueda enviar correos electrónicos, debemos asegurarnos de que sendmail o algún otro MTA (Mail Transport Agent) esté configurado. O sea que empezamos ejecutando /etc/init.d/sendmail start, o /etc/rc.d/sendmail start, o service sendmail start, o lo que se corresponda a nuestra distribución GNU/Linux o sistema UNIX que estemos usando. Ahora ya podemos [...]]]></description>
			<content:encoded><![CDATA[<p>Si queremos que nuestro sistema pueda enviar correos electrónicos, debemos asegurarnos de que sendmail o algún otro MTA (Mail Transport Agent) esté configurado. O sea que empezamos ejecutando <em>/etc/init.d/sendmail start</em>, o <em>/etc/rc.d/sendmail start</em>, o <em>service sendmail start</em>, o lo que se corresponda a nuestra distribución GNU/Linux o sistema UNIX que estemos usando. Ahora ya podemos empezar.</p>
<p>Supongamos que estamos delante de una terminal y queremos enviar un mensaje a <em>usuario@dominio.com</em>, la forma más simple es la siguiente, ejecutamos</p>
<pre>$ mail usuario@domunio.com</pre>
<p>Ahora nos sale lo siguiente:</p>
<pre>Subject: Título del mensaje &lt;enter&gt;
Empieza el texto del mensaje, y &lt;enter&gt;
sigue el texto hasta que &lt;enter&gt;
finalmente terminamos y &lt;enter&gt;
escribimos un punto &lt;enter&gt;
. &lt;enter&gt;
Cc: &lt;enter&gt;</pre>
<p>Y el mensaje ya se ha enviado a <em>usuario@dominio.com</em> con el título indicado y el mensaje que hemos escrito. Como véis podemos añadir destinatarios adicionales en el campo <em>Cc</em> (Carbon Copy).</p>
<p>Pero, ¿y si queremos mandar un correo sin tener que interactuar en tiempo de envío, por ejemplo para mandar correos desde nuestros propios scripts? Pues todo lo que hemos visto se puede hacer por parámetros:</p>
<pre>$ mail -s "Título del mensaje" usuario@dominio.com &lt; /ruta/archivodetexto.txt</pre>
<p>En el caso que hemos visto, el texto del mensaje lo recuperamos de un archivo de texto plano ASCII que se llama <em>archivodetexto.txt</em> y se encuentra en <em>/ruta/</em>, pero también podríamos incluir el propio cuerpo del correo en el comando si usamos una tubería:</p>
<pre>$ echo "contenido del mensaje" | mail -s "Título del mensaje" usuario@dominio.com usuario4@dominio.com</pre>
<p>Además vemos que podemos enviar el mensaje a distintos destinatarios. Pero ¿y si queremos enviar documentos adjuntos? El comando mail, que yo sepa, no puede hacerlo. Para ello podemos recurrir a mutt, un cliente de correo electrónico muy capaz y que posee una interface TUI (Text User Interface). Sin aprofundir en las capacidades de mutt, que son muchas, en este caso podríamos hacer lo siguiente:</p>
<pre>$ mutt -s "Título del mensaje" -a /ruta/documento.pdf usuario@dominio.com &lt; /ruta/archivodetexto.txt</pre>
<p>En este caso, el usuario que posee el correo electrónico <em>usuario@dominio.com</em> recibirá un correo titulado <em>&#8220;Título del mensaje&#8221;</em>, el texto de este correo será el contenido de <em>archivodetexto.txt</em>, y se incluirá un PDF, <em>documendo.pdf</em> como archivo adjunto.</p>
<p>Voilà.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.interrupciones.net/enviar-e-mail-desde-la-consola/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Seguimiento de un proceso con watch</title>
		<link>http://blog.interrupciones.net/seguimiento-de-un-proceso-con-watch/</link>
		<comments>http://blog.interrupciones.net/seguimiento-de-un-proceso-con-watch/#comments</comments>
		<pubDate>Mon, 05 Jan 2009 14:00:30 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Utilidades]]></category>
		<category><![CDATA[comandos]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[watch]]></category>

		<guid isPermaLink="false">http://blog.interrupciones.net/?p=251</guid>
		<description><![CDATA[Me parece increíble descubrir un comando tan útil y sencillo como watch a estas alturas. Y me pregunto seriamente: ¿cómo es posible que haya estado usando sistemas tipo UNIX durante 4 o 5 años sin conocerlo?
El comando watch ejecuta repetidamente el comando que le pasemos por parámetro, mostrando su salida en pantalla (salida estándar).
Esta mañana [...]]]></description>
			<content:encoded><![CDATA[<p>Me parece increíble descubrir un comando tan útil y sencillo como <strong>watch</strong> a estas alturas. Y me pregunto seriamente: ¿cómo es posible que haya estado usando sistemas tipo UNIX durante 4 o 5 años sin conocerlo?</p>
<p>El comando watch ejecuta repetidamente el comando que le pasemos por parámetro, mostrando su salida en pantalla (salida estándar).</p>
<p>Esta mañana he estado moviendo archivos entre servidores, hablamos de mucha información, gigas y gigas. El servidor origen se ha quedado obsoleto y con el disco lleno, el servidor destino tiene 4 discos de 300 GB. Pero al pasar información, puedes llenar un disco sin darte cuenta, por lo que yo estaba ejecutando repetidamente</p>
<pre>$ df -h</pre>
<p>o más bien [flecha arriba + intro] hasta que watch se ha crucado en mi camino. Entonces he descubiertoque escribiendo</p>
<pre>$ watch df -h</pre>
<p>se nos muestra esta información (la salida de <em>df -h</em>) por pantalla:</p>
<pre>Every 2,0s: df -h             Mon Jan  5 11:21:06 2009

S.ficheros          Tamao Usado  Disp Uso% Montado en
/dev/hda1              15G  2,8G   11G  21% /
/dev/hda3             274G  104G  156G  40% /mnt/disc1
/dev/hdb1             294G  191M  279G   1% /mnt/disc2
/dev/hdc1             294G  191M  279G   1% /mnt/disc3
/dev/hdd1             294G  191M  279G   1% /mnt/disc4
tmpfs                 379M     0  379M   0% /dev/shm</pre>
<p>Por defecto se ejecuta cada 2 segundos, pero esto puede modificarse con el parámetro -n:</p>
<pre>$ watch -n &lt;número de segundos&gt; &lt;comando a ejecutar&gt;</pre>
<p>Otro parámetro curioso es -d, que remarca visualmente las modificaciones (con negrita o color de fondo) para que el seguimiento sea mas fácil.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.interrupciones.net/seguimiento-de-un-proceso-con-watch/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Extraer parte de un archivo tar</title>
		<link>http://blog.interrupciones.net/extraer-parte-de-un-archivo-tar/</link>
		<comments>http://blog.interrupciones.net/extraer-parte-de-un-archivo-tar/#comments</comments>
		<pubDate>Fri, 05 Dec 2008 16:02:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Utilidades]]></category>
		<category><![CDATA[comandos]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[tar]]></category>

		<guid isPermaLink="false">http://blog.interrupciones.net/?p=242</guid>
		<description><![CDATA[Llevo años usando TAR (junto con Gzip o con Bzip2) para empaquetar y comprimir directorios, pero de repente empiezo a usarlo para crear copias de seguridad de forma manual y me doy cuenta de que no sé como extraer sólo parte de los archivos que he empaquetado.
No escribiré aquí como comprimir y descomprimir en *.tar.gz [...]]]></description>
			<content:encoded><![CDATA[<p>Llevo años usando <a href="http://www.openbsd.org/cgi-bin/man.cgi?query=tar">TAR</a> (junto con <a href="http://www.gnu.org/software/gzip">Gzip</a> o con <a href="http://www.bzip.org">Bzip2</a>) para empaquetar y comprimir directorios, pero de repente empiezo a usarlo para crear copias de seguridad de forma manual y me doy cuenta de que no sé como extraer sólo parte de los archivos que he empaquetado.</p>
<p>No escribiré aquí como comprimir y descomprimir en <strong>*.tar.gz</strong> o en <strong>*.tar.bz2</strong> (aunque tampoco tiene mucho secreto). Supongamos que tenemos esta estructura de directorios y archivos:</p>
<pre>directorio/
|-- subdirectorio-1
|   |-- archivo-11.txt
|   `-- archivo-12.dat
|-- subdirectorio-2
|   `-- archivo-20.ogg
`-- subdirectorio-3</pre>
<p>Hemos creado un archivo TAR que contiene este árbol, y lo hemos guardado con el nombre <em>directorio.tar</em>, Posteriormente queremos mostrar el contenido de ese archivo *.tar, lo hacemos de la siguiente forma:</p>
<pre>$ tar tvf directorio.tar
drwxr-xr-x usuario/grupo   0 2008-12-05 16:51 directorio/
drwxr-xr-x usuario/grupo   0 2008-12-05 16:51 directorio/subdirectorio-3/
drwxr-xr-x usuario/grupo   0 2008-12-05 16:52 directorio/subdirectorio-1/
-rw-r--r-- usuario/grupo   0 2008-12-05 16:51 directorio/subdirectorio-1/archivo-11.txt
-rw-r--r-- usuario/grupo   0 2008-12-05 16:51 directorio/subdirectorio-1/archivo-12.dat
drwxr-xr-x usuario/grupo   0 2008-12-05 16:52 directorio/subdirectorio-2/
-rw-r--r-- usuario/grupo   0 2008-12-05 16:52 directorio/subdirectorio-2/archivo-20.ogg</pre>
<p>Y finalmente, si lo que queremos realmente es extraer sólo uno de los subdirectorios, haremos lo siguiente:</p>
<pre>$ tar xvf directorio.tar directorio/subdirectorio-1
directorio/subdirectorio-1/
directorio/subdirectorio-1/archivo-11.txt
directorio/subdirectorio-1/archivo-12.dat</pre>
<p>En este caso hemos extraido un subdirectorio entero, pero podemos extraer archivos concretos, además podemos usar <em>wildcards</em> como * o ? en el comando.</p>
<p>¿Y que pasa con los archivos comprimidos con Gzip o con Bzip2? Pues los comandos son prácticamente los mismos, sólo tenemos que añadir la letra <strong>z</strong> en caso de *.tar.gz o la letra <strong>j</strong> en el caso de *.tar.bz2.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.interrupciones.net/extraer-parte-de-un-archivo-tar/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Diferencias entre locate, slocate, mlocate y rlocate</title>
		<link>http://blog.interrupciones.net/diferencias-entre-locate-slocate-mlocate-y-rlocate/</link>
		<comments>http://blog.interrupciones.net/diferencias-entre-locate-slocate-mlocate-y-rlocate/#comments</comments>
		<pubDate>Mon, 18 Feb 2008 23:28:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[comandos]]></category>
		<category><![CDATA[locate]]></category>

		<guid isPermaLink="false">http://interrupciones.net/diferencias-entre-locate-slocate-mlocate-y-rlocate/</guid>
		<description><![CDATA[Analizamos estos cuatro programas de GNU/Linux que sirven exactamente para lo mismo (buscar archivos en el disco) y que se usan casi de la misma forma.
Ejemplo de uso, buscamos el archivo sshd_config en todo el sistema de ficheros:
$ locate sshd_config

/etc/ssh/sshd_config

/usr/man/man5/sshd_config.5.gz
LOCATE
El comando locate se usa para buscar archivos en el disco duro. A diferencia del comando [...]]]></description>
			<content:encoded><![CDATA[<p>Analizamos estos cuatro programas de GNU/Linux que sirven exactamente para lo mismo (buscar archivos en el disco) y que se usan casi de la misma forma.</p>
<p>Ejemplo de uso, buscamos el archivo <em>sshd_config</em> en todo el sistema de ficheros:</p>
<pre>$ locate sshd_config

/etc/ssh/sshd_config

/usr/man/man5/sshd_config.5.gz</pre>
<p align="center"><strong>LOCATE</strong></p>
<p>El comando locate se usa para buscar archivos en el disco duro. A diferencia del comando find, que es increíblemente potente, locate sólo puede hacer búsquedas simples por nombre de archivo. A cambio de sus limitadas posibilidades, locate es rápido, muy rápido. El truco está en que no busca a lo largo del disco duro como hace find, sinó que busca en una base de datos propia. Esta base de datos es actualizada por el programa updatedb.</p>
<p>Cuando ejecutamos updatedb, esta base de datos se actualiza. Si hacemos cualquier cambio en los archivos (crear, borrar, mover, etc)  y después buscamos algo con locate, este va a buscar en una base de datos que no se corresponde exactamente al estado actual del disco. Es por esto que la mayoría de distribuciones de GNU/Linux ejecutan updatedb de forma automatizada (usando cron) de forma periódica, pero la búsqueda puede no ser perfecta a no ser que usemos el comando updatedb justo antes de usar el comando locate.</p>
<p>El primer problema que tiene locate es que updatedb tarda bastante en recorrer el disco duro. El segundo, mucho más grave, es que si existe una base de datos de todos los archivos del disco y esta puede ser consultada por los usuarios, estos pueden conocer el contenido de los directorios a los que no tienen acceso.</p>
<p>Los comandos locate, updatedb y find (entre otros) són parte del paquete findutils de GNU.</p>
<p align="center"><strong>SLOCATE</strong></p>
<p>Ya hemos visto los problemas de seguridad que nos encontramos al guardar una base de datos de los archivos en disco si esta puede ser libremente consultada. Slocate (o <em>Secure Locate</em>) viene a solucionar este problema. La gracia está en que cuando se ejecuta updatedb, la base de datos no guarda sólo el nombre de los archivos, sinó que añade los permisos (propietario, grupo, etc). De esta forma, slocate sólo muestra al usuario la información adecuada, la de los archivos a los que tiene acceso.</p>
<p align="center"><strong>MLOCATE</strong></p>
<p>En slocate vemos que el problema de seguridad está solucionado, ahora vamos a conocer mlocate (o <em>Merging Locate</em>) que además de implementar la misma solución (está basado en slocate), soluciona el grave problema de velocidad del comando updatedb. Lo que hace mlocate cuando ejecutamos updatedb no es crear una base de datos entera de todos nuestros archivos, sinó guardar sólo las diferencias a la base de datos original, por lo que updatedb es mucho más rápido si han habido pocos cambios.</p>
<p align="center"><strong>RLOCATE </strong></p>
<p>Aquí vamos a dejar de lado la tradicional idea de <em>ejecuto updatedb, luego busco</em>. Pero también dejamos de lado la simpleza de los programas anteriores. Rlocate consta, además, de un módulo para el kernel y de un daemon, todos bajo el mismo nombre. Estos son necesaros para que la base de datos se actualize sóla y no necesitemos usar updatedb. A medida que vamos creando/eliminando archivos en el sistema, rlocate crea bases de dafos diferenciales en tiempo real. Sólo vamos a usar updatedb para optimizar la base de datos. Parece ser la mejor solución, el único problema es el propio hecho de estar cargando un módulo y un daemon sólo para poder buscar archivos, la mayoría de la gente prefiere la simpleza de usar slocate o mlocate.</p>
<p>Una vez analizados los cuatro, está muy claro que ganan mlocate y rlocate, el uso de uno u otro dependerá de las ganas de complicarse preparando el sistema para que funcione rlocate (que tampoco hay para tanto) o si preferimos la simpleza de instalar y usar. Aunque en realidad lo normal es no molestarse mucho con el tema y usar lo que incluya nuestra distribución, que con toda probabilidad va a ser slocate o mlocate.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.interrupciones.net/diferencias-entre-locate-slocate-mlocate-y-rlocate/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Cómo unir varios documentos PDF, extraer páginas y mucho más</title>
		<link>http://blog.interrupciones.net/como-unir-varios-documentos-pdf-extraer-paginas-y-mucho-mas/</link>
		<comments>http://blog.interrupciones.net/como-unir-varios-documentos-pdf-extraer-paginas-y-mucho-mas/#comments</comments>
		<pubDate>Thu, 24 Jan 2008 14:35:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Utilidades]]></category>
		<category><![CDATA[comandos]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[pdf]]></category>

		<guid isPermaLink="false">http://interrupciones.net/como-unir-varios-documentos-pdf-extraer-paginas-y-mucho-mas/</guid>
		<description><![CDATA[Una amiga me comentaba hace unos días la necesidad de crear un documento en PDF a partir de muchos documentos PDF sueltos, tenía que entregar un trabajo en PDF y lo tenía hecho página por página. Busqué por internet y encontré una solución simple: una utilidad llamada PdfTk que es libre (GPL) y multiplataforma (funciona [...]]]></description>
			<content:encoded><![CDATA[<p>Una amiga me comentaba hace unos días la necesidad de crear un documento en PDF a partir de muchos documentos PDF sueltos, tenía que entregar un trabajo en PDF y lo tenía hecho página por página. Busqué por internet y encontré una solución simple: una utilidad llamada <a href="http://www.accesspdf.com/pdftk" target="_blank">PdfTk</a> que es libre (GPL) y multiplataforma (funciona en GNU/Linux, FreeBSD, Solaris, Mac OS X y Windows), y además nos permite hacer muchas más cosas, aquí la lista:</p>
<ul>
<li>Unir distintos PDFs en uno solo</li>
<li>Dividir un PDF para extraer sus páginas</li>
<li>Rellenar formularios PDF</li>
<li>Extraer los metadatos</li>
<li>Extraer los archivos adjuntos de un documento PDF</li>
<li>Reparar PDFs corruptos cuando es posible</li>
<li>Cifrar/descifrar documentos mediante contraseña</li>
<li>Aplicar una marca de agua al fondo del documento</li>
<li>etc</li>
</ul>
<p>Este programa funciona en línea de comandos (<a href="http://www.paehl.de/pdf/?GUI_for_PDFTK:Screenshot_PDFTK_Linux" target="_blank">hay una GUI</a> que no es oficial y que yo no he probado). Lo que viene a continuación son algunos ejemplos prácticos de las opciones que yo he probado, que són las más básicas, lo demás lo probaré el dia que lo necesite:</p>
<p>Unir distontos documentos PDF en un documento PDF final:</p>
<pre>$ pdftk doc1.pdf doc2.pdf doc3.pdf cat output doc-unido.pdf</pre>
<p>También podríamos usar comodines (*, ?, [a-z], etc), este es el ejemplo más sencillo:</p>
<pre>$ pdftk doc?.pdf cat output doc-unido.pdf</pre>
<p>Incluso podemos usar variables, esto es tremendamente útil si lo usamos en scripts o si el comando se vuelve realmente largo. Además nos permite seleccionar páginas concretas de cada documento. En el siguiente ejemplo crearemos un documento combinado que contendrá las 3 primeras páginas de doc1.pdf, las 2 primeras de doc2.pdf y la cuarta de doc3.pdf:</p>
<pre>$ pdftk  A=doc1.pdf B=doc2.pdf C=doc3.pdf cat A1-3 B1-2 C4 output doc-combinado.pdf</pre>
<p>Podemos usar este sistema para invertir las páginas de un documento, en este caso supondremos que doc1.pdf tiene 5 páginas:</p>
<pre>$ pdftk A=doc1.pdf cat A5-1 output doc1-inverso.pdf</pre>
<p>Incluso podemos extraer por separado todas las páginas de un PDF. Este comando crea archivos con nombres pg_01.pdf, pg_02.pdf, etc&#8230; y otro archivo llamado doc_data.txt con los metadatos del PDF en nuestro directorio actual.</p>
<pre>$ pdftk doc1.pdf burst</pre>
<p>Si sólo queremos extraer los metadatos del documento, como por ejemplo el programa que se usó para crear el PDF, la fecha de creación, autor, número de páginas, etc podemos usar el parámetro dump_data:</p>
<pre>$ pdftk doc1.pdf dump_data output metadatos.txt</pre>
<p>Esto sólo es el principio, no olvidéis consultar la página man para más información, podéis <a href="http://www.accesspdf.com/article.php/20041129165718588" target="_blank">ojearla online</a>. Espero que os haya sido de utilidad.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.interrupciones.net/como-unir-varios-documentos-pdf-extraer-paginas-y-mucho-mas/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Transferencia encriptada de archivos mediante SCP</title>
		<link>http://blog.interrupciones.net/transferencia-encriptada-de-archivos-mediante-scp/</link>
		<comments>http://blog.interrupciones.net/transferencia-encriptada-de-archivos-mediante-scp/#comments</comments>
		<pubDate>Thu, 27 Dec 2007 10:02:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Utilidades]]></category>
		<category><![CDATA[comandos]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[scp]]></category>
		<category><![CDATA[seguridad]]></category>

		<guid isPermaLink="false">http://interrupciones.net/transferencia-encriptada-de-archivos-mediante-scp/</guid>
		<description><![CDATA[SCP (Secure Copy) es un programa que viene con la mayoría de instalaciones de SSH y que nos permite transferir archivos entre 2 máquinas de forma encriptada. Su uso es muy simple, pero hay que tener en cuenta que nuestro host debe tener el cliente SSH instalado y el host remoto debe tener el servidor [...]]]></description>
			<content:encoded><![CDATA[<p>SCP (Secure Copy) es un programa que viene con la mayoría de instalaciones de SSH y que nos permite transferir archivos entre 2 máquinas de forma encriptada. Su uso es muy simple, pero hay que tener en cuenta que nuestro host debe tener el cliente SSH instalado y el host remoto debe tener el servidor SSH habilitado.</p>
<p>Copiar un archivo de nuestro ordenador a un ordenador remoto:</p>
<pre>$  scp archivo.tgz usuario@host_remoto:/ruta/remota/</pre>
<p>Se nos pedirá la contraseña de &#8216;usurio&#8217; en &#8216;host_remoto&#8217; y se procederá a la transferencia del archivo hacia &#8216;/ruta/remota/&#8217; si es que &#8216;usuario&#8217; tiene permisos de escritura en esa ruta.</p>
<p>Copiar un archivo de un ordenador remoto a nuestro ordenador:</p>
<pre>$ scp usuario@host_remoto:/ruta/remota/archivo.tgz /ruta/local/</pre>
<p>También se nos pedirá la contraseña de &#8216;usuario&#8217; en &#8216;host_remoto&#8217; y se procederá a la transferencia del archivo hacia &#8216;/ruta/local&#8217; si es que nuestro usuario tiene permisos de escritura en esta ruta.</p>
<p>En cualquiera de los dos casos, si el puerto TCP del servidor SSH no es el 22 (por defecto siempre es el 22) tendremos que especificarlo con el parámetro -p &lt;número_de_puerto&gt;.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.interrupciones.net/transferencia-encriptada-de-archivos-mediante-scp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Guardando la salida por pantalla en un fichero con el comando tee</title>
		<link>http://blog.interrupciones.net/guardando-la-salida-por-pantalla-en-un-fichero-con-el-comando-tee/</link>
		<comments>http://blog.interrupciones.net/guardando-la-salida-por-pantalla-en-un-fichero-con-el-comando-tee/#comments</comments>
		<pubDate>Sun, 17 Jun 2007 21:13:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Utilidades]]></category>
		<category><![CDATA[comandos]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[tee]]></category>

		<guid isPermaLink="false">http://www.interrupciones.net/guardando-la-salida-por-pantalla-en-un-fichero-con-el-comando-tee/</guid>
		<description><![CDATA[A veces, administrando servidores por linea de comandos, voy a hacer una tarea que se va a demorar mucho tiempo, quizás horas. Por ejemplo, compilar todas las actualizaciones e instalarlas en *BSD, sincronizar un repositorio, etc.
Muchas veces al ejecutar comandos importantes para el sistema es necesario estar atento a la pantalla por si salen mensajes [...]]]></description>
			<content:encoded><![CDATA[<p>A veces, administrando servidores por linea de comandos, voy a hacer una tarea que se va a demorar mucho tiempo, quizás horas. Por ejemplo, compilar todas las actualizaciones e instalarlas en <a href="http://blog.interrupciones.net/category/bsd/">*BSD</a>, <a href="http://blog.interrupciones.net/como-crear-un-repositorio-de-arch-linux/">sincronizar un repositorio</a>, etc.</p>
<p>Muchas veces al ejecutar comandos importantes para el sistema es necesario estar atento a la pantalla por si salen mensajes de alerta que nos pueden ser de ayuda, pero es evidente que no podemos estar atentos al 100% con tareas de este tipo. Una solución cutre sería redireccionar el STDOUT (&gt;) a un fichero, usaremos el comando find sólo como ejemplo, por poner algo:</p>
<pre># find / -name *.conf &gt; salida</pre>
<p>En este caso, <em>salida</em> contiene toda la salida que hubiese hecho por pantalla el comando en concreto, pero&#8230; ¿y si queremos ver la salida en tiempo real, y al mismo tiempo almacenarla en un fichero? Muy facil, vamos a usar <a href="http://en.wikipedia.org/wiki/Tee_(Unix)" target="_blank">tee</a>:</p>
<pre># find / -name *.conf | tee salida</pre>
<p><strong>tee</strong> envía lo que recibe por el <a href="http://en.wikipedia.org/wiki/Pipeline_(Unix)" target="_blank">pipe</a> hacia la salida standard STDOUT (la pantalla) y al mismo tiempo lo envia al fichero que le pasemos por parámetro&#8230; ¡voilà! Pero supongamos que no queremos escribir de cero el fichero <em>salida</em> como lo haríamos con &gt; sinó añadir esos datos al final como haríamos con &gt;&gt;. En este caso tenemos que usar el parámetro <strong>-a</strong> (append):</p>
<pre># find / -name *.conf | tee -a salida</pre>
<p>Hasta aquí esta mini-explicación de un comando muy útil pero muchas veces desconocido, olvidado o simplemente poco usado.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.interrupciones.net/guardando-la-salida-por-pantalla-en-un-fichero-con-el-comando-tee/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
