sendxmpp: Notificaciones ante eventos en un Jabber [Actualización]

Actualización Pues he vuelto a intentar instalar este script en otra máquina y ha sido un sufrimiento muy grande. Tras tres horas pelenado con módulos de cpan, paquetes de debian y viendo que mi error era recurrente, al final he buscado cómo mandar un mensaje de XMPP en python en el pato y tras coger lo primero que he pillado y diez minutos de mierda después, ha salido lo siguiente que funciona mejor para mis necesidades, según parece.

Instalamos python-xmpp:

# aptitude install python-xmpp

Y creamos el siguiente script:

#!/usr/bin/env python

import xmpp
from os import sys as sys

username = 'usuario'
passwd = 'password'
file_name = sys.argv[1]
to = sys.argv[2]

file = open(file_name,'r')

msg = file.read()

client = xmpp.Client('elbinario.net',debug=[])
client.connect(server=('elbinario.net',5222))
client.auth(username, passwd, 'botty')
client.sendInitPresence()
message = xmpp.Message(to, msg)
message.setAttr('type', 'chat')
client.send(message)

Se ejecuta tal que así:

python sendxmpp.py /path/to/file example@jid.com

Moraleja: a veces es mejor dedicar un tiempo a hacer tus herramientas que usar herramientas ya hechas.


Hoy me han enseñado esta curiosa herramienta. Cómo dice el título, permite enviar mensajes. La parte de “ante eventos” debemos ponerla nosotras, según lo que queramos. Para instalarlo:

aptitude install sendxmpp

O podemos compilarlo:

aptitude install libconfig-yaml-perl libnet-xmpp-perl libanyevent-xmpp-perl
git clone https://github.com/lhost/sendxmpp.git
perl Makefile.PL
make
make install

Un ejemplos de uso:

#!/bin/bash
last=$(last -i | sed 's/ \+/|/g' | cut -d'|' -f3 | tail -n3 | head -n1)
echo "Se ha iniciado sesión desde $last." | sendxmpp -n -s "Inicio de sesión en $HOSTNAME" \ 
drymer@elbinario.net &

La primera variable, $last, muestra la IP del último inicio de sesión, con ayuda de sed, cut, tail y head.

En ~/.sendxmpprc ponemos el inicio de sesión: mayordomo@elbinario.net soyMayordomo

Perfecto para diversas tareas de administración y scripting.

1 Comment

Leave a Reply

Your email address will not be published. Required fields are marked *

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax