<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2288057976592669667</id><updated>2012-01-10T11:45:49.873+01:00</updated><category term='gnuplot'/><category term='shell script'/><category term='Ubuntu'/><category term='postgresql'/><category term='python'/><category term='seguridad'/><title type='text'>Administración de sistemas Linux</title><subtitle type='html'>Blog sobre la administración de sistemas Linux. Comandos bash, scripts python... Curiosidades y utilidades para hacer más fácil la labor de un administrador de sistemas.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://administracion-linux.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://administracion-linux.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Juan Antonio Izquierdo Gómez</name><uri>https://profiles.google.com/100010759467986112292</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-QheVbom_7Uo/AAAAAAAAAAI/AAAAAAAAAag/Ko044HYFPRs/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>37</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2288057976592669667.post-4697505853466457197</id><published>2011-10-18T10:00:00.000+02:00</published><updated>2011-10-18T10:00:07.359+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='shell script'/><title type='text'>Espacio de uso de directorios</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Más de una vez un equipo o servidor se ha quedado con poco espacio libre en una partición, o incluso se ha agotado. Ahí comienza una labor de búsqueda de aquellos ficheros que han crecido inesperadamente o bien de los directorios con mayor peso para revisarlos y ver si se puede borrar algo.&lt;br /&gt;&lt;div&gt;Si bien seguro existen aplicaciones que revisan el sistema de ficheros en busca de este tipo de información, no me gusta instalar software extra en servidores si con las herramientas ya existentes se puede obtener el mismo resultado.&lt;/div&gt;&lt;div&gt;El siguiente comando nos dirá la ocupación de cada uno de los subdirectorios que tenemos en nuestra ruta actual:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="background-color: transparent;"&gt;&lt;span id="internal-source-marker_0.36051789694465697" style="background-color: white; color: black; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;for i in $(find . -maxdepth 1 -type d | tr -s "\n" " "); do&amp;nbsp; echo `du $i -hs`; done&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="background-color: transparent;"&gt;&lt;span style="background-color: white; color: black; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: transparent;"&gt;&lt;span style="background-color: white; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;873M .60K ./include214M ./lib4,8M ./sbin35M ./bin393M ./share4,0K ./games136M ./local92M ./src&lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: white; color: black; font-family: 'Courier New'; font-size: 10pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="background-color: white; color: black; font-family: 'Courier New'; font-size: 10pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;El resultado del comando ejecutado en /usr nos dice que este directorio ocupa, contando con sus subdirectorios y ficheros), 873 MB. Que el subdirectorio local (/usr/local) ocupa 136 MB, etc. Si vemos un subdirectorio con un uso de disco exagerado podremos acceder a él y volver a ejecutar el comando, para ir descubriendo dónde están esos ficheros de gran tamaño.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2288057976592669667-4697505853466457197?l=administracion-linux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://administracion-linux.blogspot.com/feeds/4697505853466457197/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://administracion-linux.blogspot.com/2011/10/espacio-de-uso-de-directorios.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/4697505853466457197'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/4697505853466457197'/><link rel='alternate' type='text/html' href='http://administracion-linux.blogspot.com/2011/10/espacio-de-uso-de-directorios.html' title='Espacio de uso de directorios'/><author><name>Juan Antonio Izquierdo Gómez</name><uri>https://profiles.google.com/100010759467986112292</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-QheVbom_7Uo/AAAAAAAAAAI/AAAAAAAAAag/Ko044HYFPRs/s512-c/photo.jpg'/></author><thr:total>0</thr:total><georss:featurename>Murcia, España</georss:featurename><georss:point>37.9834449 -1.1298897</georss:point><georss:box>37.5829639 -1.7616037000000002 38.3839259 -0.4981757000000001</georss:box></entry><entry><id>tag:blogger.com,1999:blog-2288057976592669667.post-8624065520774059765</id><published>2011-01-21T15:53:00.000+01:00</published><updated>2011-01-21T15:53:35.412+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='seguridad'/><category scheme='http://www.blogger.com/atom/ns#' term='shell script'/><title type='text'>Crear listado de ficheros con su código md5</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;br /&gt;A continuación os muestro cómo calcular el código md5 de cada uno de los ficheros contenidos en un directorio (en este caso el directorio actual, .) y generar un fichero, llamado md5, con los nombres de los ficheros junto con su ćodigo md5:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Listado md5 con todos los ficheros excepto los ocultos&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;$ find . * ! -path "./*" ! -path "md5" ! -type d -exec md5sum '{}'&amp;gt;&amp;gt;md5 \;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Listado md5 con todos los ficheros incluídos los ocultos&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;$ find . * ! -path "./[^.]*" &amp;nbsp;! -path "md5" ! -type d -exec md5sum '{}'&amp;gt;&amp;gt;md5 \;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Estos listados son muy útiles para distintos casos:&lt;br /&gt;&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;Junto con algunos ficheros colgados en Internet se nos ofrece su código md5. Al bajarlo podemos generar el código md5 de nuestra copia para saber si es idéntica o sufrió algún error en la descarga.&lt;/li&gt;&lt;li&gt;Podemos generar ficheros md5 de ciertos ficheros importantes de nuestras máquinas (fichero /etc/passwd, /etc/rc.local, etc) y comprobar de vez en cuando si dichos ficheros han sufrido algún cambio. Es una buena manera de detectar modificaciones no autorizadas en nuestros sistemas.&lt;/li&gt;&lt;li&gt;Se puede implementar un proceso de actualización para nuestras aplicaciones, tal que ante una nueva versión los clientes solo descarguen del servidor aquellos ficheros que cambiaron. Si un cliente genera el código md5 de sus ficheros y los comprueba contra los ficheros del servidor, sabrá qué ficheros descargarse. Esto disminuye el tiempo de actualización y el uso del ancho de banda de nuestras lineas de comunicaciones.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2288057976592669667-8624065520774059765?l=administracion-linux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://administracion-linux.blogspot.com/feeds/8624065520774059765/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://administracion-linux.blogspot.com/2011/01/crear-listado-de-ficheros-con-su-codigo.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/8624065520774059765'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/8624065520774059765'/><link rel='alternate' type='text/html' href='http://administracion-linux.blogspot.com/2011/01/crear-listado-de-ficheros-con-su-codigo.html' title='Crear listado de ficheros con su código md5'/><author><name>Juan Antonio Izquierdo Gómez</name><uri>https://profiles.google.com/100010759467986112292</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-QheVbom_7Uo/AAAAAAAAAAI/AAAAAAAAAag/Ko044HYFPRs/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2288057976592669667.post-946113139467901602</id><published>2011-01-11T18:51:00.000+01:00</published><updated>2011-01-11T18:51:21.144+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='shell script'/><title type='text'>Backup remoto con autolimitación de ancho de banda</title><content type='html'>He visto &lt;a href="http://diariolinux.com/2011/01/09/backup-remoto-con-autolimitacion-de-ancho-de-banda/"&gt;esta entrada&lt;/a&gt; en el blog&amp;nbsp;&lt;a href="http://diariolinux.com/"&gt;DiarioLinux.com&lt;/a&gt;&amp;nbsp;que me ha parecido muy interesante. Explica cómo realizar un backup de un directorio limitando el ancho de banda (para no ahogar nuestra conexión a Internet).&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Para disponer del comando &lt;i&gt;cstream&lt;/i&gt; en Ubuntu 10.10, tendremos que instalar el paquete con el mismo nombre:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;#&amp;nbsp;aptitude install cstream&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2288057976592669667-946113139467901602?l=administracion-linux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://administracion-linux.blogspot.com/feeds/946113139467901602/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://administracion-linux.blogspot.com/2011/01/backup-remoto-con-autolimitacion-de.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/946113139467901602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/946113139467901602'/><link rel='alternate' type='text/html' href='http://administracion-linux.blogspot.com/2011/01/backup-remoto-con-autolimitacion-de.html' title='Backup remoto con autolimitación de ancho de banda'/><author><name>Juan Antonio Izquierdo Gómez</name><uri>https://profiles.google.com/100010759467986112292</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-QheVbom_7Uo/AAAAAAAAAAI/AAAAAAAAAag/Ko044HYFPRs/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2288057976592669667.post-5023766137591988232</id><published>2011-01-10T19:10:00.000+01:00</published><updated>2011-01-10T19:10:09.313+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='shell script'/><title type='text'>Añadir usuarios a grupos</title><content type='html'>En ocasiones tenemos muchos usuarios y directorios con diferentes perfiles de acceso. Crear diferentes grupos es una buena práctica para decidir qué usuarios podrán leer/escribir en qué directorios.&lt;br /&gt;&lt;br /&gt;Si queremos incluir un usuario en un grupo debemos ejecutar:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;#&amp;nbsp;usermod -a -G grupo usuario&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;#&amp;nbsp;usermod -a -G grupo1, grupo2, grupo3 usuario&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;Es muy importante el parámetro &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;-a&lt;/span&gt;, pues si no el usuario será eliminado de los grupos que no se especifiquen en este comando.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2288057976592669667-5023766137591988232?l=administracion-linux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://administracion-linux.blogspot.com/feeds/5023766137591988232/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://administracion-linux.blogspot.com/2011/01/anadir-usuarios-grupos.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/5023766137591988232'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/5023766137591988232'/><link rel='alternate' type='text/html' href='http://administracion-linux.blogspot.com/2011/01/anadir-usuarios-grupos.html' title='Añadir usuarios a grupos'/><author><name>Juan Antonio Izquierdo Gómez</name><uri>https://profiles.google.com/100010759467986112292</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-QheVbom_7Uo/AAAAAAAAAAI/AAAAAAAAAag/Ko044HYFPRs/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2288057976592669667.post-7007103155970781004</id><published>2010-12-27T15:00:00.000+01:00</published><updated>2010-12-27T15:00:02.887+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='seguridad'/><category scheme='http://www.blogger.com/atom/ns#' term='shell script'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Crear contraseñas aleatorias</title><content type='html'>Cuando se crean usuarios de forma masiva es interesante disponer de un mecanismo para generar contraseñas de manera aleatoria. Aunque existen aplicaciones que las generan vamos a usar herramientas existentes en cualquier distribución Linux para evitar instalar paquetes adicionales.&lt;br /&gt;&lt;br /&gt;Para generarlas con 8 dígitos alfanuméricos ejecutad:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New'; font-size: 13px;"&gt;$ tr -dc A-Za-z0-9_ &amp;lt; /dev/urandom | head -c 8&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New'; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Cambiando el número pasado al comando &lt;i&gt;head&lt;/i&gt;&amp;nbsp;se podrá variar la longitud de la contraseña.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2288057976592669667-7007103155970781004?l=administracion-linux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://administracion-linux.blogspot.com/feeds/7007103155970781004/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://administracion-linux.blogspot.com/2010/12/crear-contrasenas-aleatorias.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/7007103155970781004'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/7007103155970781004'/><link rel='alternate' type='text/html' href='http://administracion-linux.blogspot.com/2010/12/crear-contrasenas-aleatorias.html' title='Crear contraseñas aleatorias'/><author><name>Juan Antonio Izquierdo Gómez</name><uri>https://profiles.google.com/100010759467986112292</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-QheVbom_7Uo/AAAAAAAAAAI/AAAAAAAAAag/Ko044HYFPRs/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2288057976592669667.post-4690134981208726520</id><published>2009-11-19T22:10:00.001+01:00</published><updated>2009-11-19T22:10:00.725+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='shell script'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Inventariando</title><content type='html'>Ante la tarea de inventariar los equipos que tenemos así como sus características principales (fabricante, modelo, ram, cpu,...), se hace imprescindible contar con un script que capture todos estos valores y nos los presente de manera resumida.&lt;br /&gt;&lt;br /&gt;Aquí van algunos comandos para capturar información valiosa:&lt;br /&gt;&lt;br /&gt;1. Memoria RAM instalada:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# echo "Memoria RAM (MB): "`free -m | grep Mem | tr -s "&amp;nbsp; " " " | cut -d " " -f 2&lt;/span&gt;`&lt;br /&gt;&lt;br /&gt;2. Unidades de almacenamiento (discos duros, memorias USB, etc):&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# echo "Discos duros:" &amp;amp;&amp;amp; fdisk -l | grep "Disco /dev/" | cut -d " " -f 3,4 | tr -d ","&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;3. Fabricante, modelo y número de serie:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# lshw | grep -e product -e vendor -e serial | head -n 3&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;4. Procesador/es:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# cat /proc/cpuinfo | grep "model name" | sed "s/model name\t/Procesador/"&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;5. Para los sistemas Ubuntu, la versión:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# cat /etc/lsb-release | grep "DESCRIPTION" | cut -d "=" -f 2 | tr -d "\""&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;En Linux existen como véis multitud de comandos para conocer cualquier información. Es cuestión de investigar un poco por nuestro sistema (y googlear) para saber cómo hacer algo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2288057976592669667-4690134981208726520?l=administracion-linux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://administracion-linux.blogspot.com/feeds/4690134981208726520/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://administracion-linux.blogspot.com/2009/11/inventariando.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/4690134981208726520'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/4690134981208726520'/><link rel='alternate' type='text/html' href='http://administracion-linux.blogspot.com/2009/11/inventariando.html' title='Inventariando'/><author><name>Juan Antonio Izquierdo Gómez</name><uri>https://profiles.google.com/100010759467986112292</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-QheVbom_7Uo/AAAAAAAAAAI/AAAAAAAAAag/Ko044HYFPRs/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2288057976592669667.post-7764844664223049271</id><published>2009-11-13T18:06:00.000+01:00</published><updated>2009-11-13T18:06:09.835+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='shell script'/><title type='text'>Problema con cron</title><content type='html'>Cuando se tienen máquinas viejas actuando como servidores, es probable que no mantengan adecuadamente la hora del sistema. Y aunque cambiar la &lt;a href="http://infotecdavid.com/Pila%20placa%20base.jpg"&gt;pila de botón de la placa base&lt;/a&gt; suele solucionar el problema, en ocasiones no es así (evidencia deterioro de hardware).&lt;br /&gt;&lt;br /&gt;Lo normal es configurar &lt;i&gt;cron&lt;/i&gt; para que ejecute el comando &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ntpdate -u servidor_hora&lt;/span&gt; cada cierto tiempo (por ejemplo una vez el día) para mantener la hora del sistema:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# crontab -e&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;[...]&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;0 0 * * * ntpdate -u ip_o_nombre_servidor_hora&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;[...]&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Pero... transcurridos unos días accedemos al servidor y vemos que la hora va mal. Para asegurarnos que el comando se ha ejecutado, chequeamos el fichero &lt;i&gt;syslog&lt;/i&gt;:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ grep ntpdate /var/log/syslog&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;[...] &lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Nov 11 00:00:01 mipc /USR/SBIN/CRON[360]: (root) CMD (ntpdate -u 192.168.1.1)&lt;br /&gt;Nov 12 00:00:01 mipc /USR/SBIN/CRON[1066]: (root) CMD (ntpdate -u 192.168.1.1)&lt;br /&gt;Nov 13 00:00:01 mipc /USR/SBIN/CRON[1697]: (root) CMD (ntpdate -u 192.168.1.1)&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;[...] &lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Entonces, ¿qué ocurre?&lt;br /&gt;&lt;br /&gt;Ocurre que &lt;i&gt;cron&lt;/i&gt; no ejecuta los comandos programados (en nuestro caso &lt;i&gt;ntpdate&lt;/i&gt;) dentro de un &lt;i&gt;bash&lt;/i&gt;, por lo que los directorios en los que busca &lt;i&gt;cron&lt;/i&gt; el comando &lt;i&gt;ntpdate&lt;/i&gt; para ejecutarlo puede que no lo contengan. &lt;i&gt;Cron&lt;/i&gt; intentó ejecutar el comando a las 00:00 todos los días (&lt;i&gt;syslog&lt;/i&gt; da fe) pero el comando no se encontró. Claro, nosotros hacemos pruebas y lo ejecutamos en nuestro shell &lt;i&gt;bash&lt;/i&gt;, con un valor apropiado en nuestra variable &lt;i&gt;$PATH&lt;/i&gt;, vemos que funciona y asumimos que tiene que funcionar con &lt;i&gt;cron&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;Una solución sencilla es indicar la ruta completa del comando &lt;i&gt;ntpdate&lt;/i&gt; en el &lt;i&gt;crontab&lt;/i&gt;:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# crontab -e&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;[...]&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;0 0 * * * /usr/sbin/ntpdate -u ip_o_nombre_servidor_hora&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;[...]&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Así funcionará sin problemas.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2288057976592669667-7764844664223049271?l=administracion-linux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://administracion-linux.blogspot.com/feeds/7764844664223049271/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://administracion-linux.blogspot.com/2009/11/problema-con-cron.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/7764844664223049271'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/7764844664223049271'/><link rel='alternate' type='text/html' href='http://administracion-linux.blogspot.com/2009/11/problema-con-cron.html' title='Problema con cron'/><author><name>Juan Antonio Izquierdo Gómez</name><uri>https://profiles.google.com/100010759467986112292</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-QheVbom_7Uo/AAAAAAAAAAI/AAAAAAAAAag/Ko044HYFPRs/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2288057976592669667.post-7838932759439819235</id><published>2009-11-11T08:00:00.001+01:00</published><updated>2009-11-11T08:00:06.696+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='shell script'/><category scheme='http://www.blogger.com/atom/ns#' term='postgresql'/><title type='text'>Ejecución de sentencias SQL desde scripts</title><content type='html'>En alguna ocasión nos puede interesar que algún script realice una consulta o inserción contra una base de datos. Os voy a indicar una sencilla forma de hacerlo, siempre y cuando uséis &lt;a href="http://www.postgresql.org/"&gt;PostgreSQL&lt;/a&gt; como &lt;a href="http://es.wikipedia.org/wiki/Sistema_de_gesti%C3%B3n_de_bases_de_datos"&gt;SGBD&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Lo primero de todo, será tener instalado el cliente de Postgresql, que para la versión 9.10 de &lt;a href="http://www.ubuntu.com/"&gt;Ubuntu&lt;/a&gt; es el siguiente paquete:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# aptitude install postgresql-client-8.3 (ó 8.4)&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Tras instalarlo, deberemos tener disponible el comando &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;psql&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Desde un script, basta con ejecutar:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ echo "INSERT INTO inventario_macs VALUES ('192.168.1.1', '00:60:08:63:f5:4f');" | psql -h 192.1681.100 -d bd_pruebas -U upruebas&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Indicar varias cosas:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;La opción &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;-h&lt;/span&gt; especifica la IP o nombre del servidor que aloja la base de datos.&lt;/li&gt;&lt;li&gt;La opción &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;/span&gt;-d&lt;/span&gt; especifica la base de datos a la que queremos conectarnos (el servidor puede alojar varias bases de datos).&lt;/li&gt;&lt;li&gt;La opción &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;-U&lt;/span&gt; especifica el usuario con que nos vamos a conectar.&lt;/li&gt;&lt;/ul&gt;Hay que tener en cuenta que la base de datos puede estar configurada para que solicite contraseña ante un acceso (autenticación activada) o no. Si no está activa esta opción, el comando anterior funcionará sin problemas. Si estuviese activa, al ejecutar el comando &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;psql&lt;/span&gt; se nos preguntará por la contraseña, por lo que no es viable para usarlo en scripts de ejecución automatizada.&lt;br /&gt;&lt;br /&gt;Para establecer entre una máquina cliente y otra servidor un vínculo de confianza con el objetivo de que no nos pidan la contraseña por cada acceso que queramos hacer (&lt;a href="http://administracion-linux.blogspot.com/2009/10/acceso-por-ssh-sin-contrasena.html"&gt;como ocurre con ssh&lt;/a&gt;), realizar los siguientes pasos en la máquina cliente:&lt;br /&gt;&lt;br /&gt;1. Crear un fichero con nombre &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;.pgpass&lt;/span&gt; en el directorio &lt;i&gt;home&lt;/i&gt; del usuario que accederá a la base de datos. Este fichero contendrá lineas con el siguiente formato: &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;hostname:puerto:base_datos:nombre_usuario:password&lt;/span&gt;. En nuestro caso:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;192.168.1.100:5432:bd_pruebas:upruebas:micarromelorobaron&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;2. Asignar los permisos adecuados al fichero:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ chmod 0600 .pgpass&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Tras ello, podremos lanzar el comando anterior pues no se volverá a preguntar el password de acceso a la base de datos.&lt;br /&gt;&lt;br /&gt;Como añadido, indicar que es muy cómodo a la hora de crear tablas redactar en nuestro propio equipo un archivo de texto con las sentencias SQL correspondientes, y luego ejecutarlas en el servidor de la forma:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ cat fichero.sql | psql -h 192.1681.100 -d bd_pruebas -U upruebas&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2288057976592669667-7838932759439819235?l=administracion-linux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://administracion-linux.blogspot.com/feeds/7838932759439819235/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://administracion-linux.blogspot.com/2009/11/ejecucion-de-sentencias-sql-desde.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/7838932759439819235'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/7838932759439819235'/><link rel='alternate' type='text/html' href='http://administracion-linux.blogspot.com/2009/11/ejecucion-de-sentencias-sql-desde.html' title='Ejecución de sentencias SQL desde scripts'/><author><name>Juan Antonio Izquierdo Gómez</name><uri>https://profiles.google.com/100010759467986112292</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-QheVbom_7Uo/AAAAAAAAAAI/AAAAAAAAAag/Ko044HYFPRs/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2288057976592669667.post-5657484857222170182</id><published>2009-11-10T08:00:00.001+01:00</published><updated>2009-11-10T08:00:01.743+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='shell script'/><title type='text'>Seguimiento de IPs para obtener su MAC</title><content type='html'>Hasta ahora hemos visto la forma de obtener la &lt;a href="http://es.wikipedia.org/wiki/Direcci%C3%B3n_MAC"&gt;MAC&lt;/a&gt; de una &lt;a href="http://es.wikipedia.org/wiki/Direcci%C3%B3n_IP"&gt;IP&lt;/a&gt;, pero claro, la &lt;a href="http://es.wikipedia.org/wiki/Direcci%C3%B3n_IP"&gt;IP&lt;/a&gt; tiene que estar en uso para poder conocer su &lt;a href="http://es.wikipedia.org/wiki/Direcci%C3%B3n_MAC"&gt;MAC&lt;/a&gt;. ¿Cómo podríamos hacer para conocer la &lt;a href="http://es.wikipedia.org/wiki/Direcci%C3%B3n_MAC"&gt;MAC&lt;/a&gt; de varias &lt;a href="http://es.wikipedia.org/wiki/Direcci%C3%B3n_IP"&gt;IPs&lt;/a&gt; que aunque no están en uso actualmente sí lo pueden estar en las próximas horas o días?&lt;br /&gt;&lt;br /&gt;Se hará lo siguiente: tendremos una lista de &lt;a href="http://es.wikipedia.org/wiki/Direcci%C3%B3n_IP"&gt;IPs&lt;/a&gt; a chequear (de las cuales no conocemos sus direcciones &lt;a href="http://es.wikipedia.org/wiki/Direcci%C3%B3n_MAC"&gt;MAC&lt;/a&gt;). Cada cierto tiempo (pongamos cada hora) se chequearán todas las &lt;a href="http://es.wikipedia.org/wiki/Direcci%C3%B3n_IP"&gt;IPs&lt;/a&gt; y las que respondan a &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ping&lt;/span&gt; (y por tanto obtengamos su &lt;a href="http://es.wikipedia.org/wiki/Direcci%C3%B3n_MAC"&gt;MAC&lt;/a&gt;) las iremos anotando en otra lista.&lt;br /&gt;&lt;br /&gt;La lista de &lt;a href="http://es.wikipedia.org/wiki/Direcci%C3%B3n_IP"&gt;IPs&lt;/a&gt; a chequear la tendremos en el fichero &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ips&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;192.168.1.2&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;192.168.1.5&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;192.168.1.100&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;192.168.1.200&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;192.168.1.240&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Realizaremos el script que chequeará cada vez que sea llamado:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;#!/bin/sh&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;IFS="&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;"&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;for IP in $(cat ips)&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;do&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; MAC=`ping -c 1 $IP &amp;gt;/dev/null 2&amp;gt;&amp;amp;1 &amp;amp;&amp;amp; arp -n | grep "$IP " | awk '{print $3}'`&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; if [ $? -eq "0" ]; then&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo $IP $MAC &amp;gt;&amp;gt; macs&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; else&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo $IP &amp;gt;&amp;gt; tmp&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; fi&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;done&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;mv tmp ips&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Y por último, configuraremos &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;cron&lt;/span&gt; para que llame al script cada hora:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ crontab -e&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;0 * * * * sh /home/juan/chequear.sh&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Indicar que, según muestra el script, en el fichero &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ips&lt;/span&gt; nos irán quedando las &lt;a href="http://es.wikipedia.org/wiki/Direcci%C3%B3n_IP"&gt;IPs&lt;/a&gt; que no han respondido a ping y en el fichero &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;macs&lt;/span&gt; las &lt;a href="http://es.wikipedia.org/wiki/Direcci%C3%B3n_IP"&gt;IPs&lt;/a&gt; junto a sus &lt;a href="http://es.wikipedia.org/wiki/Direcci%C3%B3n_MAC"&gt;MAC&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2288057976592669667-5657484857222170182?l=administracion-linux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://administracion-linux.blogspot.com/feeds/5657484857222170182/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://administracion-linux.blogspot.com/2009/11/seguimiento-de-ips-para-obtener-su-mac.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/5657484857222170182'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/5657484857222170182'/><link rel='alternate' type='text/html' href='http://administracion-linux.blogspot.com/2009/11/seguimiento-de-ips-para-obtener-su-mac.html' title='Seguimiento de IPs para obtener su MAC'/><author><name>Juan Antonio Izquierdo Gómez</name><uri>https://profiles.google.com/100010759467986112292</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-QheVbom_7Uo/AAAAAAAAAAI/AAAAAAAAAag/Ko044HYFPRs/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2288057976592669667.post-9154668713029952570</id><published>2009-11-09T08:00:00.001+01:00</published><updated>2009-11-09T08:00:05.237+01:00</updated><title type='text'>Ejecución de comandos tras el arranque del S.O.</title><content type='html'>Si deseamos ejecutar algún comando o script tras el arranque del sistema operativo, deberemos especificarlo en el fichero &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;/etc/rc.local&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ntpdate -u 192.168.1.1&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Añadiendo esta linea bastaría para que tras el arranque de Linux, un equipo sincronice su hora con un servidor de hora (supuesto que el equipo 192.168.1.1 tenga corriendo el servicio &lt;a href="http://www.ntp.org/"&gt;ntpd&lt;/a&gt;). Esto es muy interesante para equipos con bastantes años que no llevan correctamente la hora del sistema.&lt;br /&gt;&lt;br /&gt;Ahora bien, prefiero hacerlo bonito y que quede totalmente integrado con la "estética" del arranque en modo consola de &lt;a href="http://www.ubuntu.com/"&gt;Ubuntu&lt;/a&gt; (como en &lt;a href="http://www.ubuntu.com/getubuntu/download-server"&gt;Ubuntu server&lt;/a&gt;):&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;echo -n " * Actualizando la hora del sistema... "&lt;br /&gt;ntpdate -u 192.168.1.1&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;echo "OK"&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2288057976592669667-9154668713029952570?l=administracion-linux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://administracion-linux.blogspot.com/feeds/9154668713029952570/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://administracion-linux.blogspot.com/2009/11/ejecucion-de-comandos-tras-el-arranque.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/9154668713029952570'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/9154668713029952570'/><link rel='alternate' type='text/html' href='http://administracion-linux.blogspot.com/2009/11/ejecucion-de-comandos-tras-el-arranque.html' title='Ejecución de comandos tras el arranque del S.O.'/><author><name>Juan Antonio Izquierdo Gómez</name><uri>https://profiles.google.com/100010759467986112292</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-QheVbom_7Uo/AAAAAAAAAAI/AAAAAAAAAag/Ko044HYFPRs/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2288057976592669667.post-1741418291783267556</id><published>2009-11-06T17:18:00.000+01:00</published><updated>2009-11-06T17:18:51.082+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='shell script'/><title type='text'>Simular comando watch</title><content type='html'>El comando &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;watch&lt;/span&gt; es bastante útil si queremos monitorizar algún valor. Ejecuta el comando que le indiquemos por parámetro cada x segundos indicados también por parámetro, mostrando la salida del comando:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ watch -n 1 date&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;En el ejemplo anterior, se ejecutará el comando &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;date&lt;/span&gt; cada segundo (si no se indica periodicidad, por defecto son 2 segundos).&lt;br /&gt;&lt;br /&gt;Ahora bien, ¿como podemos simular este comando en equipos que no disponen de él? Ejemplos de ello son instalaciones estándar de algunos sistemas Unix-like. Lo haremos de la siguiente forma:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;#!/bin/sh&lt;br /&gt;&lt;br /&gt;funcion(){&lt;br /&gt;clear&lt;br /&gt;date&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;while [ 1 ];&lt;br /&gt;do&lt;br /&gt;&amp;nbsp; funcion&lt;br /&gt;&amp;nbsp; sleep 1&lt;br /&gt;done&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Este script tiene dos puntos clave: el comando a ejecutar (date en nuestro caso) y la cantidad de segundos a esperar por cada ejecución (1 en nuestro caso). Adaptando estas lineas simularéis el comando &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;watch&lt;/span&gt; para la ejecución de lo que queráis.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2288057976592669667-1741418291783267556?l=administracion-linux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://administracion-linux.blogspot.com/feeds/1741418291783267556/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://administracion-linux.blogspot.com/2009/11/simular-comando-watch.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/1741418291783267556'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/1741418291783267556'/><link rel='alternate' type='text/html' href='http://administracion-linux.blogspot.com/2009/11/simular-comando-watch.html' title='Simular comando watch'/><author><name>Juan Antonio Izquierdo Gómez</name><uri>https://profiles.google.com/100010759467986112292</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-QheVbom_7Uo/AAAAAAAAAAI/AAAAAAAAAag/Ko044HYFPRs/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2288057976592669667.post-1973109043739815891</id><published>2009-11-04T08:00:00.001+01:00</published><updated>2009-11-04T08:00:00.906+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Averiguando versión de Ubuntu</title><content type='html'>Basta con leer el contenido del siguiente fichero:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ cat /etc/lsb-release&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;DISTRIB_ID=Ubuntu&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;DISTRIB_RELEASE=9.10&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;DISTRIB_CODENAME=karmic&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;DISTRIB_DESCRIPTION="Ubuntu 9.10"&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2288057976592669667-1973109043739815891?l=administracion-linux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://administracion-linux.blogspot.com/feeds/1973109043739815891/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://administracion-linux.blogspot.com/2009/11/averiguando-version-de-ubuntu.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/1973109043739815891'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/1973109043739815891'/><link rel='alternate' type='text/html' href='http://administracion-linux.blogspot.com/2009/11/averiguando-version-de-ubuntu.html' title='Averiguando versión de Ubuntu'/><author><name>Juan Antonio Izquierdo Gómez</name><uri>https://profiles.google.com/100010759467986112292</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-QheVbom_7Uo/AAAAAAAAAAI/AAAAAAAAAag/Ko044HYFPRs/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2288057976592669667.post-4652775374561483002</id><published>2009-11-03T18:43:00.000+01:00</published><updated>2009-11-03T18:43:02.191+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='shell script'/><title type='text'>Transferir ficheros con netcat</title><content type='html'>Imaginemos que necesitamos transferir un fichero por red entre dos máquinas y que, por el motivo que sea, no lo podemos hacer por ftp, scp,... bien por desconocimiento de passwords o por falta de esos servicios. En este caso, &lt;a href="http://crysol.org/node/28"&gt;netcat&lt;/a&gt; es nuestra aplicación.&lt;br /&gt;&lt;br /&gt;En la máquina receptora del fichero estableceremos &lt;a href="http://crysol.org/node/28"&gt;netcat&lt;/a&gt; como servidor en un determinado puerto:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ nc -l -p 5000 &amp;gt; fichero.odt&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Lo que hará será escuchar por ese puerto y todo lo que reciba escribirlo al fichero &lt;i&gt;fichero.odt&lt;/i&gt; (si no hubiésemos redirigido la salida estándar aparecería por pantalla).&lt;br /&gt;&lt;br /&gt;En la máquina origen (la que tiene el fichero deseado), ejecutar el comando:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ cat fichero.odt | nc 192.168.1.1 5000 -q 0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Supuesto que el servidor destino tiene dicha IP. Lo que hacemos en este caso es pasarle como entrada a &lt;a href="http://crysol.org/node/28"&gt;netcat&lt;/a&gt; el contenido del fichero, y este lo enviará a la IP y puerto indicados. La opción &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;-q&lt;/span&gt; 0 cerrará la conexión con el otro extremo cuando finalice la transmisión del fichero.&lt;br /&gt;&lt;br /&gt;Si desconfiáis de que el contenido del fichero transmitido sea correcto, ejecutad en ambos servidor el comando:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ md5sum fichero.odt&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;22cd94e9c8db682d2f3cb432649eb6b8&amp;nbsp; fichero.odt&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;para comparar el hash del fichero.&lt;br /&gt;&lt;br /&gt;Se permiten muchas variaciones, como por ejemplo comprimir el fichero antes de mandarlo para generar menos tráfico de red y/o tardar menos en transmitirlo:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ gzip -c fichero.odt | nc 192.168.1.1 5000 -q 0&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2288057976592669667-4652775374561483002?l=administracion-linux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://administracion-linux.blogspot.com/feeds/4652775374561483002/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://administracion-linux.blogspot.com/2009/11/transferir-ficheros-con-netcat.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/4652775374561483002'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/4652775374561483002'/><link rel='alternate' type='text/html' href='http://administracion-linux.blogspot.com/2009/11/transferir-ficheros-con-netcat.html' title='Transferir ficheros con netcat'/><author><name>Juan Antonio Izquierdo Gómez</name><uri>https://profiles.google.com/100010759467986112292</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-QheVbom_7Uo/AAAAAAAAAAI/AAAAAAAAAag/Ko044HYFPRs/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2288057976592669667.post-7229136503421695446</id><published>2009-11-02T15:25:00.001+01:00</published><updated>2009-11-03T18:58:38.302+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='shell script'/><title type='text'>Averiguando MAC desde IP</title><content type='html'>En ocasiones nos puede interesar conocer la &lt;a href="http://es.wikipedia.org/wiki/Direcci%C3%B3n_MAC"&gt;MAC&lt;/a&gt; de una determinada IP de nuestra red, bien para temas de inventario o para saber si alguien se ha cambiado indebidamente su IP.&lt;br /&gt;&lt;br /&gt;Este sencillo script nos ayudará a obtener la &lt;a href="http://es.wikipedia.org/wiki/Direcci%C3%B3n_MAC"&gt;MAC&lt;/a&gt; de la IP indicada como parámetro:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;#!/bin/sh&lt;br /&gt;ping -c 1 $1 &amp;gt;/dev/null 2&amp;gt;&amp;amp;1 &amp;amp;&amp;amp; arp -n | grep $1 | awk '{print $3}'&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Su llamada sería:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ ./obtener_mac 192.168.1.1&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;00:13:f7:e9:96:cf&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Si quisiéramos realizar un listado completo de IPS-MACS de nuestra red, podríamos adaptar el script de esta forma:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;#!/bin/sh&lt;br /&gt;&lt;br /&gt;for IP in $(seq 254)&lt;br /&gt;do&lt;br /&gt;&amp;nbsp; MAC=$(ping -c 1 $1$IP &amp;gt;/dev/null 2&amp;gt;&amp;amp;1 &amp;amp;&amp;amp; arp -n | grep "$1$IP " | awk '{print $3}')&lt;br /&gt;&amp;nbsp; echo $1$IP - $MAC&lt;br /&gt;done &lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Suponiendo una red de clase C y pasando como parámetro la parte fija de la dirección IP:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ ./listado_macs 192.168.2.&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;192.168.2.1 - 00:13:f7:e9:96:cf&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;192.168.2.2 -&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;192.168.2.3 -&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;[.......]&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2288057976592669667-7229136503421695446?l=administracion-linux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://administracion-linux.blogspot.com/feeds/7229136503421695446/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://administracion-linux.blogspot.com/2009/11/averiguando-mac-desde-ip.html#comment-form' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/7229136503421695446'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/7229136503421695446'/><link rel='alternate' type='text/html' href='http://administracion-linux.blogspot.com/2009/11/averiguando-mac-desde-ip.html' title='Averiguando MAC desde IP'/><author><name>Juan Antonio Izquierdo Gómez</name><uri>https://profiles.google.com/100010759467986112292</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-QheVbom_7Uo/AAAAAAAAAAI/AAAAAAAAAag/Ko044HYFPRs/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2288057976592669667.post-6159748904274701735</id><published>2009-10-31T08:00:00.002+01:00</published><updated>2009-10-31T08:00:00.168+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='shell script'/><title type='text'>For each line en bash</title><content type='html'>En ocasiones podemos necesitar desde un script en &lt;a href="http://es.wikipedia.org/wiki/Bash"&gt;bash&lt;/a&gt; analizar cada una de las lineas de un fichero. Un bucle &lt;i&gt;for&lt;/i&gt; es una buena opción para ello.&lt;br /&gt;&lt;br /&gt;Supongamos que tenemos un fichero llamado &lt;i&gt;fichero&lt;/i&gt; con el siguiente contenido:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;uno dos tres&lt;br /&gt;cuatro cinco&lt;br /&gt;seis&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Y un script &lt;i&gt;analizar.sh&lt;/i&gt; con el siguiente código:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;#!/bin/bash&lt;br /&gt;&lt;br /&gt;LINEAS=$(cat fichero)&lt;br /&gt;&lt;br /&gt;for LINEA in $LINEAS&lt;br /&gt;do&lt;br /&gt;&amp;nbsp; echo $LINEA&lt;br /&gt;done&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Si lo ejecutamos, veremos que la salida no es la esperada:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ ./analizar.sh&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;uno&lt;br /&gt;dos&lt;br /&gt;tres&lt;br /&gt;cuatro&lt;br /&gt;cinco&lt;br /&gt;seis&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Esto ocurre porque un bucle en &lt;a href="http://es.wikipedia.org/wiki/Bash"&gt;bash&lt;/a&gt; usa para separar los campos espacios en blanco, saltos de linea, etc. Tendremos que decir a &lt;a href="http://es.wikipedia.org/wiki/Bash"&gt;bash&lt;/a&gt; que el separador sea exclusivamente el salto de linea:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;#!/bin/bash&lt;br /&gt;&lt;br /&gt;IFS="&lt;br /&gt;"&lt;br /&gt;LINEAS=$(cat fichero)&lt;br /&gt;&lt;br /&gt;for LINEA in $LINEAS&lt;br /&gt;do&lt;br /&gt;&amp;nbsp; echo $LINEA&lt;br /&gt;done&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;La variable &lt;i&gt;IFS (Internal Field Separator)&lt;/i&gt; es una variable interna de &lt;a href="http://es.wikipedia.org/wiki/Bash"&gt;bash&lt;/a&gt; que especificará el caracter separador. Con este simple cambio, podremos procesar cada linea de un fichero según nuestras necesidades.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2288057976592669667-6159748904274701735?l=administracion-linux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://administracion-linux.blogspot.com/feeds/6159748904274701735/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://administracion-linux.blogspot.com/2009/10/for-each-line-en-bash.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/6159748904274701735'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/6159748904274701735'/><link rel='alternate' type='text/html' href='http://administracion-linux.blogspot.com/2009/10/for-each-line-en-bash.html' title='For each line en bash'/><author><name>Juan Antonio Izquierdo Gómez</name><uri>https://profiles.google.com/100010759467986112292</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-QheVbom_7Uo/AAAAAAAAAAI/AAAAAAAAAag/Ko044HYFPRs/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2288057976592669667.post-897799070004047390</id><published>2009-10-30T08:00:00.002+01:00</published><updated>2009-10-30T08:00:09.957+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gnuplot'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='shell script'/><title type='text'>Ejercicio 1</title><content type='html'>Os voy a proponer un ejercicio más bien simple relacionado con una entrada anterior, &lt;a href="http://administracion-linux.blogspot.com/2009/10/graficas-con-gnuplot.html"&gt;realizar gráficas con gnuplot&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Esta entrada consistía en realizar una gráfica que mostrase la evolución de un valor en un periodo de tiempo. Si disponemos de un fichero de log con el siguiente formato:&lt;br /&gt;&lt;div style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2009-10-05:08:00 50&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2009-10-05:08:01 45&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;...&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;se propone realizar un script que genere una página web que muestre una gráfica por cada año registrado en el log. Si pinchamos en la gráfica de un determinado año, accederemos a una página web donde se mostrará una gráfica por cada mes de ese año. Si se pincha en la gráfica de un mes concreto, accederemos a una página web donde se mostrará una gráfica por cada día de ese mes.&lt;br /&gt;&lt;br /&gt;Como lo más normal es que no dispongáis de un fichero de log lo suficientemente grande como para hacer esto, un ejercicio 0 podría ser el generar un fichero de log de este tipo con valores aleatorios entre 0-100 por cada minuto.&lt;br /&gt;&lt;br /&gt;Dentro de unos días os pondré mi solución (que supongo que no será la mejor), así damos un poco de tiempo a todos los que aceptéis el reto.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2288057976592669667-897799070004047390?l=administracion-linux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://administracion-linux.blogspot.com/feeds/897799070004047390/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://administracion-linux.blogspot.com/2009/10/ejercicio-1.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/897799070004047390'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/897799070004047390'/><link rel='alternate' type='text/html' href='http://administracion-linux.blogspot.com/2009/10/ejercicio-1.html' title='Ejercicio 1'/><author><name>Juan Antonio Izquierdo Gómez</name><uri>https://profiles.google.com/100010759467986112292</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-QheVbom_7Uo/AAAAAAAAAAI/AAAAAAAAAag/Ko044HYFPRs/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2288057976592669667.post-3126362096908398299</id><published>2009-10-29T08:00:00.002+01:00</published><updated>2009-10-29T08:00:00.979+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='seguridad'/><title type='text'>Ocultación de contraseñas en fstab al montar comparticiones samba</title><content type='html'>Si accedemos frecuentemente a comparticiones samba desde nuestra máquina Linux, es interesante que estas comparticiones se monten automáticamente al inicio del sistema. Para ello, en el fichero &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;/etc/fstab&lt;/span&gt; tendremos algo parecido a esto:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;//192.168.1.1/compartido&amp;nbsp; /mnt/compartido &amp;nbsp; smbfs&amp;nbsp; defaults,username=perico,password=delospalotes,uid=juan,gid=juan,iocharset=utf8&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 0&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Pero claro, cualquier usuario de nuestra máquina puede hacer un &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;cat /etc/fstab&lt;/span&gt; y enterarse del usuario y contraseña que usamos para hacer esta conexión.&lt;br /&gt;&lt;br /&gt;Existe una forma de ocultar el usuario y contraseña usados:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;//192.168.1.1/compartido&amp;nbsp; /mnt/compartido&amp;nbsp;&amp;nbsp; smbfs&amp;nbsp; defaults,credentials=/root/.smbcredentials/servidor,uid=juan,gid=juan,iocharset=utf8&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 0&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Ahora, la entrada del &lt;i&gt;fstab&lt;/i&gt; indica que la identificación sobre el servidor se hará usando los datos del fichero &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;/root/.smbcredentials/servidor&lt;/span&gt;, fichero que por supuesto solo lo puede leer &lt;i&gt;root&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;El contenido del fichero &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;/root/.smbcredentials/servidor&lt;/span&gt; tendrá el siguiente contenido:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;username=perico&lt;br /&gt;password=delospalotes&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2288057976592669667-3126362096908398299?l=administracion-linux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://administracion-linux.blogspot.com/feeds/3126362096908398299/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://administracion-linux.blogspot.com/2009/10/ocultacion-de-contrasenas-en-fstab-al.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/3126362096908398299'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/3126362096908398299'/><link rel='alternate' type='text/html' href='http://administracion-linux.blogspot.com/2009/10/ocultacion-de-contrasenas-en-fstab-al.html' title='Ocultación de contraseñas en fstab al montar comparticiones samba'/><author><name>Juan Antonio Izquierdo Gómez</name><uri>https://profiles.google.com/100010759467986112292</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-QheVbom_7Uo/AAAAAAAAAAI/AAAAAAAAAag/Ko044HYFPRs/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2288057976592669667.post-1242978405349898405</id><published>2009-10-28T08:00:00.002+01:00</published><updated>2009-10-28T08:00:10.668+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='seguridad'/><title type='text'>Deshabilitar ssh para root</title><content type='html'>Una manera de securizar un poco más un equipo de cara a posibles atacantes es no permitir que un usuario se pueda logar como &lt;i&gt;root&lt;/i&gt; mediante &lt;i&gt;ssh&lt;/i&gt; en la máquina en cuestión. Esta medida de seguridad nos permitirá el que, si un atacante se consigue logar en nuestra máquina por un &lt;a href="http://es.wikipedia.org/wiki/Ataque_de_fuerza_bruta"&gt;ataque de fuerza bruta&lt;/a&gt; (o cualquier &lt;a href="http://es.wikipedia.org/wiki/Ingenier%C3%ADa_social_%28seguridad_inform%C3%A1tica%29"&gt;otro método&lt;/a&gt;), al menos le sea imposible hacerlo (en una primera fase) como usuario root. Siempre podrá intentar logarse con &lt;a href="http://es.wikipedia.org/wiki/Su_%28Unix%29"&gt;su&lt;/a&gt;, pero este será un segundo reto que le llevará tiempo.&lt;br /&gt;&lt;br /&gt;Para deshabilitar el acceso de logado como &lt;i&gt;root&lt;/i&gt; en &lt;i&gt;ssh&lt;/i&gt;, establecer el parámetro  a &lt;i&gt;No&lt;/i&gt; en el fichero &lt;i&gt;/etc/ssh/sshd_config&lt;/i&gt;:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;PermitRootLogin no&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Y a continuación, reiniciar el demonio sshd:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# /etc/init.d/ssh restart &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2288057976592669667-1242978405349898405?l=administracion-linux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://administracion-linux.blogspot.com/feeds/1242978405349898405/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://administracion-linux.blogspot.com/2009/10/deshabilitar-ssh-para-root.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/1242978405349898405'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/1242978405349898405'/><link rel='alternate' type='text/html' href='http://administracion-linux.blogspot.com/2009/10/deshabilitar-ssh-para-root.html' title='Deshabilitar ssh para root'/><author><name>Juan Antonio Izquierdo Gómez</name><uri>https://profiles.google.com/100010759467986112292</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-QheVbom_7Uo/AAAAAAAAAAI/AAAAAAAAAag/Ko044HYFPRs/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2288057976592669667.post-5818636190876607056</id><published>2009-10-27T08:00:00.000+01:00</published><updated>2009-10-27T08:00:01.084+01:00</updated><title type='text'>Películas con telnet</title><content type='html'>A los aficionados a Star Wars y que además son amantes de la consola de Linux, seguid estos sencillos pasos:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Haced palomitas&lt;/li&gt;&lt;li&gt;Repanchingaros bien en vuestra silla&lt;/li&gt;&lt;li&gt;Ejecutad $ telnet towel.blinkenlights.nl&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2288057976592669667-5818636190876607056?l=administracion-linux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://administracion-linux.blogspot.com/feeds/5818636190876607056/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://administracion-linux.blogspot.com/2009/10/peliculas-con-telnet.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/5818636190876607056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/5818636190876607056'/><link rel='alternate' type='text/html' href='http://administracion-linux.blogspot.com/2009/10/peliculas-con-telnet.html' title='Películas con telnet'/><author><name>Juan Antonio Izquierdo Gómez</name><uri>https://profiles.google.com/100010759467986112292</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-QheVbom_7Uo/AAAAAAAAAAI/AAAAAAAAAag/Ko044HYFPRs/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2288057976592669667.post-681406113613073444</id><published>2009-10-26T08:00:00.001+01:00</published><updated>2009-10-26T08:03:14.850+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='seguridad'/><title type='text'>Fork bomb en Ubuntu</title><content type='html'>La mayoría de distribuciones Linux y Unix vienen con un límite de procesos por usuario bastante relajado o incluso inexistente. Haciendo uso de esta configuración por defecto, se puede realizar una denegación de servicio a un equipo/servidor.&lt;br /&gt;&lt;br /&gt;El &lt;a href="http://en.wikipedia.org/wiki/Fork_bomb"&gt;fork bomb&lt;/a&gt; consiste en ejecutar el siguiente comando (con cualquier usuario):&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ :(){ :|:&amp;amp; };:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Esto hará que nuestro bash comience a generar procesos hasta ocupar toda la CPU y bloquear, literalmente, nuestra máquina. Así pues, no hagáis pruebas sobre equipos en producción!! Es curioso ver cómo un usuario sin privilegios de root puede tumbar un equipo.&lt;br /&gt;&lt;br /&gt;Si ejecutamos el comando&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ ulimit -u&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Observaremos el número de procesos máximos que el usuario actual puede generar. Si queremos limitar este número basta con ejecutar el comando:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ ulimit -u 1000&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Para limitar a 1000 el número de procesos. Este valor se puede definir en el fichero&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; /etc/security/limits.conf&lt;/span&gt;. Añadir la siguiente entrada para limitar el número máximo de procesos para cualquier usuario a 1000:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;* hard nproc 1000&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2288057976592669667-681406113613073444?l=administracion-linux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://administracion-linux.blogspot.com/feeds/681406113613073444/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://administracion-linux.blogspot.com/2009/10/fork-bomb-en-ubuntu.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/681406113613073444'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/681406113613073444'/><link rel='alternate' type='text/html' href='http://administracion-linux.blogspot.com/2009/10/fork-bomb-en-ubuntu.html' title='Fork bomb en Ubuntu'/><author><name>Juan Antonio Izquierdo Gómez</name><uri>https://profiles.google.com/100010759467986112292</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-QheVbom_7Uo/AAAAAAAAAAI/AAAAAAAAAag/Ko044HYFPRs/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2288057976592669667.post-7992191889728586141</id><published>2009-10-24T08:00:00.000+02:00</published><updated>2009-10-24T08:00:02.593+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Mandar emails desde Python</title><content type='html'>Os voy a mostrar una sencilla función que os permitirá enviar correos electrónicos desde Python:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# -*- coding: latin-1 -*-&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;import smtplib&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CUENTA_CORREO='usuario@dominio'&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;PASSWORD_CUENTA_CORREO='pass'&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;IP_SERVIDOR_SMTP='X.X.X.X'&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;def mail(destinatarios, cc, asunto, mensaje):&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # Destinatarios: lista de emails&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # cc: lista de emails&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # asunto: string&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # mensaje: string&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; headers = "From: %s\r\nTo: %s\r\nCc: %s\r\nContent-Type: text/plain; charset=\"utf-8\"\r\nSubject: %s\r\n\r\n" % (CUENTA_CORREO, ','.join(destinatarios), ','.join(cc), asunto)&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; message = headers + mensaje&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mailServer = smtplib.SMTP(IP_SERVIDOR_SMTP)&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mailServer.login(CUENTA_CORREO, PASSWORD_CUENTA_CORREO)&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mailServer.sendmail(CUENTA_CORREO, destinatarios + cc, message)&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mailServer.quit()&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;mail(['a@hotmail.com','b@hotmail.com'], ['c@hotmail.com'], 'prueba', 'esto es una prueba')&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2288057976592669667-7992191889728586141?l=administracion-linux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://administracion-linux.blogspot.com/feeds/7992191889728586141/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://administracion-linux.blogspot.com/2009/10/mandar-emails-desde-python.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/7992191889728586141'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/7992191889728586141'/><link rel='alternate' type='text/html' href='http://administracion-linux.blogspot.com/2009/10/mandar-emails-desde-python.html' title='Mandar emails desde Python'/><author><name>Juan Antonio Izquierdo Gómez</name><uri>https://profiles.google.com/100010759467986112292</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-QheVbom_7Uo/AAAAAAAAAAI/AAAAAAAAAag/Ko044HYFPRs/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2288057976592669667.post-8054455341136959557</id><published>2009-10-23T08:00:00.001+02:00</published><updated>2009-10-23T08:00:01.528+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='shell script'/><title type='text'>Conocer nuestra IP pública</title><content type='html'>En la mayoría de ocasiones, nuestro equipo está en una &lt;a href="http://es.wikipedia.org/wiki/Red_privada"&gt;subred privada&lt;/a&gt; y salimos a Internet mediante un router que es el único que posee una IP pública. Y aunque existen muchas páginas web que te indican la IP pública con la que sales a Internet, &lt;a href="http://whatismyipaddress.com/"&gt;como esta&lt;/a&gt;, os voy a indicar cómo saber este dato desde la consola (porque lo mismo estoy en un servidor sin entorno gráfico ni navegador):&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ curl icanhazip.com&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2288057976592669667-8054455341136959557?l=administracion-linux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://administracion-linux.blogspot.com/feeds/8054455341136959557/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://administracion-linux.blogspot.com/2009/10/conocer-nuestra-ip-publica.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/8054455341136959557'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/8054455341136959557'/><link rel='alternate' type='text/html' href='http://administracion-linux.blogspot.com/2009/10/conocer-nuestra-ip-publica.html' title='Conocer nuestra IP pública'/><author><name>Juan Antonio Izquierdo Gómez</name><uri>https://profiles.google.com/100010759467986112292</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-QheVbom_7Uo/AAAAAAAAAAI/AAAAAAAAAag/Ko044HYFPRs/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2288057976592669667.post-4960138755904953944</id><published>2009-10-22T08:00:00.000+02:00</published><updated>2009-10-22T08:00:00.538+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='shell script'/><title type='text'>Buscar palabras dentro de ficheros</title><content type='html'>Un comando muy útil en Linux es &lt;a href="http://es.wikipedia.org/wiki/Grep"&gt;grep&lt;/a&gt;, y como admite muchos parámetros se pueden hacer gran cantidad de cosas con él.&lt;br /&gt;&lt;br /&gt;En esta ocasión lo vamos a usar para que nos diga qué ficheros contienen una palabra (o una expresión regular) y en qué lineas, dado el directorio actual y suponiendo la búsqueda en los ficheros de éste y sus subdirectorios:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;root@pc:/etc# grep -nr eth0 *&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;dhcp3/dhclient.conf:36:#&amp;nbsp; interface "eth0";&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;dhcp3/dhclient.conf:42:#&amp;nbsp; interface "eth0";&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;initramfs-tools/initramfs.conf:62:# Specify the network interface, like eth0&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;initramfs-tools/initramfs.conf:65:DEVICE=eth0&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;laptop-mode/conf.d/ethernet.conf:36:ETHERNET_DEVICES="eth0 eth1"&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;network/interfaces.232:4:auto eth0&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;network/interfaces.232:5:iface eth0 inet static&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;network/interfaces.137:4:auto eth0&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;network/interfaces.137:5:iface eth0 inet static&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;network/interfaces:4:auto eth0&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;network/interfaces:5:iface eth0 inet static&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2288057976592669667-4960138755904953944?l=administracion-linux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://administracion-linux.blogspot.com/feeds/4960138755904953944/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://administracion-linux.blogspot.com/2009/10/buscar-palabras-dentro-de-ficheros.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/4960138755904953944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/4960138755904953944'/><link rel='alternate' type='text/html' href='http://administracion-linux.blogspot.com/2009/10/buscar-palabras-dentro-de-ficheros.html' title='Buscar palabras dentro de ficheros'/><author><name>Juan Antonio Izquierdo Gómez</name><uri>https://profiles.google.com/100010759467986112292</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-QheVbom_7Uo/AAAAAAAAAAI/AAAAAAAAAag/Ko044HYFPRs/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2288057976592669667.post-1255730666567460316</id><published>2009-10-21T08:00:00.001+02:00</published><updated>2009-10-21T08:00:04.901+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='shell script'/><title type='text'>Ping sonoro</title><content type='html'>¿Cuántas veces habremos reiniciado un servidor remotamente y usamos el comando &lt;a href="http://es.wikipedia.org/wiki/Ping"&gt;ping&lt;/a&gt; para chequear cuándo está disponible? Podemos pasar entre unos pocos segundos hasta algunos minutos, y durante ese tiempo estamos mirando cada dos por tres la ventanita de terminal.&lt;br /&gt;&lt;br /&gt;El comando &lt;a href="http://es.wikipedia.org/wiki/Ping"&gt;ping&lt;/a&gt; dispone de un parámetro por el que puede emitir un pitido por cada ping satisfactorio:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ ping -a 192.168.1.1&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;De esta forma, podréis minimizar el terminal y hacer otras tareas pues siempre seréis avisados cuando el servidor quede disponible.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2288057976592669667-1255730666567460316?l=administracion-linux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://administracion-linux.blogspot.com/feeds/1255730666567460316/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://administracion-linux.blogspot.com/2009/10/ping-sonoro.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/1255730666567460316'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/1255730666567460316'/><link rel='alternate' type='text/html' href='http://administracion-linux.blogspot.com/2009/10/ping-sonoro.html' title='Ping sonoro'/><author><name>Juan Antonio Izquierdo Gómez</name><uri>https://profiles.google.com/100010759467986112292</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-QheVbom_7Uo/AAAAAAAAAAI/AAAAAAAAAag/Ko044HYFPRs/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2288057976592669667.post-6280354965920041685</id><published>2009-10-20T08:00:00.001+02:00</published><updated>2009-10-20T08:00:01.512+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='shell script'/><title type='text'>Descargar web completas</title><content type='html'>Cualquier distribución Linux dispone de una utilidad que permite descargar webs completas (entre otros muchos propósitos posibles). Se trata de &lt;a href="http://es.wikipedia.org/wiki/GNU_Wget"&gt;wget&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;La sintaxis es la siguiente:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ wget -rkcp --wait=2 --limit-rate=100K -U Mozilla http://administracion-linux.blogspot.com&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Cada uno de los parámetros significan lo siguiente:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;-r&lt;/span&gt;: descarga recursiva&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;-k&lt;/span&gt;: una vez descargado un fichero, transforma los links para referirlos a archivos locales (para poder ver una web correctamente en local con todos sus elementos).&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;-c&lt;/span&gt;: termina de bajar ficheros que se hayan quedado a medio.&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;-p&lt;/span&gt;: se descarga todos los ficheros necesarios para poder ver bien la página web.&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;--wait&lt;/span&gt;: segundos de espera entre la descarga de un fichero y el siguiente. Este parámetro es interesante para que el servidor web no detecte que se trata de un programa de descarga masiva y nos corte la descarga.&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;--limit-rate&lt;/span&gt;: marca el máximo de descarga por archivo. Persigue el mismo propósito que el parámetro anterior.&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;-U&lt;/span&gt;: &lt;a href="http://es.wikipedia.org/wiki/GNU_Wget"&gt;wget&lt;/a&gt; se hace pasar por un navegador. Tiene el mismo prósito que los dos parámetros anteriores.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2288057976592669667-6280354965920041685?l=administracion-linux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://administracion-linux.blogspot.com/feeds/6280354965920041685/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://administracion-linux.blogspot.com/2009/10/descargar-web-completas.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/6280354965920041685'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/6280354965920041685'/><link rel='alternate' type='text/html' href='http://administracion-linux.blogspot.com/2009/10/descargar-web-completas.html' title='Descargar web completas'/><author><name>Juan Antonio Izquierdo Gómez</name><uri>https://profiles.google.com/100010759467986112292</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-QheVbom_7Uo/AAAAAAAAAAI/AAAAAAAAAag/Ko044HYFPRs/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2288057976592669667.post-5547370113618219284</id><published>2009-10-19T15:24:00.000+02:00</published><updated>2009-10-19T15:24:57.929+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='shell script'/><title type='text'>Despertando equipos</title><content type='html'>En ocasiones podemos necesitar acceder por ssh a un equipo para realizar alguna tarea o consultar algún dato pero... ¡el equipo lo tenemos apagado! Es muy interesante disponer de un método de arranque remoto para estos casos.&lt;br /&gt;&lt;br /&gt;En primer lugar, activaremos desde la &lt;a href="http://es.wikipedia.org/wiki/Bios"&gt;BIOS&lt;/a&gt; del PC en cuestión el arranque "wakeonlan" y anotaremos la dirección &lt;a href="http://es.wikipedia.org/wiki/MAC_address"&gt;MAC&lt;/a&gt; de la tarjeta de red que usaremos para despertarlo. En sistemas Linux, esta dirección se puede obtener con el comando &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ifconfig&lt;/span&gt;, o&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; ifconfig eth0&lt;/span&gt; por ejemplo, si se conoce la tarjeta de red que nos interesa.&lt;br /&gt;&lt;br /&gt;Después, instalaremos el paquete &lt;i&gt;wakeonlan&lt;/i&gt; en el PC que usaremos para despertar al anterior (suponiendo una distribución Ubuntu).&lt;br /&gt;&lt;br /&gt;Por último, bastará con ejecutar el siguiente comando para levantar el equipo:&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ wakeonlan 00:19:99:32:a5:e8&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2288057976592669667-5547370113618219284?l=administracion-linux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://administracion-linux.blogspot.com/feeds/5547370113618219284/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://administracion-linux.blogspot.com/2009/10/despertando-equipos.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/5547370113618219284'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/5547370113618219284'/><link rel='alternate' type='text/html' href='http://administracion-linux.blogspot.com/2009/10/despertando-equipos.html' title='Despertando equipos'/><author><name>Juan Antonio Izquierdo Gómez</name><uri>https://profiles.google.com/100010759467986112292</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-QheVbom_7Uo/AAAAAAAAAAI/AAAAAAAAAag/Ko044HYFPRs/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2288057976592669667.post-6847109333051389235</id><published>2009-10-18T20:41:00.000+02:00</published><updated>2009-10-18T20:41:34.370+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Actualizar a Ubuntu 9.10</title><content type='html'>Aunque Ubuntu 9.10 no sale oficialmente hasta dentro de 11 días, desde hace un tiempo podrás actualizar tu versión de Ubuntu a la 9.10 Beta. Para ello, seguir estos sencillos pasos:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Desde el entorno gráfico, presionar Alt + F2.&lt;/li&gt;&lt;li&gt;Ejecutar el comando &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;update-manager -d&lt;/span&gt;.&lt;/li&gt;&lt;/ol&gt;Aparecerá un asistente que se bajará todos los paquetes necesarios y los instalará.&lt;br /&gt;&lt;br /&gt;¿A qué esperas?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2288057976592669667-6847109333051389235?l=administracion-linux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://administracion-linux.blogspot.com/feeds/6847109333051389235/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://administracion-linux.blogspot.com/2009/10/actualizar-ubuntu-910.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/6847109333051389235'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/6847109333051389235'/><link rel='alternate' type='text/html' href='http://administracion-linux.blogspot.com/2009/10/actualizar-ubuntu-910.html' title='Actualizar a Ubuntu 9.10'/><author><name>Juan Antonio Izquierdo Gómez</name><uri>https://profiles.google.com/100010759467986112292</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-QheVbom_7Uo/AAAAAAAAAAI/AAAAAAAAAag/Ko044HYFPRs/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2288057976592669667.post-5880122259977142196</id><published>2009-10-12T17:28:00.000+02:00</published><updated>2009-10-12T17:28:21.393+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='shell script'/><title type='text'>Actualizar la hora del sistema</title><content type='html'>Si disponemos de un viejo equipo, es posible que este retrase la hora. En ocasiones, aun cambiándole la pila de botón de la placa base este problema no se soluciona. En esta situación, necesitaremos sincronizar la hora del equipo con algún servidor de hora.&lt;br /&gt;&lt;br /&gt;En &lt;a href="http://www.rediris.es/ntp/drafts/"&gt;este enlace&lt;/a&gt; de &lt;a href="http://www.rediris.es/"&gt;rediris&lt;/a&gt; disponéis de bastantes servidores de hora accesibles desde Internet. Es recomendable que acudáis al servidor de hora de vuestra zona geográfica pues los servidores de hora están montados de manera jerárquica (varios servidores de zona sincronizados entre sí por servidores de un nivel superior); el acesso siempre será más rápido y se balanceará mejor la carga de trabajo.&lt;br /&gt;&lt;br /&gt;Podéis consultar cómo de desfasada la fecha/hora de vuestro sistema con el comando:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ ntpdate -q SERVIDOR&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;donde SERVIDOR será la IP o nombre del servidor de hora a consultar.&lt;br /&gt;&lt;br /&gt;Si obtenemos una salida de este tipo:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;server 130.206.208.254, stratum 0, offset 0.000000, delay 0.00000&lt;br /&gt;12 Oct 17:14:25 ntpdate[17952]: no server suitable for synchronization found&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Significa que el servidor consultado no tiene operativo el demonio servidor de hora, &lt;a href="http://en.wikipedia.org/wiki/Ntpd"&gt;ntpd&lt;/a&gt;. Tendréis que probar con otro.&lt;br /&gt;&lt;br /&gt;El mismo comando, pero con el parámetro &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;-u&lt;/span&gt; (en puesto de &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;-q&lt;/span&gt;) sincronizará la hora del sistema con la del servidor de hora. Se tendrá que ejecutar como &lt;i&gt;root&lt;/i&gt; para que el cambio de hora de nuestro sistema se pueda efectuar.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2288057976592669667-5880122259977142196?l=administracion-linux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://administracion-linux.blogspot.com/feeds/5880122259977142196/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://administracion-linux.blogspot.com/2009/10/actualizar-la-hora-del-sistema.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/5880122259977142196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/5880122259977142196'/><link rel='alternate' type='text/html' href='http://administracion-linux.blogspot.com/2009/10/actualizar-la-hora-del-sistema.html' title='Actualizar la hora del sistema'/><author><name>Juan Antonio Izquierdo Gómez</name><uri>https://profiles.google.com/100010759467986112292</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-QheVbom_7Uo/AAAAAAAAAAI/AAAAAAAAAag/Ko044HYFPRs/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2288057976592669667.post-5678139163647911316</id><published>2009-10-09T08:00:00.001+02:00</published><updated>2009-10-09T08:00:02.984+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='seguridad'/><title type='text'>Cifrar contraseñas con Python</title><content type='html'>&lt;a href="http://www.python.org/"&gt;Python&lt;/a&gt; es un estupendo lenguaje con el que construir desde pequeños scripts a grandes aplicaciones en un abrir y cerrar de ojos. Yo hago mis pinitos con él.&lt;br /&gt;&lt;br /&gt;Si alguna vez habéis realizado un programa en el que los usuarios han de logarse, es fundamental que el servidor guarde las contraseñas con un cifrado seguro. Y es interesante que si dos usuarios escogen la misma contraseña, el administrador de sistemas que gestione dicha información encriptada no sepa de este hecho, es decir, que no vea la misma cadena cifrada para dos usuarios.&lt;br /&gt;&lt;br /&gt;La estrategia que seguiremos será la siguiente: la cadena de texto a cifrar no será sólo el password del usuario, sino la concatenación de su login y su password. Así, dos usuarios con la misma password no tendrán la misma cadena cifrada (pues el login se supone que es único). Usaremos el cifrado &lt;a href="http://es.wikipedia.org/wiki/Secure_Hash_Algorithm"&gt;SHA-1&lt;/a&gt; por ser un método (hasta ahora) seguro.&lt;br /&gt;&lt;br /&gt;Este script en &lt;a href="http://www.python.org/"&gt;Python&lt;/a&gt; nos dará la clave cifrada que tendremos que guardar:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# -*- coding: latin-1 -*-&lt;br /&gt;&lt;br /&gt;import hashlib, sys&lt;br /&gt;&lt;br /&gt;if len(sys.argv) &amp;lt; 3:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Uso: python encriptador.py USUARIO PASSWORD"&lt;br /&gt;else:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Password generado: " + hashlib.sha1( sys.argv[1] + sys.argv[2] ).hexdigest()&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Para los no iniciados en &lt;a href="http://www.python.org/"&gt;Python&lt;/a&gt;, para ejecutarlo basta con:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ python encriptador.py pepico delospalotes&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Si deseáis usar el cifrado &lt;a href="http://es.wikipedia.org/wiki/Secure_Hash_Algorithm"&gt;SHA-256&lt;/a&gt;, bastará con sustituir en el script anterior "sha1" por "sha256". La cadena resultado veréis que es más larga.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2288057976592669667-5678139163647911316?l=administracion-linux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://administracion-linux.blogspot.com/feeds/5678139163647911316/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://administracion-linux.blogspot.com/2009/10/cifrar-contrasenas-con-python.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/5678139163647911316'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/5678139163647911316'/><link rel='alternate' type='text/html' href='http://administracion-linux.blogspot.com/2009/10/cifrar-contrasenas-con-python.html' title='Cifrar contraseñas con Python'/><author><name>Juan Antonio Izquierdo Gómez</name><uri>https://profiles.google.com/100010759467986112292</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-QheVbom_7Uo/AAAAAAAAAAI/AAAAAAAAAag/Ko044HYFPRs/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2288057976592669667.post-4388580166455514389</id><published>2009-10-08T08:00:00.001+02:00</published><updated>2009-10-08T08:00:02.605+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='shell script'/><title type='text'>Acceso remoto automatizado por telnet</title><content type='html'>Aunque el método común de logarse en una máquina de manera remota (y en modo texto) es &lt;i&gt;ssh&lt;/i&gt;, en alguna ocasión puede que nos toque administrar sistemas antiguos que usan &lt;i&gt;telnet&lt;/i&gt; para las labores de administración remota.&lt;br /&gt;&lt;br /&gt;En este caso, permitir que un script se pueda logar por &lt;i&gt;telnet&lt;/i&gt; en una máquina remota y ejecutar algunos comandos puede resultar tarea dificil (&lt;i&gt;telnet&lt;/i&gt; no permite especificar por linea de comandos usuario y contraseña). A simple vista nos parecería que el logado por &lt;i&gt;telnet&lt;/i&gt; requiere hacerse por una persona. No obstante, este proceso se puede automatizar (y por tanto, usarlo en nuestros scripts).&lt;br /&gt;&lt;br /&gt;La idea es la siguiente: "teclear" los comandos o textos necesarios cuando las aplicaciones nos las van pidiendo. Cuando ejecutamos el comando &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;telnet $IP_SERVIDOR&lt;/span&gt;, en un segundo o menos nos aparece el típico "&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Login:&lt;/span&gt; "; en este momento nuestro script tecleará el login correspondiente. Tras dos segundos (o algo menos) se nos pide "&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Password:&lt;/span&gt; "; a lo que nuestro script responderá. Y así con el resto de comandos o textos que una persona que se logase fuese introduciendo (con las temporizaciones correctas).&lt;br /&gt;&lt;br /&gt;Os pongo un ejemplo:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;#!/bin/sh&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;SERVIDOR=192.168.1.100&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;USUARIO=admin&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;PASSWORD=istrador&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;(sleep 1;echo $USUARIO; sleep 2; echo $PASSWORD; sleep 3; echo "xterm"; sleep 3;echo "bdf"; sleep 2; echo "exit" ) | telnet $SERVIDOR &amp;gt;salida 2&amp;gt; /dev/null&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Si omitimos la redirección de la salida estándar a fichero, podremos ver cómo se va ejecutando todo y se van escribiendo los comandos en los tiempos establecidos. Si no dejásemos una pausa de 2 segundos entre la introducción del login y del password, el password se escribiría en pantalla antes de que el demonio &lt;i&gt;telnet&lt;/i&gt; imprima el texto "&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Password:&lt;/span&gt; ", y muchos demonios &lt;i&gt;telnet&lt;/i&gt; (si no todos) olvidan lo tecleado antes de solicitar el password. Lo mismo para el resto de comandos; necesitamos esperar a que "&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;bdf&lt;/span&gt;" (&lt;i&gt;df&lt;/i&gt; de HP-UX) termine de ejecutarse y nos aparezca el prompth del shell para poder meter el siguiente comando: &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;exit&lt;/span&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2288057976592669667-4388580166455514389?l=administracion-linux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://administracion-linux.blogspot.com/feeds/4388580166455514389/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://administracion-linux.blogspot.com/2009/10/acceso-remoto-automatizado-por-telnet.html#comment-form' title='4 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/4388580166455514389'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/4388580166455514389'/><link rel='alternate' type='text/html' href='http://administracion-linux.blogspot.com/2009/10/acceso-remoto-automatizado-por-telnet.html' title='Acceso remoto automatizado por telnet'/><author><name>Juan Antonio Izquierdo Gómez</name><uri>https://profiles.google.com/100010759467986112292</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-QheVbom_7Uo/AAAAAAAAAAI/AAAAAAAAAag/Ko044HYFPRs/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2288057976592669667.post-4563811909382349577</id><published>2009-10-07T08:00:00.001+02:00</published><updated>2009-10-07T08:00:05.045+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='shell script'/><title type='text'>Matar procesos</title><content type='html'>Ante la necesidad de matar un proceso desde consola, lo usual es realizar los siguientes pasos:&lt;br /&gt;&lt;br /&gt;1. Buscar el PID (identificador de proceso) del proceso a matar. Por ejemplo, &lt;i&gt;firefox&lt;/i&gt;:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ ps -ef | grep firefox&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;juan&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;11414&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp; 4 11:02 ?&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 00:11:42 /usr/lib/firefox-3.0.14/firefox&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;juan&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 21829 21542&amp;nbsp; 0 15:51 pts/0&amp;nbsp;&amp;nbsp;&amp;nbsp; 00:00:00 grep firefox&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;2. Matar el proceso:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ kill 11414&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;No obstante, existe un comando que nos permite matar los procesos que encajan con una palabra:&lt;br /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ pkill firefox&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ojo: Este comando matará todos los procesos que contengan dicha palabra. Por tanto, si ejecutamos algo como:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ pkill a&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;nos cargaremos un montón de procesos (todos en los que el nombre del ejecutable o parámetros contengan una a).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2288057976592669667-4563811909382349577?l=administracion-linux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://administracion-linux.blogspot.com/feeds/4563811909382349577/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://administracion-linux.blogspot.com/2009/10/matar-procesos.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/4563811909382349577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/4563811909382349577'/><link rel='alternate' type='text/html' href='http://administracion-linux.blogspot.com/2009/10/matar-procesos.html' title='Matar procesos'/><author><name>Juan Antonio Izquierdo Gómez</name><uri>https://profiles.google.com/100010759467986112292</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-QheVbom_7Uo/AAAAAAAAAAI/AAAAAAAAAag/Ko044HYFPRs/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2288057976592669667.post-4769786840218913464</id><published>2009-10-06T09:00:00.012+02:00</published><updated>2009-10-06T09:00:04.172+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='shell script'/><title type='text'>Acceso por ssh sin contraseña</title><content type='html'>En ocasiones es muy útil permitir el acceso por ssh desde un equipo a otro sin que pida la contraseña. Por ejemplo, un script que se ejecuta en una máquina cliente y que necesita ejecutar un comando en una máquina servidor. Este proceso automático no podría introducir la contraseña cuando ésta sea pedida.&lt;br /&gt;&lt;br /&gt;La forma de configurar una máquina servidor para que no pida contraseña cuando se acceda desde una máquina cliente específica es la siguiente:&lt;br /&gt;&lt;br /&gt;1. En la máquina cliente, logarnos con el usuario que accederá a la máquina servidor. Comprobar si existe el fichero &lt;i&gt;~/.ssh/id_rsa.pub&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;2. Si el fichero anterior no existe, ejecutar el comando:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ ssh-keygen -t rsa&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;y pulsar &lt;i&gt;enter&lt;/i&gt; a todas las preguntas que se nos hagan. Con esto, habremos creado la clave pública y privada (los ficheros &lt;i&gt;~/.ssh/id_rsa.pub&lt;/i&gt; y &lt;i&gt;~/.ssh/id_rsa&lt;/i&gt; respectivamente).&lt;br /&gt;&lt;br /&gt;3. Copiar la llave pública al directorio &lt;i&gt;home&lt;/i&gt; del &lt;i&gt;usuario@maquina&lt;/i&gt; servidor (la que será accedida sin contraseña):&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ scp ~/.ssh/id_rsa.pub usuario@maquina:/home/usuario/&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;4. En la máquina servidor, y logados con el usuario al que accederemos sin contraseña, ejecutaremos:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ cat ~/id_rsa.pub &amp;gt;&amp;gt; ~/.ssh/authorized_keys&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ rm ~/id_rsa.pub&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;En este momento ya podremos logarnos por ssh sin contraseña desde la máquina cliente con el usuario con que generamos la clave pública/privada a la máquina servidor con el usuario que configuramos para ello.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2288057976592669667-4769786840218913464?l=administracion-linux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://administracion-linux.blogspot.com/feeds/4769786840218913464/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://administracion-linux.blogspot.com/2009/10/acceso-por-ssh-sin-contrasena.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/4769786840218913464'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/4769786840218913464'/><link rel='alternate' type='text/html' href='http://administracion-linux.blogspot.com/2009/10/acceso-por-ssh-sin-contrasena.html' title='Acceso por ssh sin contraseña'/><author><name>Juan Antonio Izquierdo Gómez</name><uri>https://profiles.google.com/100010759467986112292</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-QheVbom_7Uo/AAAAAAAAAAI/AAAAAAAAAag/Ko044HYFPRs/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2288057976592669667.post-1141697813542923529</id><published>2009-10-05T18:54:00.001+02:00</published><updated>2009-10-05T18:56:22.211+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gnuplot'/><title type='text'>Gráficas con gnuplot</title><content type='html'>Supongamos que disponemos de un fichero de log con valores de ocupación de una partición que hemos ido recolectando. Vamos a hacer uso de la aplicación &lt;a href="http://www.gnuplot.info/"&gt;gnuplot&lt;/a&gt; para realizar gráficas usando dichos datos.&lt;br /&gt;&lt;br /&gt;Lo primero de todo será instalar &lt;a href="http://www.gnuplot.info/"&gt;gnuplot&lt;/a&gt;. Así pues, como usuario &lt;i&gt;root&lt;/i&gt; ejecutar:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# aptitude install gnuplot&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;Vamos a suponer que el fichero de log tiene el siguiente formato:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2009-10-05:08:00 50&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;siendo la primera columna la fecha y hora y la segunda columna el porcentaje de ocupación.&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;a href="http://www.gnuplot.info/"&gt;Gnuplot&lt;/a&gt; usa como entrada un fichero de texto donde se especifica el formato y configuración del gráfico a crear. Nuestro fichero de entrada será el siguiente:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;set encoding iso_8859_1&lt;br /&gt;set term png&lt;br /&gt;set xdata time&lt;br /&gt;set ylabel "Uso"&lt;br /&gt;set ytics nomirror&lt;br /&gt;set yrange [0:100]&lt;br /&gt;set grid ytics&lt;br /&gt;set xtics nomirror rotate 2592000&lt;br /&gt;set style fill solid 1.0&lt;br /&gt;set timefmt "%Y-%m-%d:%H:M"&lt;br /&gt;set format x "%m"&lt;br /&gt;set xlabel "Meses"&lt;br /&gt;&lt;br /&gt;set out "uso_home.png"&lt;br /&gt;set xrange ["2009-01-01:00:00":"2009-10-03:23:59"]&lt;br /&gt;set title "Ocupacion /home en 2009"&lt;br /&gt;plot "ocupacion.log" using 1:2 with boxes&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;y lo llamaremos &lt;i&gt;gnuplot.in&lt;/i&gt;, por ejemplo. Este fichero de entrada supone que los datos a dibujar están en el fichero &lt;i&gt;ocupacion.log&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;Si ejecutamos &lt;a href="http://www.gnuplot.info/"&gt;gnuplot&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ gnuplot gnuplot.in&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;obtendremos el fichero con la gráfica. Os pongo un ejemplo de cómo quedaría:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_oL72OGP7TPY/Ssojz2Gck6I/AAAAAAAAALc/RuOx4h8XF74/s1600-h/uso_home_boxes.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_oL72OGP7TPY/Ssojz2Gck6I/AAAAAAAAALc/RuOx4h8XF74/s400/uso_home_boxes.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Si nos fijamos en el fichero de entrada a &lt;a href="http://www.gnuplot.info/"&gt;gnuplot&lt;/a&gt;, se pueden cambiar bastantes parámetros para conseguir: estilos de linea diferentes, rangos de fecha diferentes, distinto valor de máximo de la gráfica del eje &lt;i&gt;y&lt;/i&gt;, etc.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2288057976592669667-1141697813542923529?l=administracion-linux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://administracion-linux.blogspot.com/feeds/1141697813542923529/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://administracion-linux.blogspot.com/2009/10/graficas-con-gnuplot.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/1141697813542923529'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/1141697813542923529'/><link rel='alternate' type='text/html' href='http://administracion-linux.blogspot.com/2009/10/graficas-con-gnuplot.html' title='Gráficas con gnuplot'/><author><name>Juan Antonio Izquierdo Gómez</name><uri>https://profiles.google.com/100010759467986112292</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-QheVbom_7Uo/AAAAAAAAAAI/AAAAAAAAAag/Ko044HYFPRs/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_oL72OGP7TPY/Ssojz2Gck6I/AAAAAAAAALc/RuOx4h8XF74/s72-c/uso_home_boxes.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2288057976592669667.post-8856335977561245773</id><published>2009-10-04T09:00:00.002+02:00</published><updated>2009-10-04T09:00:05.571+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='shell script'/><title type='text'>Creación de logs</title><content type='html'>Si queremos monitorizar un valor en un pc o servidor, lo mejor será automatizar el proceso de obtención del valor y almacenarlos en un log. Para ello haremos uso de &lt;i&gt;cron&lt;/i&gt;. Supongamos que el valor a capturar es la recurrente ocupación de la partición &lt;i&gt;/home&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Paso 1&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Vamos a crear el script que se ejecutará periódicamente:&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;#!/bin/sh&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;FECHA=`date +%Y-%m-%d:%H:%M`&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;VALOR=`df | grep /home | tr -s "&amp;nbsp; " " " | cut -d " " -f 5 | tr -d "%"`&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;echo $FECHA $VALOR &amp;gt;&amp;gt; /var/log/ocupacion_home.log&lt;/span&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;Al fichero &lt;/span&gt;del script lo vamos a llamar &lt;i&gt;ocupacion_home.sh&lt;/i&gt; y lo vamos a guardar en &lt;i&gt;/usr/local/bin/&lt;/i&gt; (estando como usuario &lt;i&gt;root&lt;/i&gt;).&lt;br /&gt;&lt;br /&gt;Se pueden escoger otros formatos de fecha, aunque este lo veo bastante útil.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Paso 2&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Le daremos al fichero del script permisos de ejecución:&lt;br /&gt;&lt;b&gt; &lt;/b&gt;&lt;br /&gt;&lt;b&gt; &lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# chmod +x /usr/local/bin/ocupacion_home.sh&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;Paso 3&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;A continuación vamos a programar &lt;i&gt;cron&lt;/i&gt; para que ejecute este comando una vez cada hora. Ejecutar el comando:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;crontab -e&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif; text-align: left;"&gt;Se abrirá un editor (el que tengamos por defecto*) en el que tendremos que escribir lo siguiente:&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif; text-align: center;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;0 * * * * /usr/local/bin/ocupacion_home.sh&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;Guardaremos y saldremos del editor. En este momento, de manera automática se registrará cada hora en punto la ocupación de nuestra partición &lt;i&gt;/home&lt;/i&gt;.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;Si se desea programar otra periodicidad, recomiendo leer el manual de &lt;i&gt;cron&lt;/i&gt; o este otro &lt;a href="http://es.wikipedia.org/wiki/Cron_%28Unix%29"&gt;enlace&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;i&gt;* &lt;/i&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;Si queremos usar un editor determinado, por ejemplo &lt;i&gt;vi&lt;/i&gt;, ejecutaremos lo siguiente:&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;export EDITOR=vi &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;Tras esto podremos ejecutar &lt;i&gt;crontab -e&lt;/i&gt; pues se abrirá con &lt;i&gt;vi&lt;/i&gt;. Si queremos hacer que este editor sea siempre nuestro editor predeterminado, habrá que incluir al final del fichero &lt;i&gt;~/.bashrc&lt;/i&gt; la linea anterior.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2288057976592669667-8856335977561245773?l=administracion-linux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://administracion-linux.blogspot.com/feeds/8856335977561245773/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://administracion-linux.blogspot.com/2009/10/creacion-de-logs.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/8856335977561245773'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/8856335977561245773'/><link rel='alternate' type='text/html' href='http://administracion-linux.blogspot.com/2009/10/creacion-de-logs.html' title='Creación de logs'/><author><name>Juan Antonio Izquierdo Gómez</name><uri>https://profiles.google.com/100010759467986112292</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-QheVbom_7Uo/AAAAAAAAAAI/AAAAAAAAAag/Ko044HYFPRs/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2288057976592669667.post-8607124605543960936</id><published>2009-10-03T18:14:00.000+02:00</published><updated>2009-10-03T18:19:52.823+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='shell script'/><title type='text'>Monitorizar valor</title><content type='html'>Supongamos que queremos tener un terminal abierto y controlar en él la ocupación de &lt;i&gt;/home&lt;/i&gt; (o cualquier otra cosa). Tenemos dos opciones:&lt;br /&gt;&lt;br /&gt;1. Ejecutar manualmente cada vez que queramos obtener el valor el comando:&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;df | grep /home | tr -s "&amp;nbsp; " " " | cut -d " " -f 5 | tr -d "%"&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;2. Decirle a un programita muy cachondo que lo ejecute cada x tiempo:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;watch -n 1 'df | grep /home | tr -s "&amp;nbsp; " " " | cut -d " " -f 5 | tr -d "%"'&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif; text-align: left;"&gt;El parámetro &lt;span style="font-family: inherit;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;-n 1&lt;/span&gt; especifica que el comando que denotamos entre las comillas simples se ejecute cada segundo.&lt;/span&gt; Por supuesto, este comando tiene otros muchos parámetros con los que jugar y afinarlo a nuestros propósitos.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2288057976592669667-8607124605543960936?l=administracion-linux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://administracion-linux.blogspot.com/feeds/8607124605543960936/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://administracion-linux.blogspot.com/2009/10/monitorizar-valor.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/8607124605543960936'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/8607124605543960936'/><link rel='alternate' type='text/html' href='http://administracion-linux.blogspot.com/2009/10/monitorizar-valor.html' title='Monitorizar valor'/><author><name>Juan Antonio Izquierdo Gómez</name><uri>https://profiles.google.com/100010759467986112292</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-QheVbom_7Uo/AAAAAAAAAAI/AAAAAAAAAag/Ko044HYFPRs/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2288057976592669667.post-2996683930540592104</id><published>2009-10-02T18:54:00.002+02:00</published><updated>2009-10-02T19:36:49.227+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='shell script'/><title type='text'>Obtener ocupación de partición</title><content type='html'>Todos los sistemas Unix-like tienen una serie de comandos comunes que, aunque por separado hacen pequeñas cosas, combinándolos consiguen preciados objetivos.&lt;br /&gt;&lt;br /&gt;Voy a indicar la forma de obtener el porcentaje de uso de una partición, por ejemplo &lt;i&gt;/home&lt;/i&gt; de nuestra máquina. Esto nos será de mucha utilidad cuando nos propongamos monitorizar las particiones un servidor:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;df | grep /home | tr -s "&amp;nbsp; " " " | cut -d " " -f 5 | tr -d "%"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Aunque este tocho pueda parecer largo y poco comprensible, en realidad es muy sencillo y algunos de estos comandos los usaréis muchísimo en cientos de scripts.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://es.wikipedia.org/wiki/Jack_el_Destripador"&gt;Vayamos por partes:&lt;/a&gt;&lt;br /&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;1. &lt;/span&gt;df&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;: muestra el uso de nuestras particiones. Su salida sería:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;S.ficheros&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Bloques de 1K&amp;nbsp;&amp;nbsp; Usado&amp;nbsp;&amp;nbsp;&amp;nbsp; Dispon Uso% Montado en&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;/dev/sda1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7692876&amp;nbsp;&amp;nbsp; 3376756&amp;nbsp;&amp;nbsp; 3925344&amp;nbsp; 47% /&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;tmpfs&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 509272&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp; 509272&amp;nbsp;&amp;nbsp; 0% /lib/init/rw&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;varrun&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 509272&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 116&amp;nbsp;&amp;nbsp;&amp;nbsp; 509156&amp;nbsp;&amp;nbsp; 1% /var/run&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;varlock&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 509272&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp; 509272&amp;nbsp;&amp;nbsp; 0% /var/lock&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;udev&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 509272&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 144&amp;nbsp;&amp;nbsp;&amp;nbsp; 509128&amp;nbsp;&amp;nbsp; 1% /dev&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;tmpfs&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 509272&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 144&amp;nbsp;&amp;nbsp;&amp;nbsp; 509128&amp;nbsp;&amp;nbsp; 1% /dev/shm&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;/dev/sda3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 144173428&amp;nbsp; 21509424 115340376&amp;nbsp; 16% /home&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: inherit;"&gt;Pero a nosotros solo nos interesa el valor de &lt;i&gt;/home&lt;/i&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;2. &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;grep /home&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;: Se queda con las líneas que contengan esa palabra. En nuestro caso es únicamente la que nos interesa.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;3. &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;tr -s "&amp;nbsp; " " "&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;: Si os fijáis, &lt;i&gt;df&lt;/i&gt; nos devuelve varias columnas separadas entre sí por espacios. Podríamos pensar que el porcentaje de uso de &lt;i&gt;/home&lt;/i&gt; siempre aparecerá en el caracter 54 y/o 55, pero si nos vamos a otro PC o servidor esto puede cambiar. Así, nos interesará que la separación entre columna y columna sea tan solo de un espacio, para tenerlo todo controlado. Este comando sustituye toda pareja de espacios consecutivos que vea por uno solo. Por tanto, termina de ejecutarse cuando entre columna y columna nos queda solo un espacio.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: inherit;"&gt;En este punto, tras ejecutar &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;df | grep /home | tr -s "&amp;nbsp; " " "&lt;/span&gt; &lt;span style="font-size: small;"&gt;tendríamos:&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;/dev/sda3 144173428 21509432 115340368 16% /home&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;4. &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;cut -d " " -f 5&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;: Ahora lo que hacemos con este comando es decir: queremos el campo (field) 5 (que es donde está el valor de ocupación) suponiendo el delimitador entre campo y campo " "&lt;/span&gt;. Con todos estos comandos enlazados, nos queda:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;16%&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt;5.&lt;/span&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;tr -d "%"&lt;/span&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt;: Por último, si no nos apetece que aparezca el símbolo de porcentaje, podemos eliminarlo con este comando (&lt;i&gt;-d &lt;/i&gt;de delete):&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;16&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Como nota decir que cada uno de estos comandos permite realizar muchas otras acciones, pudiéndose modificar con los parámetros que aceptan. Se recomienda leer las páginas del manual (&lt;i&gt;man&lt;/i&gt;) para conocerlas en profundidad.&lt;br /&gt;&lt;br /&gt;Recordad: esta sencilla técnica de obtener el valor de una columna la usaréis a menudo para muchos otros fines.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2288057976592669667-2996683930540592104?l=administracion-linux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://administracion-linux.blogspot.com/feeds/2996683930540592104/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://administracion-linux.blogspot.com/2009/10/obtener-ocupacion-de-particion.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/2996683930540592104'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/2996683930540592104'/><link rel='alternate' type='text/html' href='http://administracion-linux.blogspot.com/2009/10/obtener-ocupacion-de-particion.html' title='Obtener ocupación de partición'/><author><name>Juan Antonio Izquierdo Gómez</name><uri>https://profiles.google.com/100010759467986112292</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-QheVbom_7Uo/AAAAAAAAAAI/AAAAAAAAAag/Ko044HYFPRs/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2288057976592669667.post-1929607906861046409</id><published>2009-10-02T18:07:00.000+02:00</published><updated>2009-10-02T18:07:19.682+02:00</updated><title type='text'>Bienvenida</title><content type='html'>Hola a todos,&lt;br /&gt;&lt;br /&gt;En primer lugar gracias por visitar este humilde blog. Pretendo convertirlo en un cuaderno de anotaciones sobre scripts, comandos, trucos, utilidades o resolución de problemas que voy creando o encontrando en el día a día de mi trabajo como administrador de sistemas Linux.&lt;br /&gt;&lt;br /&gt;Ante todo decir que no soy un experto en nada, pero espero que en este blog encontréis un punto de vista distinto a la hora de hacer algo en particular, o la resolución a un problema que podáis tener.&lt;br /&gt;&lt;br /&gt;Actualmente trabajo con una Ubuntu y me gusta bastante (como buen administrador) el uso de la consola, la creación de scripts sh o python para automatizar tareas y seguir aprendiendo en el uso de estas herramientas.&lt;br /&gt;&lt;br /&gt;Nada más, espero que les guste el blog.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2288057976592669667-1929607906861046409?l=administracion-linux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://administracion-linux.blogspot.com/feeds/1929607906861046409/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://administracion-linux.blogspot.com/2009/10/bienvenida.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/1929607906861046409'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2288057976592669667/posts/default/1929607906861046409'/><link rel='alternate' type='text/html' href='http://administracion-linux.blogspot.com/2009/10/bienvenida.html' title='Bienvenida'/><author><name>Juan Antonio Izquierdo Gómez</name><uri>https://profiles.google.com/100010759467986112292</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-QheVbom_7Uo/AAAAAAAAAAI/AAAAAAAAAag/Ko044HYFPRs/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry></feed>
