Prepaid-Guthaben für SMS-Benachrichtigung prüfen

1. Mai 2010 | Von | Kategorie: Monitoring | Availability

In einem anderen Beitrag habe ich ja bereits einen Weg vorgestellt, mit dem das Prepaid-Guthaben von SIM-Karten mittels SMS getestet werden kann. Nun will ich noch einen anderen Weg vorstellen. Hierbei werde ich USSD einsetzen um an die Informationen über den aktuellen Guthabenstand zu gelangen.

USSD steht für Unstructured Supplementary Service Data und stellt ein Übermittlungsdienst für GSM-Netze dar. Bekannt ist dieser Dienst den meisten durch die etwas kryptischen Tastenkombinationen wie *100# oder dergleichen. Diese Tastenkombinationen sind ja auf einem Handy einfach zu verwenden, jedoch mit einem GSM-Modem, welches für die Benachrichtigung an ein Nagios-System angebunden ist, sieht es schon deutlich schwieriger aus. Hierbei machen wir uns die Funktionalität des SMSServerTools3 zu nutze.

Auch wenn die wesentliche USSD-Funktionalität erst ab der kommenden Version 3.1.7 zur Verfügung stehen wird, können wir USSD-Nachrichten auch bereits jetzt mit einem Trick verwenden. Hierzu wird mit einem einfachen Bash-Skript um die ServerTool-Funktionalität herum der Guthabenstand erhoben. In der kommenden Version wird es einen separaten Eventhandler für die Verarbeitung von USSD-Nachrichten geben, dieser Eventhandler wird mit dem Parameter eventhandler_ussd in die Server-Konfiguration aufgenommen. Der Eventhandler wird dann in Zukunft die Auswertung und Benachrichtigung an Nagios übernehmen. Bis dahin sollte auch der folgende Weg sehr zufriedenstellend funktionieren.

Zunächst werden die SMSServerTools konfiguriert, damit diese in regelmäßigen Abständen das entsprechende USSD-Kommando absetzt.

regular_run_cmd = AT+CUSD=1,"*100#",15;
regular_run_interval = 60000
regular_run_logfile = /var/log/smsd_regular_run.log
regular_run_statfile = /var/log/sms_guthaben

Mit regular_run_cmd wird das Kommando, welches regelmäßig ausgeführt werden soll, definiert. In meinem Fall ist es die Abfrage des Guthabens mittels *100# mit dem entsprechenden Befehlen für das Modem.

Das Intervall wird mit regular_run_interval definiert. Nun kommen wir jedoch noch nicht an die Ausgabe die uns das Netz des Mobilfunkbetreibers zur Verfügung stellt. Normalerweise wird es ja auch direkt auf dem Display des Handys ausgegeben. Die SMSServerTools stellen uns jedoch zwei Möglichkeiten zur Verfügung um die Antwort des Netzbetreibers in Dateien zu schreiben. Die erste Möglichkeit wird mittels regular_run_logfile definiert. Hierdurch werden die Ausgaben in eine Log-Datei geschrieben. Nach jedem Aufruf des Kommandos wird die Ausgabe an das Logfile angefügt. Hierdurch wird das Parsen der Log-Datei ein wenig erschwert, weil wir eine zunehmende Anzahl an Einträgen verarbeiten müssten.

Eine weitere Möglichkeit wird durch den Konfigurationsparameter regular_run_statfile definiert. In dieser Datei wird nur die letzte Meldung des Kommandos gespeichert. Daher verwende ich auch diese Datei im weiteren Verlauf um das aktuelle Guthabenkonto abzufragen.

Der Inhalt dieser Datei könnte wie folgt aussehen:

2010-05-01 19:31:03,5, GSM1: CMD: AT+CUSD=1,"*100#",15;: OK +CUSD: 0," Aktuelles Xtra-Guthaben: 11.24 EUR. Xtra SMS Option S: 5Ct. ins T-Mobile Netz.",0

Zunächst habe ich mir folgendes Skript geschrieben mit dem ich die Stat-Datei parse.

#!/bin/bash

REGSTAT="/var/log/sms_guthaben"
CUT="/bin/cut"
CAT="/bin/cat"
TR="/usr/bin/tr"

if [ -f $REGSTAT ]
then
 CONTENT=$( $CAT $REGSTAT | $CUT -d ':' -f 8 | $CUT -d "E" -f 1 | $TR -d "." | $TR -d " " )
 if [ $CONTENT -lt 150 ]
 then
 echo "Guthaben: $CONTENT Cent|guthaben=$CONTENT;;150;0;"
 exit 1
 else
 echo "Guthaben: $CONTENT Cent|guthaben=$CONTENT;;150;0;"
 exit 0
 fi
else
 echo "Guthaben-File not found"
 exit 2
fi
exit 0

Mit diesem Skript wird die Datei geparst, der Guthabenstand extrahiert und anschließend mit einem Sollwert verglichen. Anschließend wird eine Ausgabe – inklusive Performancedaten – für Nagios vorbereitet. Das Parsen des Guthabenstandes ist an die jeweiligen Mobilfunkbetreiber anzupassen. In meinem Fall handelt es sich um eine T-Mobile XtraCard.

Nun muß nur noch die Nagios-Service und -Command-Definition erstellt werden. Ich rufe als Kommando hierbei einfach direkt das Skript ohne Parameter auf. Es ließe sich jedoch auch schnell an variable Schwellwerte anpassen.

Post to Twitter Post to Yahoo Buzz Post to Delicious Post to Digg Post to Facebook Post to Ping.fm Post to Reddit

Tags: | | | | |

Schreibe einen Kommentar

Fühle dich ermuntert einen Kommentar, Anmerkungen, Hinweise oder deine Ideen zum Thema zu hinterlassen. Wir freuen uns über deine Rückmeldung.