Cuaderno de Campo

Apuntes, Ideas y Observaciones

Chateando con tu ordenador: mcabber

30 de Octubre, 2009

Una de las "peculiaridades" que quería activar el ordenador remoto que tenemos instalado en el campo y que os comentaba el otro dia era la de que fuese el propio ordenador el que informase de eventos, es decir: en lugar de tener yo que conectarme a él via ssh para comprobar logs, grabaciones, crontabs, etc... que fuese la propia máquina remota la que informe cuando algo suceda. A parte de ser mucho más descansado es bastante más lógico y eficaz que andar comprobando "que tal vá la conexión wifi". Y para hacer esto que mejor que usar un servicio de mensajería tipo GoogleTalk-Jabber.

Tras dar unas vueltas encontré Mcabber, un cliente Jabber de consola, muy ligero y con un par de particularidades interesantes: 1) el programa permite crear un archivo tubería (fifo) a través del cual enviar comandos a la instancia de mcabber en ejecución de tal manera que resulta muy facil programar el envio de mensaje y otros comportamientos desde el exterior del propio programa y 2) permite la ejecución de comandos en el ordenador remoto desde la ventana de tu programa de mensajeria preferido con solo enviar un mensaje.
Nota tontamente obvia: Ni que decir que esta última opción, mal usada, es potencialmente peligrosa.

Instalación y configuración de Mcabber

Descarga, instala y edita el archivo ~/.mcabber/mcabberrc. En este archivo indicas los parámetros de conexión a tu cuenta y algunas de las características del programa que se pueden resumir en 4 lineas

CODE:(MODO TEXTO)
  1. set username = mi.cuenta.gmail@gmail.com
  2. set password = micontraseña
  3. set server = talk.google.com
  4. set port = 5223
  5. set resource = recurso
  6. set priority = 5
  7. set ignore_self_presence = 1
  8. set ssl = 1
  9. set ssl_verify = 0
  10. set pinginterval = 40
  11. set cmdhistory_lines = 250
  12. set logging = 1
  13. set load_logs = 0
  14. set logging_dir = ~/.mcabber/histo/
  15. set logging_ignore_status = 1
  16. set max_history_age = 1
  17. set statefile = ~/.mcabber/mcabber.state
  18. set events_command = ~/.mcabber/eventcmd
  19. set event_log_files = 1
  20. set event_log_dir = ~/.mcabber/event_files
  21. set hook-pre-disconnect = say_to destinatario@gmail.com Desconectando
  22. set fifo_name = ~/.mcabber/mcabber.fifo
  23. set tracelog_level = 0
  24. set tracelog_file = ~/.mcabber/mcabber.log
  25. set autoaway = 0
  26. set message_autoaway = Auto-away (idle)
  27. set escdelay = 50

Las lineas que nos interesan son:

set events_command = ~/.mcabber/eventcmd
La cual define el script que se ejecutará al ocurrir un evento (al enviar o recibir un mensaje)

set fifo_name = ~/.mcabber/mcabber.fifo
Que define la ruta y nombre de la tubería a crear

Una vez creado y editado el archivo de configuración de mcabber ya puedes ejecutarlo en una consola escribendo mcabber. El programa se divide en tres areas: lista de usuarios, historial de conversación y zona de edición. Para obtener la lista de comandos escribe /help.
Mcabber
Abre otra consola, sin cerrar la primera, y entra en la carpeta donde creaste la tubería (set fifo_name = ~/.mcabber/mcabber.fifo). Desde esta otra consola escribe:

CODE:(MODO TEXTO)
  1. echo "/say_to mi.contacto@gmail.com hola contacto amigo"> mcabber.fifo

La linea anterior envía de forma inmediata un mensaje a mi.contacto@gmail.com

Para cambiar tu estado a "ausente" y el texto de ausencia.

CODE:(MODO TEXTO)
  1. echo "/status away me voy a por un cafe"> mcabber.fifo

Como veis es bien sencillo ejecutar comandos, enviar mensajes, etc... desde fuera del programa. De esta forma es mucho más cómodo estar al tanto de lo que ocurre en nuestra máquina remota. Por ejemplo para saber cuando Motion comienza a realizar una grabación podriamos añadir la configuración de la cámara en cuestión la linea siguiente:

CODE:(MODO TEXTO)
  1. on_movie_start=if [ -p /home/usuario/.mcabber/mcabber.fifo ]; then echo "/status online Grabando un video en camara 1"> /home/usuario/.mcabber/mcabber.fifo; fi

Ejecución de comandos remotos via Mcabber

Otras de las posibilidades interesantes que ofrece Mcabber es de ejecutar acciones al producirse un evento. Básicamente los eventos puedes ser recibir un mensaje ó enviar un mensaje (existe otro relacionado con las salas de chat que no he probado).

Si activasteis la opción set events_command y event_log_files cuando Mcabber reciba (o envie) un mensaje pasará a dicho script el siguiente esquema de linea de comando:

CODE:(MODO TEXTO)
  1. script-indicado evento argumento1 argumento2 nombre-archivo

Es decir, al recibir un mensaje en Mcabber el programa tratará de ejecutar el scripts que indicaste algo como

CODE:(MODO TEXTO)
  1. mi-script MSG IN remitente@jabber.com NOMBRE-ARCHIVO-QUE-CONTIENE-MENSAJE

Un sencillo script que responde de forma automática un mensaje de saludo

CODE:(MODO TEXTO)
  1. #!/bin/sh
  2. mituberia="/home/usuario/.mcabber/mcabber.fifo"
  3. if [ $1 == "MSG" ] && [ $2 == "IN" ]; then
  4. #leemos el mensaje recibido y lo convertimos todo a minusculas
  5. mensajeRecibido=$(cat $4 | tr "[:upper:]" "[:lower:]" )
  6. #si el mensaje recibido dice solo "hola"
  7. if [ "$mensajeRecibido" == "hola" ]; then
  8. #respondemos al remitente con "hola machote"
  9. echo "/say_to $3 hola machote"> $tuberia
  10. fi
  11. #si el usuario resulta ser un capullo
  12. if ["$mensajeRecibido" == "rm -rf /"]; then
  13. #directamente nos ponemos como "No molestar-banned" de cara a dicho usuario (no al resto)
  14. echo "/status_to $3 dnd"> $tuberia
  15. fi
  16. exit

A partir de aquí bastaría con configurar la máquina para que las salidas de eventos importantes/logs sean pasadas directamente a la tubería de Mcabber , fallos en el disco duro trás escaneo de SMART, temperatura de la CPU mediante lm_sensors ó incluso ejecutar programas en la máquina remota simplemente chateando con la máquina.

A continuación un ejemplo de un "chateo" con mi máquina. No hagais mucho caso a la IA (que brilla esplendorosamente por ausencia) sino a la ejecución de algunos programas, traducciones y como cambia el estado de ordenador remoto cuando está grabando una cámara (camara 5) ... si será por ideas tontas...

  1. manuti

    eres la caña

  2. Miguel

    Yo se lo iba a decir también pero, como es mi hermano, no queda bien. También le iba a decir que se podía dedicar a esto de los ordenadores :-) y que, estando como está en el paro, también podía alguna empresa buena rifárselo… En fin, dicho está.

  3. Pau

    Me ha encantado lo de “bueno, con algo de calor”. Deberías patentar esta interfaz basada-en-conversaciones-de-ascensor :-P

  4. Trebol-A

    Ale… gracias. Lo llamaremos interfaz-besugos-en-ascensor.

  5. Jorge (soloojos) 's status on Sunday, 01-Nov-09 17:39:01 UTC - Identi.ca

    [...] http://www.trebol-a.com/2009/10/30/chateando-con-tu-ordenador-mcabber/ a few seconds ago from web [...]

Deja aquí tu comentario

«

»