September 02, 2010

Linux tip #22

¿Cómo recuperar un GRUB cascado? Para hacer la prueba, podemos simular un desastre en la MBR con un dd (sin cargarnos la tabla de particiones). Por ejemplo:

dd if=/dev/zero of=/dev/hda bs=446 count=1

Con esto, comprobamos que no tenemos gestor de arranque. Ahora, para recuperarlo, debemos:

  1. Arrancar con un CD (ya sea live o de instalación mismo) e "intervenir" (acceder a una consola para nuestro uso) en el mismo momento que veamos el disco. Normalmente esto sucede cuando se lleva a la pantalla del particionado.
  2. Montar el disco, mapearle el /proc y /dev del disco live o de instalación y hacer chroot al mismo:
  3. mkdir /a
    mount -t ext3 /dev/sda1 /a
    mount -o bind /proc /a/proc
    mount -o bind /dev /a/dev
    chroot /a /bin/bash
    
  4. Opción 1:
  5. grub-install /dev/sda
    
  6. Opción 2:
  7. grub
    root (hd0,0)
    setup (hd0)
    
  8. Salimos del chroot (exit | Ctrl+d) y desmontamos en este orden: /a/proc, /a/dev y /a.

Con esto, ya lo tenemos todo listo para iniciar la máquina de nuevo (sin el CD que usamos inicialmente, claro). Y como más vale prevenir que curar, recuerdo esta entrada de cómo hacer un backup y recuperar una MBR (incluyendo gestor de arranque y la información de las particiones).

Presentació 8è Festival de Blues de Barcelona

De Presentació 8è Festival de Blues de Barcelona

Roda de premsa al Jamboree per presentar el 8è Festival de Blues de Barcelona.

llegeix més

Exposició fotogràfica "Instants de Blues"

instantsdeblues_0.jpg

del 4 al 30 de Setembre
Instants de Blues
Exposició fotogràfica
Joan “linuxbcn”

Els qui no sabem tocar cap mena d’instrument però sentim la música com si entrés com un verí al nostre cos, poques coses podem fer a més d’escoltar la música.

llegeix més

Show must go on (y 2)

El postparto ha sido un infierno. A las dificultades normales de un postparto (el dolor de los puntos, el bajón de hormonas que te traslada a un universo paralelo, los lloros desconsolados que no sabes como parar, las noches sin...

HTC Magic + Cyanogenmod 5

Me hubiese gustado ofreceros un post con el título “HTC Magic + Cyanogen mod 6″ pero no ha podido ser por falta de espacio.

Al cacharro este le tengo un poco de respeto porque es una parte de mi que si se estropea me quedo a 2 velas, así que tras efectivamente estropearse (no podía contestar las llamadas porque no había suficiente espacio en el disco para atender a la llamada, wtf!) he tenido que actualizar.

Esta vez la actualización ha sido realmente simple. Recuerdo que anteriormente hice un post de como meter un android 1.6 en el HTC Magic, pero de esto hace ya unos días y ha llovido mucho desde entonces.


Lo primero de todo es descargar el fastboot, el sapphire (un boot modificado) y los ficheros de imagen de cyanogenmod, cabe destacar que en el tercer vinculo tenemos el fichero de imagen y las aplicaciones de google, para el tema de tener un sistema totalmente libre o envenenado por google.

Como el teléfono tiene una memoria interna demasiado pequeña, no es posible instalar todas las aplicaciones de google y debemos descargarnos la versión reducida. Por la misma regla de 3 tampoco podemos usar cyanogenmod 6 en HTC Magic 32B. Así que he tirado tras varias pruebas y peleas por una versión anterior (para probar si entraba).

Cargamos los dos últimos ficheros a la raiz de la /sdcard del teléfono (la imagen del cyanogenmod y las app de google -ambos tal cual nos los descargamos-) y reiniciamos el teléfono, pero justo al momento en qué se está apagando pulsamos simultáneamente los botones de atrás y apagar hasta que nos aparezca un menú con unos androides en skate.

A partir de ahí y con el teléfono enchufado por usb en el ordenador, ejecutamos el fastboot (es necesario descomprimirlo y ejecutarlo como root)

# ./fastboot boot recovery-RA-sapphire-v1.7.0G.img
downloading 'boot.img'... OKAY
booting... OKAY

y automáticamente se reiniciará el teléfono y arrancará con el boot sapphire.

Lo próximo es ir al menu wipe y ejecutar el wipe de las dos cachés y el factory defaults. Volvemos atrás y a Instalar desde la SD.

Escogemos primero la imagen del cyanogenmod 5 > home > esperar… después la de las app de google > home > esperar… reiniciamos el teléfono y si todo ha ido bien nos aparecerá el wizard para configurar nuestra cuenta de google, además de la aplicación market (la curiosidad del día es que con el cyanogenmod6 no se instalaban todas las app porque no quedaba espacio al dispositivo).

Pues con esto ya tengo el HTC Magic a la 2.1, lastima de no haber podido subir a la 2.2 que tenía una pinta estupenda!

Tip: apps necesarias para hacer funcionar el sistema

September 01, 2010

En octubre, vuelve la NoConName y otros encuentros en la tercera fase

Vuelve la NoConName, después de 4 años sin celebrarse (si no recuerdo mal) y con nueva ubicación: se hará en Barcelona, los días 20 y 21 de octubre. El congreso está orientado a la difusión e intercambio del conocimiento y...

Resumen de mi viaje a Bélgica

¿Quién dijo que los viajes se planteaban con meses de antelación?

Este año, sin quererlo ni beberlo, me vi inmerso en una trepidante aventura de re-descubrimiento del mejor país del mundo. Era 10 de Agosto y aún ni lo tenía en mente… pero las tornas se giraron y con pocos días de antelación me encontré con que me iba de viaje a Bélgica.

Mucho se podría decir de lo vivido, pero creo que lo mejor sería resumirlo en pequeñas fotos:

¡Cerveza y queso! Y qué sitio mejor que el Café Delirium de Bruselas para hacer acopio de tales bienes. El Delirium Café es un antro bruseliense conocido por contar con una amplia variedad de cervezas… De hecho dicen que es el Bar con más cervezas del mundo, cosa que en cierta medida puede ser cierta ya que cuentan con una carta con 2004 cervezas distintas.

Sin embargo la primera cerveza que pedí (una Westvleteren) no la tenían…

El local tienen 3 plantas. La planta baja es la famosa de las 2004 cervezas. La segunda está especialidada en cerveza de tirador (todo barril, nada de botellas)… impresionante ver tanto grifo junto…

En la tercera planta hay un invento nuevo. Se trata de The Hoppy Loft, un traquilo local dedicado a las buenas cervezas norteamericanas y del que me quedé prendado. Porque amigos míos.. la mejor cerveza no es la Belga… Es la norteamericana!!!

Pero no sólo de cerveza vive el hombre (bueno, sí que se podría… si no que se lo pregunten a los monjes trapenses en épocas de ayuno), no. La comida es excelente. Mirad este plato de carne de buey que me sirvieron en un café… sí, un café, esos sitios que en España te sirven como mucho un bocatajamón.

La carne estaba más tierna que el trozo de mantequilla que hacía de guarnición junto a la ensalada. Y de las patatas mejor ni hablemos…

Más tarde fuimos a Amberes (Antwerpen para los amigos).

En Amberes quedé con unos amigos, Sven y Koen, que nos llevaron a un sitio llamado Het Duvels Genot donde cenamos a eso de las 7 de la tarde. Si alguien en Amberes lee esto le recomiendo encarecidamente una visita.

Allí cenamos una cosa llamada Stoofvlees bereid met Maredsous 8 que resultó ser una especie de estodado de buey con cerveza acompañado de patatas fritas y enlasada. Rico rico.

Aquí una foto de Sven y Koen

Luego visitilla por la ciudad con parada en este monumento al que Koen dio gran importancia (seguramente debido al helado que sujetaba el tipo con la mano).

Si algún belga aterriza por aquí que me aclare una duda que me corroe, por favor… De qué sabor era el helado?????

Y también visita a un tunel subterráneo de 500 metros del que no hice foto y cerveza final con Koen antes de despedirnos.

¿Cerveza? No, tomó el equivalente a los zumos granini de allí: Looza. Y bien que se lo restregué por la cara (Koen, you’re a Looza :P ).

Pues nada. Ya sabéis que hice este Agosto. Y vosotros qué habéis hecho?

MirthKit

MirthKit

MirthKit es a la vez un motor y un kit de desarrollo para jugar y crear juegos a través del lenguaje de programación Squirrel.
Actualmente proveé de los siguientes juegos:

Finity Flight
Eres la última defensa de la humanidad contra los invasores alienígenas en este shooter arcade de naves. El raptor XF-84 es el prototipo aéreo más avanzado que el ser humano ha producido jamás. Has sido entrenado rigurosamente para soportar las impresionantes fuerzas de gravedad que produce la maniobrabilidad que el Raptor produce a la vez que destruir efectivamente cualquier tipo de oposición.
Una vasta flota alienígena acecha en las puertas de la humanidad — un asalto sorpresa — y tú eres la primera y única línea de defensa del ser humano. Vuelas completamente solo, luchando contra un número masivamente superior, en una lucha aérea frenética para sobrevivir. Utiliza tus tres poderosas armas y hazlo lo mejor que puedas para llegar a ser invencible y realizar ataques especiales mientras esquivas los disparos y maniobras de tus enemigos. Finity Flight incluye 15 niveles de dificultad y es un juego completamente gratuito y opensource.

Pinche aquí para ver el vídeo

Finity Flight: Fight Back
Bien, así que derrotaste a la flota enemiga, ¿no?. Es hora de luchar contra ellos en su propio terreno.
Finity Flight: Fight Back toma lugar poco después de lo acaecido en Finity Flight. Tú solo, pudiste repeler a los invasores de la Tierra, pero en lugar de sencillamente esperar a que volvieran en mayor número, les has ido a buscar a su propio mundo.
Fight Back toma lugar en el espacio, y añade al juego original otros 15 nuevos y excitantes niveles, cuatro nuevos jefes finales, cuatro variaciones de enemigos, y nuevos desbloqueables.

Mike Hibbert’s Minigolf
Ganador del Microgame Competition I, Mike Hibbert’s Minigolf es un divertido juego donde jugarás a golf alrededor de una casa. Mike Hibbert’s Minigolf incluye 4 niveles con puntuaciones de par. Es bueno para pasar un ratito (de 10 a 20 minutos) de entretenimiento, y tiene todo lo necesario para hacer tú mismo más niveles.

Licencia: GPL
Precio: Gratuito
Web: Página Oficial
Juego: Descarga

S'han carregat L'Internauta

Via Twitter, llegeixo: vpartal La direcció de Catalunya Ràdio ha decidit suprimir el programa 'L'internauta'. Aquest setembre hauríem fet quinze anys en antena L'Internauta va néixer el setembre del 1995 i era el programa més antic en català sobre la...

Topsy: Buscador de twitts

Topsy es una página web que te permite buscar entre los twitts de varios sistemas de twitter.

topsy.com

August 31, 2010

¿Cómo se duplica un vinilo?

Unas maderas, un poco de silicona y plástico líquidos y ya tienes tu vinilo duplicado :D

Pirate-Vinyl-01 Pirate-Vinyl-02 Pirate-Vinyl-03 Pirate-Vinyl-04 Pirate-Vinyl-05 Pirate-Vinyl-06 Pirate-Vinyl-07 Pirate-Vinyl-08 Pirate-Vinyl-09

vía: mytechnologyworld9

August 30, 2010

ColorCube

ColorCube

ColorCube es un juego de puzzles en 3D donde controlarás un cubo rodante en un mundo cúbico. Tu cubo puede arrastrar un color de una superficie coloreada y colocarlo en un receptor, para activar así diversos mecanismos y llegar a la salida. El juego incluye un total de 48 niveles de dificultad creciente.

Pinche aquí para ver el vídeo

Si el cubo entra en contacto con una superficie de color, se obtiene una cara de color con el mismo color. Puedes tener multpiples caras de color al mismo tiempo, también funciona. Pero hay que tener cuidado, porque si el cubo de toca el suelo con el color de esa cara, se perderá dicho color.

Si pones una cara coloreada en un receptor que tienen el mismo color, éste se activará. Los receptores activarán el resto de objetos:

Las barreras solamente bajarán una vez que el receptor del mismo color se active. El ascensor mueve el cubo hacia arriba o abajo una vez que el receptor del mismo color se active. El objetivo de cada nivel es llegar a la salida. Una vez que pongas el cubo en la salida, el nivel está terminado.

Licencia: Copyright
Precio: 4,50€
Web: Página Oficial
Juego: Descarga Demo / Comprar

Show must go on

Bueno.. pues esta ha sido mi primera mañana de trabajo ante el ordenador, con Bet al lado. El 28, sábado, hizo 4 meses y está resultado ser una maravilla de niña. Ha dormido un montón (ahora echa otra siesta), ha...

August 27, 2010

Rails form_tag

Hi

I know there are a lot of posts about the rails “dangerous” form_tag helper method, but why not another one.

Before saying anything about it, I want to write down the differences between form_tag and form_for (which was the choosen one previously). form_for is provided for updating data models and form_tag is provided for doing the other form operations (search something, change language in a page, etc).

Ok, after this, let’s go to the battle. This was my code

% form_tag :controller => 'pages', :action => 'index' , :method => 'get' do %>
Tags : %= text_field_tag :tags, '', :size => 40 %>
%= submit_tag 'Search' %>
% end %>

and I didn’t got the html code what I wanted to obtain, after googling for a while, I found this post which got me to the right way to see the light. The reason of this problem was that I was not using the right syntax for form_tag, which is

form_tag(url_for_options = {}, options = {}, *parameters_for_url, &block)

so my code became

% form_tag({:controller => 'pages', :action => 'index'} , {:method => 'get'}) do %>
Tags : %= text_field_tag :tags, '', :size => 40 %>
%= submit_tag 'Search' %>
% end %>

and I was happy again :-D

Hope this silly problem helps not to waste your time (I did it for you ;-) )

M.

historias de túneles ssh: acceder a webs prohibidas por tu ip

Pues esto, nos encontramos en un sitio con unas ips un poco raras, y la web de loquo nos dice que no se aceptan visitas des de el país en qué estoy (WTF!). Pero en casa si me dejaba acceder. Solución? túnel ssh a saco :D

Pero aquí la cosa se complica, la web, la muy cabronceta tiene un redirect a la url, así que hemos tenido que hacer un par de cositas mas además del túnel que inicialmente lo había hecho pasar por el 8080 (puerto al azar), así que la actuación ha sido distinta:

paramos el apache porque vamos a hacer el túnel en el puerto 80
# /etc/init.d/apache2 stop

para crear un puerto 80 se requieren derechos de root
# ssh -L 80:www.loquo.com:80 laura@213.98.143.33

luego engañamos a nuestro hosts
# vi /etc/hosts
127.0.0.1  localhost www.loquo.com loquo.com

en el navegador:

http://www.loquo.com

recordad en vaciar el buffer….

Y ale, ya he podido publicar el anuncio… por cierto… alquilo dos habitaciones, si hay algún interesado…

August 26, 2010

Vacances 2010, fotos d'estiu

Recull d'algunes de les fotos d'aquestes passades (i que ràpid passen!) vacances per el nord de la península.

De Vacances 2010

I també algunes fotografies fetes amb la Harinezumi

De Vacances 2010 - Harinezumi

llegeix més

August 25, 2010

Routes in rails

Two days ago, I was solving bugs in my new professional website (not available yet at http://www.miqueloliete.com) when I stared at the screen and noticed how ugly my url was (something/home/home).

In that moment I remembered that I had read something in Agile Development with rails about how to use routes.rb, so I decided to give it a go.

I add to this files these sentences

map.connect 'home/', :controller => 'home', :action => 'home'
map.connect 'about_me/', :controller => 'home', :action => 'about_me'
map.connect 'cv/', :controller => 'home', :action => 'cv'
map.connect 'projects/', :controller => 'home', :action => 'projects'

and ‘home/home’ became ‘home’, ‘home/cv’ became ‘cv’, etc

M.

Akademy-es 2010 videos available

Akademy-es 2010 talks are now available at http://www.kde-espana.es/akademy-es2010/doku.php?id=materiales

Talks are in Spanish (except one that is on Basque) so if you don't understand it, you are out of luck.

I hope that those of you that could not come enjoy the videos and maybe they convince you so you come next year ;-)

Seguridad en el uso de Firma Digital para organismos públicos

Como siempre, otra nueva aventura que esta vez no le tocó sufrir a un servidor, sino a un compañero. En pocas palabras, él tenía que solicitar un documento público (creo era a la DGT) y la Firma Digital no le funcionaba (le terminaba dando un casque). Cuando se puso en contacto con los técnicos de dicho ente, le instruyeron para que habilitara una opción del navegador que estaba usando (Firefox/Iceweasel) para "permitir que se abrieran los popups".

¿De qué opción se trata? De la opción signed.applets.codebase_principal_support, que puede ser encontrada dentro de las tripas de la configuración de Firefox/Iceweasel si en la barra de URL's ponemos el archiconocido about:config. A modo de tip, para ir más rápido en su búsqueda podemos usar el campo filter y escribir ahí 'signed' para que nos lleve directamente. Como podemos ver, por defecto está desactivada. ¿Y para qué sirve exactamente esta opción? Se puede ver p.ej. en mozillazine o en sus foros, pero explicado más llanamente, permite que los scripts en Javascript se ejecuten con privilegios ampliados sin estar firmados (con Firma Digital).

Una explicación más larga la podemos encontrar en el propio site de Mozilla, pero os haré un resúmen. Los scripts pueden ir firmados con una Firma Digital basada en un Certificado Digital emitido por una CA. Esto es lo ideal de cara a la seguridad de la identidad del firmante y de la integridad del propio script. Pero Javascript también soporta los llamados codebase principals, que son un mecanismo a través de los cuales la fiabilidad del script radica en su origen de procedencia (en concreto, desde la confiabilidad de una URL origen dada). Al no ofrecer una prueba de identidad del firmante para el usuario, por defecto su uso viene deshabilitado en Firefox/Iceweasel, y es por ello que en la propia página se recomienda a los escritores de aplicaciones no fiarse de poder usarlos (y de querer usar estos privilegios extendidos, insta a firmarlos previamente).

Entonces debe haber alguna explicación para que varios organismos públicos (como la Diputación de Badajoz, el Ministerio de Política Territorial, el Ministerio de Industria, Turismo y Comercio, Hacienda...) esten recomendando saltarse esta protección. ¿Alguien la conoce? Porque yo no.

Soluciones:

  • ¡Que la entidad firme los scripts! Esta entiendo que es la solución ideal, ya que el uso de los codebase principals sólo se recomienda para code testing.
  • Si tenemos que rebajarnos a usar los codebase principals, podemos activarlo y desactivarlo en base a su necesidad, pero en cualquier caso, acordándonos siempre de desactivarlo.
  • Si usamos (o no nos importa hacerlo) varios perfiles de usuario en el navegador, se puede activar en el user.js de uno de los perfiles (ver este enlace), dejándolo desactivado en el otro.

Y esto es to, esto es to, esto es todo amigos.

August 24, 2010

Configuración de Nagios

Venga, pues este post se ha hecho esperar, pero espero que la espera valga la pena.

Hace unos días contaba como instalar Nagios, un sistema de auditoria de servidores realmente útil para aquellos que tienen entre sus manos la ardua tarea de la administración de servidores. En este post hacía referencia a SNMP, pero Nagios nativamente no es un graficador de trazas SNMP, pero mediante unos plugins va a ser posible.

De momento en este post vamos a comentar como añadir maquinas, capturar las alertas que nos mandan el resto de maquinas que tengamos configuradas y armar un mapa con los hosts que tenemos en la red.


Todos los ficheros de configuración se hallan en /etc/nagios3/conf.d y estos terminan con la extensión .cfg, este último apunte nos va a servir para poder tener ficheros de prueba dentro del mismo directorio.

Cada uno de los ficheros de configuración tiene una estructura muy simple y que se va a repetir en cada uno de los objetos:

define objeto {
        propiedad valor
        }

Para facilitar la tarea de administración de nagios, vamos a tener un fichero para cada tipo de objeto, vamos a empezar así con algunos de los objetos que podemos encontrar. Destacar que nagios trae con la instalación unos ficheros de configuración con algunos parámetros ya configurados, pero por facilidad le he cambiado los nombres de los ficheros por defecto.
Por otra parte no voy a pegar todo el fichero de configuración sino sólo un trozo que es el que vamos a usar como ejemplo:

# vi periodos_tiempo.cfg
define timeperiod{
        timeperiod_name 24x7
        alias           24 Hours A Day, 7 Days A Week
        sunday          00:00-24:00
        monday          00:00-24:00
        tuesday         00:00-24:00
        wednesday       00:00-24:00
        thursday        00:00-24:00
        friday          00:00-24:00
        saturday        00:00-24:00
        }

el objeto timeperiod nos servirá para indicar cada cuando nos tiene que avisar nagios a la que ocurre un problema. El método mas común es por correo electrónico, pero si nos lo curramos podríamos hacer que el sistema nos mandase un sms.

timeperiod_name: es el nombre del objeto timeperiod
alias: es otro nombre, normalmente un nombre corto al que también podemos hacer referencia, si los separamos por coma, podemos definir varios nombres alternativos.

# vi contactos.cfg
define contact{
        contact_name                    root
        alias                           Root
        service_notification_period     24x7
        host_notification_period        24x7
        service_notification_options    w,u,c,r
        host_notification_options       d,r
        service_notification_commands   notify-service-by-email
        host_notification_commands      notify-host-by-email
        email                           root@localhost
        }

El objeto contact es la definición de la persona que va a recibir las alertas, cuándo y dónde.

contact_name: nombre de referencia
alas: otro nombre de referencia
service_notification_period: nombre del objeto timeperiod en el caso que se requiera notificar un cambio de estado de un servicio
host_notificacion_period: nombre del objeto timeperiod en el caso que se requiera notificar un cambio de estado de una maquina
service_notificacion_options & host_notificacion_options:

Notify on transition Option
WARNING service states w
UNKNOWN service states u
CRITICAL service states c
Service RECOVERY states r
Send NO service notifications n

service_notification_commands & host_notification_commands: forma como se nos va a notificar

Este último objeto se define en /etc/nagios3/commands.cfg y al igual que los otros ficheros de configuración ya vienen definidos, a partir de aquí si somos mañosos podremos usar el sistema de envio de mensajes que nos plazca:

# vi /etc/nagios3/commands.cfg
define command{
        command_name    notify-host-by-email
        command_line    /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /usr/bin/mail -s "** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **" $CONTACTEMAIL$
        }

Si continuamos con el fichero de contactos.cfg, veremos que hay otro tipo de objeto, contactgroups, donde agruparemos los distintos contactos que tengamos definidos en grupos, así podremos hacer referencia a los encargados de web, de bbdd, de dns, etc.

# vi contactos.cfg
define contactgroup{
        contactgroup_name       admins
        alias                   Nagios Administrators
        members                root,blackhold
        }

En este caso el nombre del grupo de contactos es admins, y el miembro es root y blackhold, así que a la que ocurra algo, tanto root, como blackhold van a recibir el mensaje.

Una vez configurado como se comunica nagios con los administradores, vamos a indicarle qué maquinas tenemos que auditar:

# vi maquinas.cfg
define host {
        host_name   tesla
        alias       tesla
        address     195.160.225.38
        use         generic-host
        parents     gateway_guifi
        }

Campos a destacar:
parents: esto permite a la hora de generar el “status map” que unas maquinas hagan referencia a otras, es así una forma para poder tener nuestros hosts un poco mas organizados y agrupados, por ejemplo en mi caso por distintas ubicaciones de las maquinas (gateway_guifi es un router que está definido como otro host mas). Gracias Dani.
use: al crear un nuevo host podemos decirle que use la configuración de otro host, en este caso se genera un fichero a parte con este tipo de definiciones:

# vi auditoria_maquinas.cfg
define host{
        name                            generic-host    ; The name of this host template
        notifications_enabled           1       ; Host notifications are enabled
        event_handler_enabled           1       ; Host event handler is enabled
        flap_detection_enabled          1       ; Flap detection is enabled
        failure_prediction_enabled      1       ; Failure prediction is enabled
        process_perf_data               1       ; Process performance data
        retain_status_information       1       ; Retain status information across program restarts
        retain_nonstatus_information    1       ; Retain non-status information across program restarts
                check_command                   check-host-alive
                max_check_attempts              10
                notification_interval           0
                notification_period             24x7
                notification_options            d,u,r
                contact_groups                  admins
        register                        0       ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL HOST, JUST A TEMPLATE!
        }

La estructura sigue siendo la misma…. y mas o menos las opciones no necesitan mucha explicación excepto check_command.

check_command: es el comando que ejecuta nagios para comprobar que el host está vivo.

En nagios es posible configurar infinidad de alertas y checks que comprueben el funcionamiento correcto de nuestras maquinas, pero por defecto y para facilitar un poco el uso de nagios vienen por defecto algunos templates:

tesla:/etc# ls -lh /usr/share/nagios-plugins/templates-basic/
total 68K
-rw-r--r-- 1 root root  277  1 feb  2009 apt.cfg
-rw-r--r-- 1 root root  458  1 feb  2009 dhcp.cfg
-rw-r--r-- 1 root root  935  1 feb  2009 disk.cfg
-rw-r--r-- 1 root root  673  1 feb  2009 dummy.cfg
-rw-r--r-- 1 root root  414  1 feb  2009 ftp.cfg
-rw-r--r-- 1 root root 3,5K  1 feb  2009 http.cfg
-rw-r--r-- 1 root root  195  1 feb  2009 load.cfg
-rw-r--r-- 1 root root 2,8K  1 feb  2009 mail.cfg
-rw-r--r-- 1 root root  420  1 feb  2009 news.cfg
-rw-r--r-- 1 root root  466  1 feb  2009 ntp.cfg
-rw-r--r-- 1 root root 2,0K  1 feb  2009 ping.cfg
-rw-r--r-- 1 root root  511  1 feb  2009 procs.cfg
-rw-r--r-- 1 root root  397  1 feb  2009 real.cfg
-rw-r--r-- 1 root root  753  1 feb  2009 ssh.cfg
-rw-r--r-- 1 root root  784  1 feb  2009 tcp_udp.cfg
-rw-r--r-- 1 root root  438  1 feb  2009 telnet.cfg
-rw-r--r-- 1 root root  155  1 feb  2009 users.cfg

A partir de aquí ya tenemos los hosts, y sabemos como hacer los checks, otra cosa interesante relacionada con los hosts es que podemos añadirle extensiones, como el tipo de sistema operativo que estamos usando para los hosts (e incluso que nos ponga un dibujito del sistema operativo):

# vi hosts-ext.cfg
define hostextinfo{
        hostgroup_name   debian-servers
        notes            Debian GNU/Linux servers
#       notes_url        http://webserver.localhost.localdomain/hostinfo.pl?host=netware1
        icon_image       base/debian.png
        icon_image_alt   Debian GNU/Linux
        vrml_image       debian.png
        statusmap_image  base/debian.gd2
        }

Es a partir de los hostextinfo donde podemos conectar nuestro nagios con programas externos, por ejemplo con un sistema externo de gráficas (como cacti) o incluso un mediawiki. Esta parte la dejaremos para otro día ;)

Luego para relacionar los hosts y los hostextinfo vamos a usar los hostgroups:

# vi hostgroups.cfg
# A list of your Debian GNU/Linux servers
define hostgroup {
        hostgroup_name  debian-servers
                alias           Debian GNU/Linux Servers
                members         tesla,tesla_guifi,cobalt,cobalt_guifi,...
        }

De la misma forma que podemos agrupar las maquinas por su sistema operativo podemos agrupar las maquinas por tipo de servicio y aplicar a cada grupo un check específico:

# vi tipo_services.cfg
# check that ping-only hosts are up
define service {
        hostgroup_name                  ping-servers
        service_description             PING
        check_command                   check_ping!300.0,20%!900.0,60%
        use                             generic-service
        notification_interval           0 ; set > 0 if you want to be renotified
}

En este caso vamos a definir un servicio de ping, vamos a hacer ping a las maquinas y depende de lo que tarden van a mostrar un WARNING o un CRITICAL con los parámetros que le pasamos en el check_command.

Luego en el hostgroups, las máquinas agrupadas por ping quedarían así:

# vi hostgroups.cfg
define hostgroup {
        hostgroup_name  ping-servers
                alias           Pingable servers
                #members         gateway
                members         gateway_guifi,gateway_guifi2,gateway_guifi_blackhold,tesla,tesla_guifi,cobalt,cobalt_guifi,...
        }

Y finalmente, para cerrar este post de hoy, servicegroups, una forma para agrupar físicamente las maquinas, en este caso por ubicación:

# vi servicegroup_datacenter1.cfg
define servicegroup{
   servicegroup_name DATA1
   alias ServiceGroup Datacenter 1

   members tesla,PING
   [...]
   members cobalt,PING
}

En cada una de las maquinas que auditamos, será necesario instalar el paquete nrpe (# apt-get install nagios-nrpe-server), esto instalará un agente para que el servidor de nagios se pueda comunicar con el host y usar los checks por defecto.
Otra cosa importante además es que la máquina cliente tendrá que ser accesible por la maquina servidora por el puerto 5666 y tendremos que andar con mucho cuidado que si creamos checks nuevos no revelen información crítica de nuestra maquina:

tesla:/etc/nagios3/conf.d# netstat -lanp |grep 'LISTEN ' |grep nrpe
tcp        0      [oculto]:5666            0.0.0.0:*               LISTEN      2683/nrpe

Si deseamos mejorar la seguridad de nuestro nagios, podemos configurar el puerto y las redes de las cuales se permiten peticiones del nrpe en el fichero nrpe.cfg dentro de /etc/nagios/

August 23, 2010

En Mac OS X sí hace falta usar la consola

Ayer mi novia se pasó un buen rato convirtiendo algunos de sus álbumes de música a MP3, para luego poder copiarlos en su nuevo reproductor de música. Cuando ya se iba a trabajar, me avisó preocupada de que algo no iba bien, ya que le salían canciones duplicadas, y no se reproducían. Me extrañó que ella hubiera tenido problemas con su Mac, cuando yo no los tuve usando Linux. Pensaba que podría ser que no hubiera expulsado el dispositivo antes de sacarlo del conector USB, pero no fue así.

Enchufé el aparato en mi ordenador y no vi nada extraño. Entonces me fijé más detalladamente en la pantalla del reproductor y vi que los archivos parecían tener el mismo nombre, pero unos se diferenciaban en que empezaban por un punto, y justamente eran esos los que el reproductor no leía. Borré los molestos archivos a mano y listo.

El siguiente paso era explicarle a mi novia como arreglarlo usando su ordenador, un Mac ejecutando Leopard. Me miré los menús del Finder repetidas veces y no conseguí encontrar ninguna opción que permitiera mostrar los archivos ocultos. Busqué en Google y todos los primeros resultados te mencionan usar la consola para ejecutar una instrucción que cambia una opción oculta (sin interfaz), y que solo tiene efecto una vez reinicias el Finder de forma forzada, o saliendo y entrando en la sesión (ya que el Finder precisamente es lo que no se puede cerrar nunca). Algunos dan como alternativa aplicaciones de terceros, lo que no estoy seguro de si me parece mejor o peor, pero sí igualmente molesto y triste.

Tener que recurrir a la consola para mostrar archivos ocultos es ridículo. Puede no ser una opción muy común, pero tampoco tan rara como para que sea tan extremadamente difícil de cambiar (e imposible de saber sin buscar en Internet, porque Spotlight no encontró nada al respecto). Igual de ridículo es que se cree un archivo oculto por cada archivo MP3, porque esos archivos parecen ser para ciertos metadatos, cuando un MP3 ya puede albergar los metadatos razonables para un archivo de música.

túneles ssh inversos

Ya hace unos días que ando hablando de túneles ssh (con la opción -L), pues ahora vamos a hacer lo mas difícil todavía.

Nos encontramos que tenemos una maquina detrás de una conexión de la cual no es posible redirigir los puertos a la maquina que nos interesa, pero esta máquina si tiene acceso ssh a otra máquina.

Desde la maquina la cual no tenemos acceso y queremos acceder a ella vamos a ejecutar esto:

$ ssh -nNT -R 2222:localhost:22 blackhold@fermat.marsupi.org

luego en la maquina servidor.dominio.org vemos que se ha creado una nueva conexión en el puerto 2222:

fermat:/home/blackhold# netstat -lanp |grep 2222
tcp        0      0 127.0.0.1:2222          0.0.0.0:*               LISTEN      16618/sshd: blackho
tcp6       0      0 ::1:2222                :::*                    LISTEN      16618/sshd: blackho

Como no hemos indicado nada antes de 2222: sólo va a hacer bind en local, pero como comentaba en otro post, si quieres que sea accesible por todas las ip bastaría poner un 0.0.0.0: delante del 2222:

Si hacemos un ssh (en este caso porque estamos mapeando el puerto 22) en local a la maquina que si es accesible desde internet en el puerto 2222, vamos a conectarnos a la maquina inaccesible desde internet.

Mis agradecimientos a marc0s.

August 22, 2010

la luna de cerca

Este fin de semana he visto por primera vez a la vida la luna de cerca.
El artilugio que lo ha permitido ha sido un telescopio robotizado, cosa que no sabíamos al momento que estábamos tratando de enfocar a la luna.

La sensación de poder ver tan lejos ha hecho que en unos instantes te transformases en un ser minúsculo, el detalle de los cráteres era tal que podías divisar su sombra sobre el terreno amarillento de la luna.

A menudo vemos fotografías de cosas que quizás podremos ver en nuestra vida, alguna de ellas maravillosos paisajes, frondosos bosques, gigantescos icebergs, pero nada es mejor que verlo en vivo y en directo, aunque sea con la ayuda de la tecnología, el notar que estás ahí y que lo que estás viendo existe de verdad.

vine a la nautarquia

August 21, 2010

How to run a Messages.sh file to create your .pot file

Some people regularly ask me how to create the .pot file of their program. They know the Messages.sh file is the key for it but they also realize that doing

cd /path/to/my/project
bash Messages.sh

Does not really work and then they are a bit stalled.

The answer is quite simple, but you need to know it ;-) You have to run the extract-messages.sh script that lives in the l10n-kde4/scripts

That still will fail as the script tries to save the .pot files in a folder called "po", so all in all these are the commands to get the .pot file of your project


cd /path/to/my/project
mkdir po
bash /path/to/l10n-kde4/scripts/extract-messages.sh


And that's it :-)

August 20, 2010

Soy Gnome

¡Esta canción no puede quedar en el olvido! otra de las canciones ego-aptitudianas-freaks. ¡gracias joseba! :)
Nota: anti gnomerianos, ¡sufrid!

http://www.youtube.com/watch?v=wnv_RZzCuzY

Soy gnome,
y con debian soy feliz,
los datos en la home
y el sistema en la raíz.

Soy gnome,
y no me gusta compilar
todo lo que quieras tú
lo puedes instalar.


Soy 7 veces más fuerte que tu,
muy veloz
y siempre actualizada estoy.

Soy el hurd,
un kernel que todavía no se puede usar,
uso linux mientras no lo pueda instalar.

Soy gnome,
un escritorio simple y funcional,
si me quieres utilizar,
solo me has de instalar.

Evitando a los troyanos,
a los trolls y a los profetas,
con mi mula y con mi zorro,
voy navegando de aquí para allá,
ten cuidado no me ataques
si es que estás haciendo spam,
no sea que cometas una barbaridad.

Soy 7 veces más fuerte que tu,
muy veloz
y siempre actualizado estoy.

Soy gnome,
y con debian soy feliz,
los datos en la home
y el sistema en la raíz.

Soy stallman,
el más anciano del lugar,
y solo uso linxs para navegar.

Por esas rutas, bajo la terminal,
me encuentro fallos en winbugs que nunca diré.
Trabajo holgado, en mil y una cosas,
con ñus y pingüinos de momento estaré.
Soy 7 veces más fuerte que tu,
muy veloz
y siempre actualizada estoy.