<?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-5540592517189527424</id><updated>2011-04-21T21:31:28.208+02:00</updated><category term='openvpn'/><category term='nagios'/><category term='optimización'/><category term='colorines'/><category term='monitorizacion'/><category term='vi'/><category term='escaner de puertos'/><category term='gentoo'/><category term='seguridad'/><category term='utilidades'/><category term='perl'/><title type='text'>emerge world</title><subtitle type='html'>Linux, Linux y más Linux ;)</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://emergeworld.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540592517189527424/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://emergeworld.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>jgascon</name><uri>http://www.blogger.com/profile/04223930737340695560</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>14</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5540592517189527424.post-2668011060973943132</id><published>2007-12-29T20:25:00.000+01:00</published><updated>2008-12-10T05:39:22.266+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='monitorizacion'/><category scheme='http://www.blogger.com/atom/ns#' term='colorines'/><title type='text'>Monitorización de procesos: pgrep, pkill y psg</title><content type='html'>Muchas veces os habréis encontrado con que queréis matar una aplicación que no responde y al hacer un ps veis que hay varios procesos que pertenecen a la misma aplicación, entonces no que más remedio que matar los procesos uno a uno. Bueno, eso era así antes de conocer pgrep y pkill. pgrep es una herramienta que dado un nombre de proceso muestra por pantalla los pid's de todos los procesos con ese nombre y pkill es su complemento que en lugar de mostrar los procesos los mata directamente.&lt;br /&gt;&lt;br /&gt;Ejecutaremos unas cuantas veces yes redirigiendo su salida a /dev/null y poniendo el proceso en background para tener algo con lo que trabajar:&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;jgr@seiya ~ $ yes &amp;amp;&gt; /dev/null &amp;amp; yes &amp;amp;&gt; /dev/null &amp;amp; yes &amp;amp;&gt; /dev/null &amp;amp;&lt;br /&gt;[1] 3670&lt;br /&gt;[2] 3671&lt;br /&gt;[3] 3672&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Si hacemos ahora un ps de los de toda la vida veremos esto (la última línea es el propio grep):&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;jgr@seiya ~ $ ps aux | grep yes&lt;br /&gt;jgr       3670 42.8  0.0   4164   584 pts/2    R    20:12   0:19 yes&lt;br /&gt;jgr       3671 41.4  0.0   4164   584 pts/2    R    20:12   0:19 yes&lt;br /&gt;jgr       3672 42.8  0.0   4164   584 pts/2    R    20:12   0:19 yes&lt;br /&gt;jgr       4244  0.0  0.0   6368   808 pts/2    S+   20:13   0:00 grep --colour=auto yes&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Ahora con pgrep veremos sólo los pid's de los procesos:&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;jgr@seiya ~ $ pgrep yes&lt;br /&gt;3670&lt;br /&gt;3671&lt;br /&gt;3672&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Y con pkill los matamos y con pgrep comprobaremos que estén realmente muertos:&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;jgr@seiya ~ $ pgrep yes&lt;br /&gt;[1]   Terminado               yes &gt;&amp;amp;/dev/null&lt;br /&gt;[2]-  Terminado               yes &gt;&amp;amp;/dev/null&lt;br /&gt;[3]+  Terminado               yes &gt;&amp;amp;/dev/null&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;pgrep y pkill tienen algunas opciones interesantes como por ejemplo -l para mostrar el nombre de los procesos (sólo pgrep) o -u/-U para mostrar o matar sólo los procesos del usuario especificado y alguna más que podéis ver en el man de pgrep.&lt;br /&gt;&lt;br /&gt;Bueno y ya que estamos con ps os enseñaré un alias que suelo usar en el .bashrc para hacer más cómodo el uso de ps:&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;export GREP_COLOR="1;32" #verde claro&lt;br /&gt;alias grep='grep --colour=auto'&lt;br /&gt;alias psg="ps aux | grep -v grep | grep"&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Básicamente lo que hacen estos alias es colorear las concordancias del grep y eliminar la última línea de la salida del ps que corresponde al propio grep. Aquí podéis ver un ejemplo otra vez con el proceso yes del ejemplo anterior:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_2AGZGO7JvnQ/R3agPBGIhGI/AAAAAAAAAA0/u1p_xyBIUZM/s1600-h/61fin.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_2AGZGO7JvnQ/R3agPBGIhGI/AAAAAAAAAA0/u1p_xyBIUZM/s400/61fin.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5149479403797382242" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5540592517189527424-2668011060973943132?l=emergeworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emergeworld.blogspot.com/feeds/2668011060973943132/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5540592517189527424&amp;postID=2668011060973943132&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540592517189527424/posts/default/2668011060973943132'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540592517189527424/posts/default/2668011060973943132'/><link rel='alternate' type='text/html' href='http://emergeworld.blogspot.com/2007/12/monitorizacin-de-procesos-pgrep-pkill-y.html' title='Monitorización de procesos: pgrep, pkill y psg'/><author><name>jgascon</name><uri>http://www.blogger.com/profile/04223930737340695560</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_2AGZGO7JvnQ/R3agPBGIhGI/AAAAAAAAAA0/u1p_xyBIUZM/s72-c/61fin.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5540592517189527424.post-4024042691361341205</id><published>2007-12-14T19:17:00.000+01:00</published><updated>2007-12-14T19:26:19.996+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vi'/><category scheme='http://www.blogger.com/atom/ns#' term='colorines'/><title type='text'>Ver páginas de man con vim</title><content type='html'>Un sencillo truco para usar vim como paginador de man en dos pasos:&lt;br /&gt;&lt;br /&gt;1.- Añadid a vuestro .bashrc&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;export MANPAGER="col -b | view -c 'set ft=man nomod nolist' -" &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;2.- Recargad las variables de entorno para poder usarlo en la shell actual:&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;source ~/.bashrc&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Ya está ya podéis usar vi para ver páginas de man ;)&lt;br /&gt;&lt;br /&gt;Ésta es la página de dónde he sacado el truco:&lt;br /&gt;&lt;a href="http://vim.sourceforge.net/tips/tip.php?tip_id=167"&gt;Tip #167: Using vim as a man-page viewer under Unix&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5540592517189527424-4024042691361341205?l=emergeworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emergeworld.blogspot.com/feeds/4024042691361341205/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5540592517189527424&amp;postID=4024042691361341205&amp;isPopup=true' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540592517189527424/posts/default/4024042691361341205'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540592517189527424/posts/default/4024042691361341205'/><link rel='alternate' type='text/html' href='http://emergeworld.blogspot.com/2007/12/ver-pginas-de-man-con-vim.html' title='Ver páginas de man con vim'/><author><name>jgascon</name><uri>http://www.blogger.com/profile/04223930737340695560</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5540592517189527424.post-7232370293501198161</id><published>2007-08-09T13:28:00.000+02:00</published><updated>2007-08-09T13:40:22.352+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><category scheme='http://www.blogger.com/atom/ns#' term='colorines'/><title type='text'>logs de colores</title><content type='html'>Últimamente andaba buscando la forma de colorear la salida de tail para poder leer más fácilmente los logs de mis máquinas. Ayer encontré esta página de&lt;a href="http://strcat.de/wiki/hacks:some_quick_and_dirty_hacks"&gt;"trucos sucios y rápidos"&lt;/a&gt; la solución. Para usar el script, copiarlo a algún lugar del PATH de vuestra máquina (p.e. /usr/local/bin) dadle permiso de ejecución y ejecutrarlo de la siguiente manera:&lt;br /&gt;&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;tail -f /var/log/messages | colorlog.pl&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Enseguida notaréis la diferencia ;)&lt;br /&gt;&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;#!/usr/bin/perl&lt;br /&gt; &lt;br /&gt;$black    = "\033[30m";&lt;br /&gt;$red      = "\033[31m";&lt;br /&gt;$green    = "\033[32m";&lt;br /&gt;$yellow   = "\033[33m";&lt;br /&gt;$blue     = "\033[34m";&lt;br /&gt;$magenta  = "\033[35m";&lt;br /&gt;$purple   = "\033[35m";&lt;br /&gt;$cyan     = "\033[36m";&lt;br /&gt;$white    = "\033[37m";&lt;br /&gt;$darkgray = "\033[30m";&lt;br /&gt;@word_good=("starting\n", "Freeing", "Detected", "starting.", "accepted.\n", "authenticated.\n", "Ready", "active", "reloading", "saved;", "restarting", "ONLINE\n");&lt;br /&gt;@word_warn=("dangling", "closed.\n", "Assuming", "root", "root\n", "exiting\n", "missing", "Ignored", "adminalert:", "deleting", "OFFLINE\n");&lt;br /&gt;@word_bad=("bad");&lt;br /&gt;@word_note=("LOGIN", "DHCP_OFFER", "optimized", "reset:", "unloaded", "disconnected", "connect", "Successful", "registered\n");&lt;br /&gt;@line_good=("up", "DHCP_ACK", "Cleaned", "Initializing", "Starting", "success", "successfully", "alive", "found", "ONLINE\n");&lt;br /&gt;@line_warn=("warning:", "WARNING:", "invalid", "obsolete", "bad", "Password", "detected", "timeout", "timeout:", "attackalert:", "wrong", "Lame", "FAILED", "failing", "unknown", "obsolete", "stopped.\n", "terminating.", "disabled\n", "disabled", "Lost");&lt;br /&gt;@line_bad=("DENY", "lost", "shutting", "dead", "DHCP_NAK", "failure;", "Unable", "inactive", "terminating", "refused", "rejected", "down", "OFFLINE\n", "error\n", "ERROR\n", "ERROR:", "error", "ERROR", "error:", "failed:");&lt;br /&gt;@daemons=("named");&lt;br /&gt;$col_good = $green;&lt;br /&gt;$col_warn = $yellow;&lt;br /&gt;$col_bad = $red;&lt;br /&gt;$col_note = $purple;&lt;br /&gt;$col_norm =  "\033[00m";&lt;br /&gt;$col_background = "\033[07m";&lt;br /&gt;$col_brighten =  "\033[01m";&lt;br /&gt;$col_underline =  "\033[04m";&lt;br /&gt;$col_blink =   "\033[05m";&lt;br /&gt;$col_default = "$col_norm$white";&lt;br /&gt;print "$col_norm$cyan";&lt;br /&gt;$datespace=0;&lt;br /&gt;mainloop: while (&lt;&gt;)&lt;br /&gt;{&lt;br /&gt; $thisline = $_;&lt;br /&gt; $timestamp = substr($_,0,15);&lt;br /&gt; s/................//;&lt;br /&gt; @rec = split (/ /, $_);&lt;br /&gt; $output="$col_brighten$cyan$timestamp"; &lt;br /&gt; $output.=" $col_brighten$blue$rec[0]"; &lt;br /&gt; if ($rec[1] eq "last")&lt;br /&gt; {&lt;br /&gt;  $output.="$col_norm$green last message repeated ";&lt;br /&gt;  $output.="$col_brighten$rec[4]$col_norm$green times\n";&lt;br /&gt;  print "$output$col_default";&lt;br /&gt;  next mainloop;&lt;br /&gt; }&lt;br /&gt; if ($rec[1] =~ /\[(\d+)\]\:/)&lt;br /&gt; {&lt;br /&gt;  my($pid) = $1;&lt;br /&gt;  $rec[1]=~s/\[$1\]\:// ;&lt;br /&gt;  $output .= "$col_norm$green $rec[1]" .&lt;br /&gt;             "$col_brighten$green\[";&lt;br /&gt;  $output .= "$col_brighten$white$pid" .&lt;br /&gt;             "$col_brighten$green\]: ";&lt;br /&gt; }&lt;br /&gt; else {&lt;br /&gt;  $output .= "$col_norm$green $rec[1] ";&lt;br /&gt; }&lt;br /&gt; $restcolor="$col_norm$cyan";&lt;br /&gt; $restoftheline="";&lt;br /&gt; for ($therest=(2); $therest&lt;=$#rec; $therest++)&lt;br /&gt; { $highlight=0;&lt;br /&gt;  for ($i=0; $i&lt;=$#word_good; $i++)&lt;br /&gt;  { if ($word_good[$i] eq $rec[$therest])&lt;br /&gt;   { $restoftheline.="$col_brighten$col_good"; $highlight=1; }&lt;br /&gt;  }&lt;br /&gt;  for ($i=0; $i&lt;=$#word_warn; $i++)&lt;br /&gt;  { if ($word_warn[$i] eq $rec[$therest])&lt;br /&gt;   { $restoftheline.="$col_brighten$col_warn"; $highlight=1; } &lt;br /&gt;  }&lt;br /&gt;  for ($i=0; $i&lt;=$#word_bad; $i++)&lt;br /&gt;  { if ($word_bad[$i] eq $rec[$therest])&lt;br /&gt;   { $restoftheline.="$col_brighten$col_bad"; $highlight=1; } &lt;br /&gt;  }&lt;br /&gt;  for ($i=0; $i&lt;=$#word_note; $i++) &lt;br /&gt;  { if ($word_note[$i] eq $rec[$therest])&lt;br /&gt;   { $restoftheline.="$col_brighten$col_note"; $highlight=1; } &lt;br /&gt;  }&lt;br /&gt;  for ($i=0; $i&lt;=$#line_good; $i++)&lt;br /&gt;  { if ($line_good[$i] eq $rec[$therest])&lt;br /&gt;   { $restcolor="$col_norm$col_good";&lt;br /&gt;     $restoftheline.="$col_brighten$col_good"; $highlight=1; }&lt;br /&gt;  }&lt;br /&gt;  for ($i=0; $i&lt;=$#line_warn; $i++)&lt;br /&gt;  { if ($line_warn[$i] eq $rec[$therest])&lt;br /&gt;   { $restcolor="$col_norm$col_warn";&lt;br /&gt;     $restoftheline.="$col_brighten$col_warn"; $highlight=1; }&lt;br /&gt;  }&lt;br /&gt;  for ($i=0; $i&lt;=$#line_bad; $i++)&lt;br /&gt;  { if ($line_bad[$i] eq $rec[$therest])&lt;br /&gt;   { $restcolor="$col_norm$col_bad";&lt;br /&gt;     $restoftheline.="$col_brighten$col_bad"; $highlight=1; }&lt;br /&gt;  }&lt;br /&gt;  $restoftheline.="$rec[$therest] ";&lt;br /&gt;  if ($highlight == 1)&lt;br /&gt;  { $restoftheline.=$restcolor; }&lt;br /&gt; }&lt;br /&gt; $output.="$restcolor$restoftheline";&lt;br /&gt; print "$output$col_default\033[1G";&lt;br /&gt;}&lt;br /&gt;exit(0);&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5540592517189527424-7232370293501198161?l=emergeworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emergeworld.blogspot.com/feeds/7232370293501198161/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5540592517189527424&amp;postID=7232370293501198161&amp;isPopup=true' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540592517189527424/posts/default/7232370293501198161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540592517189527424/posts/default/7232370293501198161'/><link rel='alternate' type='text/html' href='http://emergeworld.blogspot.com/2007/08/logs-de-colores.html' title='logs de colores'/><author><name>jgascon</name><uri>http://www.blogger.com/profile/04223930737340695560</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5540592517189527424.post-5409146028904199771</id><published>2007-08-04T17:34:00.000+02:00</published><updated>2007-08-09T13:39:20.174+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vi'/><category scheme='http://www.blogger.com/atom/ns#' term='colorines'/><title type='text'>Reasaltado de sintaxis en archivos sin extensión</title><content type='html'>Muchas veces os habréis encontrado archivos sin extensión pero que son archivos fuente de algún tipo (scripts de perl, archivos de configuración xml, etc) y que al editarlos con vim aparecen sin resaltado de sintaxis. Esto se soluciona fácilmente con la siguiente orden (en el modo de órdenes de vim):&lt;br /&gt;&lt;br /&gt;&lt;pre class=programlisting&gt;&lt;br /&gt;set filetype=tipo_de_archivo&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Por ejemplo para un archivo xml:&lt;br /&gt;&lt;pre class=programlisting&gt;&lt;br /&gt;set filetype=xml&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5540592517189527424-5409146028904199771?l=emergeworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emergeworld.blogspot.com/feeds/5409146028904199771/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5540592517189527424&amp;postID=5409146028904199771&amp;isPopup=true' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540592517189527424/posts/default/5409146028904199771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540592517189527424/posts/default/5409146028904199771'/><link rel='alternate' type='text/html' href='http://emergeworld.blogspot.com/2007/08/reasaltado-de-sintaxis-en-archivos-sin.html' title='Reasaltado de sintaxis en archivos sin extensión'/><author><name>jgascon</name><uri>http://www.blogger.com/profile/04223930737340695560</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5540592517189527424.post-757141230732612946</id><published>2007-07-20T18:47:00.000+02:00</published><updated>2007-08-04T17:34:37.692+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='optimización'/><title type='text'>Usando sysctl para optimizar la pila TCP/IP</title><content type='html'>sysctl es una herramienta que nos permite modificar el comportamiento del kernel en vivo. Esto significa que las modificaciones que hagamos se aplican instantaneamente sin tener que reiniciar la máquina. Además si añadimos los cambios que vayamos a hacer al archivo /etc/sysctl.conf estos cambios se aplicarán cada vez que se arranque la máquina. sysctl realiza estos cambios a través del sistema de archivos virtual /proc que permite la comunicación directa con el kernel.&lt;br /&gt;&lt;br /&gt;El uso de sysctl es muy sencillo. Para listar las variables que podemos modificar basta con ejecutar: &lt;br /&gt;&lt;br /&gt;&lt;pre class=programlisting&gt;&lt;br /&gt;# sysctl -a&lt;br /&gt;sunrpc.max_resvport = 1023&lt;br /&gt;sunrpc.min_resvport = 665&lt;br /&gt;sunrpc.tcp_slot_table_entries = 16&lt;br /&gt;sunrpc.udp_slot_table_entries = 16&lt;br /&gt;sunrpc.nlm_debug = 0&lt;br /&gt;sunrpc.nfsd_debug = 0&lt;br /&gt;sunrpc.nfs_debug = 0&lt;br /&gt;sunrpc.rpc_debug = 0&lt;br /&gt;...&lt;br /&gt;# He recortado la salida porque es bastante extensa&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Como podéis el esquema es "nombre de la variable" = "valor". Muchas de estas variables son boleanas un 0 significa que están deshabilitadas y un 1 que están habilitadas. Si conocemos el nombre de la variable que queremos modificar bastará filtrar la salida de la orden anterior con grep para conocer su valor, p.e:&lt;br /&gt;&lt;br /&gt;&lt;pre class=programlisting&gt;&lt;br /&gt;sysctl -a | grep 'ipv4.ip_forward'&lt;br /&gt;net.ipv4.ip_forward = 1&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Para que nuestros cambios sean permanentes y además queden documentados lo mejor es editar el archivo /etc/sysctl.conf. A continuación os pego un ejemplo:&lt;br /&gt;&lt;br /&gt;&lt;pre class=programlisting&gt;&lt;br /&gt;# Hablitar reenvío de paquetes (modo router)&lt;br /&gt;net.ipv4.ip_forward = 1&lt;br /&gt;&lt;br /&gt;# Habilitar IP dinámica&lt;br /&gt;net.ipv4.ip_dynaddr = 1&lt;br /&gt;&lt;br /&gt;# Deshabilitar ECN (señalizador de congestión en la línea)&lt;br /&gt;net.ipv4.tcp_ecn = 0&lt;br /&gt;&lt;br /&gt;# Habilitar verificación del origen de la ruta (ayuda a &lt;br /&gt;# a prevenir el IP Spoofing)&lt;br /&gt;net.ipv4.conf.default.rp_filter = 1&lt;br /&gt;net.ipv4.conf.all.rp_filter = 1&lt;br /&gt;&lt;br /&gt;# Habilitar SYN cookies (protege contra un ataque de desbordamiento&lt;br /&gt;# de paquetes SYN http://cr.yp.to/syncookies.html&lt;br /&gt;net.ipv4.tcp_syncookies = 1&lt;br /&gt;&lt;br /&gt;# Deshabilitar enrutamiento de origen (el enrutamiento de origen&lt;br /&gt;# se considera peligroso)&lt;br /&gt;net.ipv4.conf.all.accept_source_route = 0&lt;br /&gt;net.ipv4.conf.default.accept_source_route = 0&lt;br /&gt;&lt;br /&gt;# Deshabilitar paquetes de redireccionamiento icmp&lt;br /&gt;net.ipv4.conf.all.accept_redirects = 0&lt;br /&gt;net.ipv4.conf.default.accept_redirects = 0&lt;br /&gt;net.ipv4.conf.all.secure_redirects = 0&lt;br /&gt;net.ipv4.conf.default.secure_redirects = 0&lt;br /&gt;&lt;br /&gt;# Ignorar broadcasts icmp&lt;br /&gt;net.ipv4.icmp_echo_ignore_broadcasts = 1&lt;br /&gt;&lt;br /&gt;# No loguear paquetes icmp defectuosos&lt;br /&gt;net.ipv4.icmp_ignore_bogus_error_responses = 1&lt;br /&gt;&lt;br /&gt;# Desactivar marcas de tiempo. Con conexiones menores de 10mbps &lt;br /&gt;# son innecesarias&lt;br /&gt;net.ipv4.tcp_timestamps = 0&lt;br /&gt;&lt;br /&gt;# Reducir el tiempo tcp_fin_timeout. Reduce el tiempo que &lt;br /&gt;# permanece el socket abierto al cerrar una conexión.&lt;br /&gt;net.ipv4.tcp_fin_timeout = 25&lt;br /&gt;&lt;br /&gt;# Reducir tiempo entre keepalives. Cada cuanto tiempo se deben&lt;br /&gt;# mandar paquetes para mantener abierta una conexión viva pero&lt;br /&gt;# que no está siendo usada.&lt;br /&gt;net.ipv4.tcp_keepalive_time = 1200&lt;br /&gt;&lt;br /&gt;# Aumentar el búfer para los paquetes SYN&lt;br /&gt;net.ipv4.tcp_max_syn_backlog = 1024&lt;br /&gt;&lt;br /&gt;# Reducir los reintentos de conexión&lt;br /&gt;net.ipv4.tcp_synack_retries = 2&lt;br /&gt;net.ipv4.tcp_syn_retries = 3&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Una vez editado el archivo aplicamos los cambios:&lt;br /&gt;&lt;br /&gt;&lt;pre class=programlisting&gt;&lt;br /&gt;# sysctl -p /etc/sysctl.conf&lt;br /&gt;net.ipv4.ip_forward = 1&lt;br /&gt;net.ipv4.ip_dynaddr = 1&lt;br /&gt;net.ipv4.tcp_ecn = 0&lt;br /&gt;net.ipv4.conf.default.rp_filter = 1&lt;br /&gt;net.ipv4.conf.all.rp_filter = 1&lt;br /&gt;net.ipv4.tcp_syncookies = 1&lt;br /&gt;net.ipv4.conf.all.accept_source_route = 0&lt;br /&gt;net.ipv4.conf.default.accept_source_route = 0&lt;br /&gt;net.ipv4.conf.all.accept_redirects = 0&lt;br /&gt;net.ipv4.conf.default.accept_redirects = 0&lt;br /&gt;net.ipv4.conf.all.secure_redirects = 0&lt;br /&gt;net.ipv4.conf.default.secure_redirects = 0&lt;br /&gt;net.ipv4.icmp_echo_ignore_broadcasts = 1&lt;br /&gt;net.ipv4.icmp_ignore_bogus_error_responses = 1&lt;br /&gt;net.ipv4.tcp_timestamps = 0&lt;br /&gt;net.ipv4.tcp_fin_timeout = 25&lt;br /&gt;net.ipv4.tcp_keepalive_time = 1200&lt;br /&gt;net.ipv4.tcp_max_syn_backlog = 1024&lt;br /&gt;net.ipv4.tcp_synack_retries = 2&lt;br /&gt;net.ipv4.tcp_syn_retries = 3&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;La salida nos muestra los cambios aplicados. Podéis encontrar el significado y lo valores que puede tomar cada variable en este &lt;a href="http://ipsysctl-tutorial.frozentux.net/ipsysctl-tutorial.html"&gt;tutorial&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5540592517189527424-757141230732612946?l=emergeworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emergeworld.blogspot.com/feeds/757141230732612946/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5540592517189527424&amp;postID=757141230732612946&amp;isPopup=true' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540592517189527424/posts/default/757141230732612946'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540592517189527424/posts/default/757141230732612946'/><link rel='alternate' type='text/html' href='http://emergeworld.blogspot.com/2007/07/usando-sysctl-para-optimizar-la-pila.html' title='Usando sysctl para optimizar la pila TCP/IP'/><author><name>jgascon</name><uri>http://www.blogger.com/profile/04223930737340695560</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5540592517189527424.post-4886612529100316300</id><published>2007-07-18T18:36:00.000+02:00</published><updated>2007-07-19T15:54:11.938+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='escaner de puertos'/><category scheme='http://www.blogger.com/atom/ns#' term='seguridad'/><title type='text'>Cómo listar los puertos abiertos de una máquina</title><content type='html'>VeRTiTo de &lt;a href="http://vertito.blogspot.com"&gt;A SYSAD BLOG - LINUX&lt;/a&gt; y yo hemos llegado a un acuerdo de colaboración por el cual yo traduciré algunos de los posts de su blog que me parezcan interesantes y él hará lo mismo con los míos. Así que empezaré con este pequeño howto del blog de VeRTiTo: &lt;a href="http://vertito.blogspot.com/2007/07/list-out-opened-host-ports-howto.html"&gt;list out opened host ports howto&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Los puertos abiertos son normalmente la manera no-física más directa de forzar la entrada remotamente.&lt;br /&gt;&lt;br /&gt;Aquí encontraréis varias herramientas y formas para listar los puertos abiertos de vuestras máquinas Linux.&lt;br /&gt;&lt;br /&gt;Veamos la primera forma de listar los puertos abiertos y usados:&lt;br /&gt;&lt;br /&gt;&lt;pre class=programlisting&gt;&lt;br /&gt;# netstat -panut | grep LISTEN&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Hemos usado la orden grep para filtrar los puertos que escuchan (LISTEN) de la salida de netstat. O también:&lt;br /&gt;&lt;br /&gt;&lt;pre class=programlisting&gt;&lt;br /&gt;# netstat -ntl&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Echad un vistazo al resultado de ejecutar la orden anterior:&lt;br /&gt;&lt;pre class=programlisting&gt;&lt;br /&gt;tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 6536/sshd&lt;br /&gt;tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 1819/named&lt;br /&gt;tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 1819/named &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Tomando como referencia la primera línea esto es lo que significa cada cosa:&lt;br /&gt;&lt;br /&gt;&lt;pre class=programlisting&gt;&lt;br /&gt;0.0.0.0:* = básicamente significa que el puerto está abierto para todas las IP's de la máquina&lt;br /&gt;tcp = es el protocolo usado por el daemon para establecer la comunicación&lt;br /&gt;22 = es el puerto en el que escucha el daemon&lt;br /&gt;sshd = el daemon/servicio que escucha en este puerto&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Podéis obtener mas o menos la misma información con la siguiente orden:&lt;br /&gt;&lt;br /&gt;&lt;pre class=programlisting&gt;&lt;br /&gt;# ss -a | grep LISTEN&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Cómo listar los puertos abiertos de una máquina&lt;br /&gt;&lt;br /&gt;Ahora usaremos un escáner de puertos más potente sobre la IP de nuestro localhost:&lt;br /&gt;&lt;br /&gt;&lt;pre class=programlisting&gt;&lt;br /&gt;# nmap -P0 localhost&lt;br /&gt;Starting Nmap 4.20 ( http://insecure.org ) at 2007-07-17 22:29 WAT&lt;br /&gt;Interesting ports on yourhost.domain.com (127.0.0.1):&lt;br /&gt;Not shown: 1693 closed ports&lt;br /&gt;PORT STATE SERVICE&lt;br /&gt;22/tcp open ssh&lt;br /&gt;53/tcp open domain&lt;br /&gt;778/tcp open unknown&lt;br /&gt;953/tcp open rndc&lt;br /&gt;&lt;br /&gt;Nmap finished: 1 IP address (1 host up) scanned in 0.082 seconds&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;A menudo se dice que nmap es como una navaja suiza para probar posibles puertos abiertos, eso me recuerda también a netcat, pero no vamos a tratar ese tipo de hacking en este blog ;) Vamos a ver algunas opciones más de nmap:&lt;br /&gt;&lt;br /&gt;&lt;pre class=programlisting&gt;&lt;br /&gt;# man nmap&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Ejecutad:&lt;br /&gt;&lt;br /&gt;&lt;pre class=programlisting&gt;&lt;br /&gt;# nmap -v localhost&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;¿Pero cómo podemos comprobar que un puerto está realmente abierto? Eso es fácil de comprobar con una de las más famosas herramientas usadas con Linux y routers:&lt;br /&gt;&lt;br /&gt;&lt;pre class=programlisting&gt;&lt;br /&gt;# telnet localhost 22&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Haced telnet al puerto 22 de vuestro localhost para ver si el puerto está realmente abierto.&lt;br /&gt;&lt;br /&gt;Si el puerto está realmente abierto conectaréis con el daemon que escuche ese servicio que estará esperando vuestras ordenes. Apretad ctrl+J, intro y salid. ¡No os habéis conectado para hacer nada malo!&lt;br /&gt;&lt;br /&gt;Ahora, ya podéis listar los puertos abiertos y desarrollar herramientas más fiables y conseguir más información sobre vuestras máquinas y sus puertos usando estas ordenes de Linux.&lt;br /&gt;&lt;br /&gt;Recordad que las ordenes de Linux que hemos usado tienen más opciones que las que hemos visto aquí.&lt;br /&gt;&lt;br /&gt;¡Qué tengáis un buen día!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://vertito.blogspot.com/2007/07/list-out-opened-host-ports-howto.html"&gt;Go To The English Version&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5540592517189527424-4886612529100316300?l=emergeworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emergeworld.blogspot.com/feeds/4886612529100316300/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5540592517189527424&amp;postID=4886612529100316300&amp;isPopup=true' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540592517189527424/posts/default/4886612529100316300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540592517189527424/posts/default/4886612529100316300'/><link rel='alternate' type='text/html' href='http://emergeworld.blogspot.com/2007/07/cmo-listar-los-puertos-abiertos-de-una.html' title='Cómo listar los puertos abiertos de una máquina'/><author><name>jgascon</name><uri>http://www.blogger.com/profile/04223930737340695560</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5540592517189527424.post-7992732520560842965</id><published>2007-07-17T22:37:00.000+02:00</published><updated>2007-07-17T23:08:08.329+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><category scheme='http://www.blogger.com/atom/ns#' term='nagios'/><title type='text'>check_mcpu (II)</title><content type='html'>Nueva versión de este plugin de Nagios para comprobar el uso de CPU en máquinas multiprocesador o de un sólo procesador. Le he añadido la opción -u para que en lugar de comprobar la CPU libre (modo predeterminado) compruebe la CPU usada. Esto será de ayuda para la gente como yo a la que le cueste restar ;)&lt;br /&gt;&lt;br /&gt;En el modo predeterminado (modo CPU libre) si quieres saber cuanta CPU está usando la máquina tienes que restar de 100 la CPU usada, lo cual no me parece muy intuitivo, pero la mayoría de programas que he visto para monitorizar CPU's muestran la cantidad de CPU libre. Bueno, ahora al menos en este plugin ya podéis escoger como ver el uso de vuestras CPU's ;)&lt;br /&gt;&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;Este plugin comprueba la cantidad de CPU usada o libre (la opción predeterminada es libre) para múltiples procesadores. Todos los argumentos son opcionales&lt;br /&gt;&lt;br /&gt;Uso: check_mcpu [-w | --warning] &lt;valor&gt; [-c | --critical] &lt;valor&gt; [-r | --reports] &lt;valor&gt; [-i | --interval] &lt;valor&gt;&lt;br /&gt;       check_mcpu -u | --used [-w | --warning] &lt;valor&gt; [-c | --critical] &lt;valor&gt; [-r | --reports] &lt;valor&gt; [-i | --interval] &lt;valor&gt;&lt;br /&gt;       check_mcpu -h | --help&lt;br /&gt;&lt;br /&gt;-c | --critical&lt;br /&gt;  Termina con estado CRITICAL si la cantidad de CPU libre es inferior al valor en tanto por ciento.&lt;br /&gt; En modo CPU usada termina con CRITICAL si la cantidad de CPU usada es superior al valor en tanto por ciento.&lt;br /&gt;  Valor predeterminado: 10&lt;br /&gt;  Valor predeterminado en modo CPU usada: 90&lt;br /&gt;&lt;br /&gt;-w | --warning&lt;br /&gt; Termina con estado WARNING si la cantidad de CPU libre es inferior al valor en tanto por ciento.&lt;br /&gt; En modo CPU usada termina con WARNING si la cantidad de CPU usada es superior al valor en tanto por ciento.&lt;br /&gt;  Valor predeterminado: 10&lt;br /&gt;  Valor predeterminado en modo CPU usada: 90&lt;br /&gt;&lt;br /&gt;-i | --interval&lt;br /&gt; Tiempo en segundos entre pasadas de mpstat.&lt;br /&gt; Valor predetermindado 1&lt;br /&gt;&lt;br /&gt;-r | --reports&lt;br /&gt; Número de pasadas por intervalo de segundos de mpstat.&lt;br /&gt; Valor predetermindado 1&lt;br /&gt;&lt;br /&gt;-u | --used&lt;br /&gt; Comprueba la cantidad de CPU usada en vez de la CPU libre.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;-h | --help&lt;br /&gt;  Muestra esta ayuda.&lt;br /&gt;&lt;br /&gt;Este plugin depende del paquete sysstat:&lt;br /&gt;http://perso.orange.fr/sebastien.godard/index.html&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Como siempre os podéis bajar el plugin de Nagios Exchange: &lt;a href="http://www.nagiosexchange.org/Linux.55.0.html?&amp;tx_netnagext_pi1[p_view]=1029"&gt;check_mcpu&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5540592517189527424-7992732520560842965?l=emergeworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emergeworld.blogspot.com/feeds/7992732520560842965/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5540592517189527424&amp;postID=7992732520560842965&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540592517189527424/posts/default/7992732520560842965'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540592517189527424/posts/default/7992732520560842965'/><link rel='alternate' type='text/html' href='http://emergeworld.blogspot.com/2007/07/checkmcpu-ii.html' title='check_mcpu (II)'/><author><name>jgascon</name><uri>http://www.blogger.com/profile/04223930737340695560</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5540592517189527424.post-3878044381361578555</id><published>2007-07-16T17:26:00.000+02:00</published><updated>2007-07-16T17:32:46.985+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='utilidades'/><title type='text'>Localiza el país de una IP desde la cónsola</title><content type='html'>Esta mañana leyendo el blog de &lt;a href="http://vertito.blogspot.com/"&gt;Vertito&lt;/a&gt; he visto que hablaba sobre geoip de la empresa &lt;a href="http://www.maxmind.com"&gt;MaxMind&lt;/a&gt;. geoiplookup es una utilidad de línea de comandos incluida en el paquete geoip que nos permite conocer el país de origen de cualquier dirección IP o hostname. Su uso es muy sencillo, p.e:&lt;br /&gt;&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;$ geoiplookup 64.233.183.103&lt;br /&gt;GeoIP Country Edition: US, United States&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;La versión de la base de datos que viene con la última versión estable para gentoo (1.4.0-r1) es de agosto del año pasado. No es la base de datos comercial que puedes comprar en la página de MaxMind que se llama &lt;a href="http://www.maxmind.com/app/country"&gt;GeoIP Country&lt;/a&gt; sino su hermana pequeña y gratuita &lt;a href="http://www.maxmind.com/app/geolitecountry"&gt;GeoLite Country&lt;/a&gt;. También hay versiones que afinan más la procedencia hasta la &lt;a href="http://www.maxmind.com/app/city"&gt;ciudad&lt;/a&gt; o &lt;a href="http://www.maxmind.com/app/region"&gt;región&lt;/a&gt; pero éstas son de pago.&lt;br /&gt;&lt;br /&gt;Para saber que base de datos usa geoip:&lt;br /&gt;&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;$ geoiplookup -v&lt;br /&gt;GEO-106FREE 20060801 Build 1 Copyright (c) 2006 MaxMind LLC All Rights Reserved&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Esta utilidad está sobretodo orientada a webmasters y ya está integrada en algunas herramientas de estadísticas web como &lt;a href="http://awstats.sourceforge.net/docs/awstats_contrib.html"&gt; awstats&lt;/a&gt;. Pero siempre es curioso tenerla a mano para nuestras pequeñas investigaciones sobre la red ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5540592517189527424-3878044381361578555?l=emergeworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emergeworld.blogspot.com/feeds/3878044381361578555/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5540592517189527424&amp;postID=3878044381361578555&amp;isPopup=true' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540592517189527424/posts/default/3878044381361578555'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540592517189527424/posts/default/3878044381361578555'/><link rel='alternate' type='text/html' href='http://emergeworld.blogspot.com/2007/07/localiza-el-pas-de-una-ip-desde-la.html' title='Localiza el país de una IP desde la cónsola'/><author><name>jgascon</name><uri>http://www.blogger.com/profile/04223930737340695560</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5540592517189527424.post-1131523658472893079</id><published>2007-07-15T18:36:00.000+02:00</published><updated>2007-07-16T16:27:51.590+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><category scheme='http://www.blogger.com/atom/ns#' term='openvpn'/><category scheme='http://www.blogger.com/atom/ns#' term='nagios'/><title type='text'>check_openvpn_pl</title><content type='html'>Este plugin de Nagios comprueba el estado de los clientes conectados a un servidor &lt;a href="http://openvpn.net/"&gt;OpenVPN&lt;/a&gt; mediante la interfaz de gestión del mismo. Para habilitar la interfaz de gestión en el servidor tenéis que incluir una línea como la siguiente en su archivo de configuración:&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;management IP port [pw-file]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Actualmente se accede a la interfaz de gestión mediante telnet sin ningún tipo de seguridad adicional por lo que se recomienda configurar la interfaz de gestión para que use la dirección local del túnel vpn o el localhost (127.0.0.1). Podéis encontrar más información sobre la interfaz de gestión &lt;a href="http://openvpn.net/management.html"&gt;aquí&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Las opciones -H (IP o hostname del servidor) y -p (puerto del servidor) son obligatorias siempre. Si el plugin puede conectarse con la interfaz de gestión mostrará el nombre común (tal como se especifica en el certificado de cliente) de los clientes conectados. Si no, terminará con estado crítico. La opción -i muestra las IP remota del cliente en vez de su nombre y la opción -n muestra el número de clientes conectados.&lt;br /&gt;&lt;br /&gt;Se puede comprobar que un cliente en concreto esté conectado usando una de estas dos opciones -C (nombre común) o -r (IP remota). Si se usan estas opciones, también se debe especificar el estado de salida que devolverá el plugin si no encuentra el cliente mediante las opciones -w (warning) -c (critical).&lt;br /&gt;&lt;br /&gt;Ejemplos de uso:&lt;br /&gt;&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;# Uso básico: devuelve los nombres de los clientes conectados la opción -t (timeout) es opcional el valor predeterminado es 10&lt;br /&gt;check_openvpn -H 192.168.10.1 -p 1195 -P mipassword -t 5&lt;br /&gt;OpenVPN OK: cliente1 cliente2&lt;br /&gt;&lt;br /&gt;# Devuelve las IP's remotas de los clientes en vez de los nombres&lt;br /&gt;check_openvpn -H 192.168.10.1 -p 1195 -P mipassword -i&lt;br /&gt;OpenVPN OK: 192.168.0.5 192.168.0.15&lt;br /&gt;&lt;br /&gt;# Devuelve el número de clientes conectados.&lt;br /&gt;check_openvpn -H 192.168.10.1 -p 1195 -P mipassword -n&lt;br /&gt;OpenVPN OK: 2 connected clients.&lt;br /&gt;&lt;br /&gt;# Comprueba si cliente1 está conectado y si no devuelve warning&lt;br /&gt;check_openvpn -H 192.168.10.1 -p 1195 -P mipassword -C cliente1 -w&lt;br /&gt;OpenVPN OK: cliente1 cliente2&lt;br /&gt;&lt;br /&gt;# Comprueba si la máquina con IP 192.168.0.15 está conectada y si no devuelve critical&lt;br /&gt;check_openvpn -H 192.168.10.1 -p 1195 -P mipassword -r 192.168.0.15 -c&lt;br /&gt;OpenVPN OK: 192.168.0.5 192.168.0.15&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Os podéis bajar el plugin de Nagios Exchange: &lt;a href="http://www.nagiosexchange.org/Networking.53.0.html?&amp;tx_netnagext_pi1[p_view]=1035"&gt;check_openvpn_pl&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5540592517189527424-1131523658472893079?l=emergeworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emergeworld.blogspot.com/feeds/1131523658472893079/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5540592517189527424&amp;postID=1131523658472893079&amp;isPopup=true' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540592517189527424/posts/default/1131523658472893079'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540592517189527424/posts/default/1131523658472893079'/><link rel='alternate' type='text/html' href='http://emergeworld.blogspot.com/2007/07/checkopenvpnpl.html' title='check_openvpn_pl'/><author><name>jgascon</name><uri>http://www.blogger.com/profile/04223930737340695560</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5540592517189527424.post-3749313190197150347</id><published>2007-07-12T19:03:00.000+02:00</published><updated>2008-12-10T05:39:22.912+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='utilidades'/><category scheme='http://www.blogger.com/atom/ns#' term='colorines'/><title type='text'>pinfo: otra forma de consultar info</title><content type='html'>Si sois como yo seguro que odiáis las páginas de info, ya sabéis, el formato de documentación del proyecto gnu. A mí, siempre me ha parecido muy engorrosa la navegación a través de estas páginas y siempre terminaba consultado las man (si es que las había) aunque no fuesen tan completas. Pues bien,con &lt;a href="http://freshmeat.net/projects/pinfo/"&gt;pinfo&lt;/a&gt; se acabo el sufrimiento.&lt;br /&gt;&lt;br /&gt;pinfo ofrece coloración de enlaces y navegación entre enlaces mediante los cursores semejante a lynx lo cual hace la navegación muy intuitiva. Esta es la página info de grub vista con info:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_2AGZGO7JvnQ/RpZjzoKd6QI/AAAAAAAAAAc/pB1IBnHzfxU/s1600-h/info.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_2AGZGO7JvnQ/RpZjzoKd6QI/AAAAAAAAAAc/pB1IBnHzfxU/s400/info.png" alt="" id="BLOGGER_PHOTO_ID_5086362567767353602" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Y aquí la misma página vista con pinfo, en esta segunda toma los enlces están coloreados de azul y así es más fácil distinguirlos:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_2AGZGO7JvnQ/RpZkBIKd6RI/AAAAAAAAAAk/Banu7ubchp4/s1600-h/pinfo.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_2AGZGO7JvnQ/RpZkBIKd6RI/AAAAAAAAAAk/Banu7ubchp4/s400/pinfo.png" alt="" id="BLOGGER_PHOTO_ID_5086362799695587602" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Si queréis olvidaros definitivamente del "horrible" info añadid a vuestro .bashrc (sin comillas) "alias info=pinfo" así cada vez que ejecutéis info, realmente estaréis ejecutando pinfo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5540592517189527424-3749313190197150347?l=emergeworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emergeworld.blogspot.com/feeds/3749313190197150347/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5540592517189527424&amp;postID=3749313190197150347&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540592517189527424/posts/default/3749313190197150347'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540592517189527424/posts/default/3749313190197150347'/><link rel='alternate' type='text/html' href='http://emergeworld.blogspot.com/2007/07/pinfo-otra-forma-de-consultar-info.html' title='pinfo: otra forma de consultar info'/><author><name>jgascon</name><uri>http://www.blogger.com/profile/04223930737340695560</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_2AGZGO7JvnQ/RpZjzoKd6QI/AAAAAAAAAAc/pB1IBnHzfxU/s72-c/info.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5540592517189527424.post-6691294487839728243</id><published>2007-07-09T19:54:00.000+02:00</published><updated>2007-07-15T01:29:43.271+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gentoo'/><category scheme='http://www.blogger.com/atom/ns#' term='seguridad'/><title type='text'>Auditoría de vulnerabilidades en Gentoo</title><content type='html'>glsa significa Gentoo Linux Security Advisory que podríamos traducir por Asesor de Seguridad de Gentoo Linux. Es un sistema para informar de vulnerabilidades en los paquetes instalados en sistemas Gentoo/Linux. A continuación os mostraré como montar un sistema que audite diariamente nuestra máquina y nos envié un mail a una cuenta de gmail con el resultado de la auditoría. &lt;br /&gt;&lt;br /&gt;Esto yo lo tengo montado en una máquina que hace de router para mi red. Este ejemplo es aplicable en el caso de que no dispongamos de un servidor de correo propio. Si tuvieramos servidor de correo podríamos enviar los resultados de la auditoría directamente a través de glsa-check.&lt;br /&gt;&lt;br /&gt;Para poder enviar mails a gmail tendréis que instalar el paquete &lt;a href="http://caspian.dotconf.net/menu/Software/SendEmail/"&gt;sendEmail&lt;/a&gt;. También debéis instalar el paquete gentoolkit que es el que contiene la herramienta glsa-check. A continuación crearemos un script para enviar los mails, lo podemos llamar por ejemplo /usr/local/bin/smail.sh&lt;br /&gt;&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;#!/bin/sh&lt;br /&gt;&lt;br /&gt;SE=/usr/bin/sendEmail&lt;br /&gt;TOMAIL=my@gmail.com  # la cuenta desde la que enviamos el mail&lt;br /&gt;MAIL=myother@gmail.com  # la cuenta en la que lo recibiremos&lt;br /&gt;MAILSERVER=smtp.gmail.com:587&lt;br /&gt;MAILUSER=myuser # el usuario de la cuenta desde que enviamos el mail&lt;br /&gt;PASSFILE=/root/.mypass # archivo que contiene el password de la cuenta desde la que enviamos el mail (chmod 400) &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;while getopts s:a:m: OPTIONS; do&lt;br /&gt;  case "$OPTIONS" in&lt;br /&gt;    s) SUBJECT=$OPTARG;;&lt;br /&gt;    a) ATTACHMENT=$OPTARG;;&lt;br /&gt;    m) MESSAGE=$OPTARG;;&lt;br /&gt;  esac&lt;br /&gt;done&lt;br /&gt;&lt;br /&gt;if [ ! -z "$MESSAGE" ]; then&lt;br /&gt;  $SE -t $TOMAIL -f $MAIL -s $MAILSERVER -xu $MAILUSER -xp $(cat $PASSFILE) -o tls=yes -u "$SUBJECT" -m "$MESSAGE"&lt;br /&gt;else&lt;br /&gt;  $SE -t $TOMAIL -f $MAIL -s $MAILSERVER -xu $MAILUSER -xp $(cat $PASSFILE) -o tls=yes -u "$SUBJECT" -o message-file="$ATTACHMENT"&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;# die gracefully&lt;br /&gt;exit 0&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Añadimos la siquiente línea a /etc/crontab para ejecutar glsa-check cada noche a las 00:15h y que nos envíe el mail:&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;15  0 * * * root /usr/bin/glsa-check -t all &amp;&gt; /var/log/glsa &amp;&amp; /usr/local/bin/smail.sh -s "glsa" -a /var/log/glsa&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Enlaces:&lt;br /&gt;&lt;a href="http://www.gentoo.org/proj/en/glep/glep-0014.html"&gt;Sitio de glsa&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.gentoo.org/rdf/en/glsa-index.rdf"&gt;glsa feed&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5540592517189527424-6691294487839728243?l=emergeworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emergeworld.blogspot.com/feeds/6691294487839728243/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5540592517189527424&amp;postID=6691294487839728243&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540592517189527424/posts/default/6691294487839728243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540592517189527424/posts/default/6691294487839728243'/><link rel='alternate' type='text/html' href='http://emergeworld.blogspot.com/2007/07/auditora-de-vulnerabilidades-en-gentoo.html' title='Auditoría de vulnerabilidades en Gentoo'/><author><name>jgascon</name><uri>http://www.blogger.com/profile/04223930737340695560</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5540592517189527424.post-1851817792029091352</id><published>2007-07-05T23:05:00.000+02:00</published><updated>2007-07-06T20:13:25.996+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vi'/><title type='text'>Vim Plugin: template file loader</title><content type='html'>Éste plugin nos permite cargar una plantilla en un archivo al empezar a editarlo con vim. Por ejemplo, siempre que empiezas a escribir un nuevo script de perl (o de cualquier otra cosa) tienes que escribir las mismas cosas, el interprete (shebang!), los módulos que vas a usar, información de la licencia (si usas) etc. ¿No sería maravilloso tener una plantilla con todo eso que se repite siempre y no tener que escribirlo una y otra vez? Pues eso es precisamente lo que hace "template file loader" para ti ;)&lt;br /&gt;&lt;br /&gt;Por cada nuevo archivo que edites este plugin busca si tienes una plantilla que concuerde con la extensión del archivo. Las plantillas son unos archivos llamados skel.* (donde * es la extensión que debe coincidir) que se guardan en el directorio $HOME/.vim/templates.&lt;br /&gt;&lt;br /&gt;La instalación es muy sencilla, sólo tienes que descomprimir el tar.gz y mover los directorios plugin y templates a tu directorio $HOME/.vim/&lt;br /&gt;&lt;br /&gt;Os podéis bajar el plugin desde aquí: &lt;a href="http://www.vim.org/scripts/script.php?script_id=198"&gt;template file loader&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Aquí os dejo mi plantilla para los scripts de perl, skel.pl:&lt;br /&gt;&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;#!/usr/bin/perl -w&lt;br /&gt;&lt;br /&gt;#######################################################################&lt;br /&gt;#&lt;br /&gt;# Copyright (c) 2007 Jaime Gascon Romero &lt;jgascon@gmail.com&gt;&lt;br /&gt;#&lt;br /&gt;# License Information:&lt;br /&gt;# This program is free software; you can redistribute it and/or modify&lt;br /&gt;# it under the terms of the GNU General Public License as published by&lt;br /&gt;# the Free Software Foundation; either version 3 of the License, or&lt;br /&gt;# (at your option) any later version.&lt;br /&gt;#&lt;br /&gt;# This program is distributed in the hope that it will be useful,&lt;br /&gt;# but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;# GNU General Public License for more details.&lt;br /&gt;#&lt;br /&gt;# You should have received a copy of the GNU General Public License&lt;br /&gt;# along with this program.  If not, see &lt;http: org="" licenses=""&gt;.&lt;br /&gt;#&lt;br /&gt;# $Id:$&lt;br /&gt;# $Revision:$&lt;br /&gt;# #####################################################################&lt;br /&gt;&lt;br /&gt;use diagnostics;&lt;br /&gt;use strict;&lt;br /&gt;&lt;br /&gt;# vim:sts=2:sw=2:ts=2:et&lt;br /&gt;&lt;/http:&gt;&lt;/jgascon@gmail.com&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5540592517189527424-1851817792029091352?l=emergeworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emergeworld.blogspot.com/feeds/1851817792029091352/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5540592517189527424&amp;postID=1851817792029091352&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540592517189527424/posts/default/1851817792029091352'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540592517189527424/posts/default/1851817792029091352'/><link rel='alternate' type='text/html' href='http://emergeworld.blogspot.com/2007/07/vim-plugin-template-file-loader.html' title='Vim Plugin: template file loader'/><author><name>jgascon</name><uri>http://www.blogger.com/profile/04223930737340695560</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5540592517189527424.post-6333979663114287055</id><published>2007-07-04T18:40:00.000+02:00</published><updated>2007-07-05T13:17:25.765+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><category scheme='http://www.blogger.com/atom/ns#' term='nagios'/><title type='text'>check_mcpu</title><content type='html'>Éste es un plugin de nagios para comprobar el uso de las cpus de una máquina. Sirve tanto para máquinas con un sólo procesador como para máquinas con múltiples procesadores. Comprueba individualmente cada cpu y devuelve 'critical' o 'warning' si el tanto por ciento de cpu libre es menor que el de los valores que le pasemos. El plugin usa la herramienta mpstat que viene en el paquete &lt;a href="http://perso.orange.fr/sebastien.godard/index.html"&gt;sysstat&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Todos los argumentos son opcionales así que lo podemos usar sin pasarle ningún argumento.Los valores predeterminados son: warning = 20, critical = 10, reports = 1, interval = 1. Para saber que significan los dos últimos valores podéis consultar la página &lt;a href="http://perso.orange.fr/sebastien.godard/man_mpstat.html"&gt;man&lt;/a&gt; de mpstat, pero básicamente son las pasadas que realiza mpstat para determinar el uso de cpu (reports) y los segundos entre pasadas (interval).&lt;br /&gt;&lt;br /&gt;Al estar escrito en perl usa alguna funciones del módulo utils.pm que viene con el paquete &lt;a href="http://www.nagios.org/download/"&gt; nagios-plugins&lt;/a&gt;. Aseguraos que el valor de 'use lib "/usr/nagios/libexec";' sea el correcto para vuestra máquina.&lt;br /&gt;&lt;br /&gt;Si al ejecutar el plugin os responde lo siguiente: "Strange mpstat output: install mpstat without nls support.", tenéis dos opciones: &lt;br /&gt;&lt;br /&gt;1.- Instalar sysstat sin soporte para nls (native language support).&lt;br /&gt;2.- Cambiar "Average:" en la línea 81 por lo que veáis al ejecutar 'mpstat -P ALL 1 1'. Seguramente sera algo así como "Media: ".&lt;br /&gt;&lt;br /&gt;Podéis bajaros el plugin desde Nagios Exchange: &lt;a href="http://www.nagiosexchange.org/Linux.55.0.html?&amp;tx_netnagext_pi1[p_view]=1029"&gt;check_mcpu&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5540592517189527424-6333979663114287055?l=emergeworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emergeworld.blogspot.com/feeds/6333979663114287055/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5540592517189527424&amp;postID=6333979663114287055&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540592517189527424/posts/default/6333979663114287055'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540592517189527424/posts/default/6333979663114287055'/><link rel='alternate' type='text/html' href='http://emergeworld.blogspot.com/2007/07/checkmcpu.html' title='check_mcpu'/><author><name>jgascon</name><uri>http://www.blogger.com/profile/04223930737340695560</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5540592517189527424.post-4184273827692697890</id><published>2007-07-04T18:00:00.000+02:00</published><updated>2007-07-06T20:08:16.019+02:00</updated><title type='text'>print "Hello world!\n";</title><content type='html'>No he podido resistirme ;)&lt;br /&gt;&lt;br /&gt;Una de las cosas que me impulsó a usar Linux, hace ya unos cuantos años , fue el contenido social de las propuestas de la Free Software Foundation, GNU y toda la comunidad del software libre en general. Siempre me ha parecido muy atractiva la idea de estos hackers de que el conocimiento tiene que ser libre y compartido universalmente.&lt;br /&gt;&lt;br /&gt;Pues bien, después de tanto tiempo de usar software libre ya es hora de devolver, aunque sea poco, a esta comunidad. Desde aquí compartiré pequeñas guías, trucos y scripts para facilitar la vida a todos aquellos que usamos Linux.&lt;br /&gt;&lt;br /&gt;#EOF&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5540592517189527424-4184273827692697890?l=emergeworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emergeworld.blogspot.com/feeds/4184273827692697890/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5540592517189527424&amp;postID=4184273827692697890&amp;isPopup=true' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540592517189527424/posts/default/4184273827692697890'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540592517189527424/posts/default/4184273827692697890'/><link rel='alternate' type='text/html' href='http://emergeworld.blogspot.com/2007/07/print-hello-worldn.html' title='print &quot;Hello world!\n&quot;;'/><author><name>jgascon</name><uri>http://www.blogger.com/profile/04223930737340695560</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>
