Einfaches Status-Monitoring mit Jabber/XMPP

Wer kennt es nicht, Emails für jeden Krampf. Das schlimmste ist wenn man morgens erstmal anfangen muss alle Emails zu sichten und zu archivieren/löschen.

Eine der Sachen die man sich dabei sparen kann sind z.B. Statusmails von Backups.

Diese kann man recht elegant über Jabber schicken lassen und so mit relativ wenig Aufwand lesen und “archivieren”.

Des weiteren setzt Emailversand einen korrekt eingerichteten SMTP-Server voraus, welcher auch gerne mal als Spamschleuder mißbraucht wird.

Anacron Task

#!/usr/bin/python2
import sys
import xmpp
import ConfigParser

if ( len (sys.argv) < 3 ): print ("usage: sendxmpp.py resource text\n") print (" resource: jabber resource") print (" text: message to send\n") else: snd = sys.argv[1] msg = sys.argv[2] config = ConfigParser.ConfigParser() # read ini file to ConfigParser data = config.read ( 'statxmpp.ini' ) if ( len(data) == 0): print ("could not read >>statxmpp.ini<<" )
else:
# get values
login = config.get( 'Connection', 'user' )
pwd = config.get( 'Connection', 'password' )
srv = config.get( 'Connection', 'server' )
recv = config.get( 'Connection', 'destination' )

cnx = xmpp.Client( srv, debug=[] )
cnx.connect( server=( srv ,5222) )
cnx.auth(login, pwd, snd )
cnx.send( xmpp.Message( recv , msg ) )

Das Skript erwartet eine Konfigurationsdatei mit den entsprechenden Einträgen für den erfolgreichen Verbindungsaufbau. Dazu zählen Benutzername, Passwort, der genutzte Server und natürlich die Empfängeradresse. Das Muster sieht wie folgt aus.

[Connection]
# username
user=
# password
password=
# receiver
destination=
# jabberserver to connect
server=

Abhängigkeiten des Skriptes sind die Pythonmodule pyxmpp und ConfigParser, welche recht schnell installiert sind. Der rsnapshot wurde von mir dann noch wie folgt abgeändert:

#!/bin/sh
## save stderr to var
ERR=$(/usr/bin/rsnapshot daily 3>&1 1>&2 2>&3)
### if command fails report via xmpp
if [ $? -ne 0 ]; then
sendxmpp.py backup_status "${ERR}"
fi

und benachrichtigt mich über Probleme beim Backup. Empfangen kann man das Ganze dann mit einem Jabber-Client seiner Wahl (bspw. Pidgin, Empathy usw.) oder lässt es sich gleich auf Telefon schicken mit z.B. IM+, je nach Plattform oder App.