18/04/16

SMS-Gateway für Icinga im Selbstbau

Vor kurzem kam mir der Gedanke, dass Icinga nicht nur Mails schicken könnte sondern doch auch SMS. Sozusagen eine dreifache Absicherung. Sollte etwas schief laufen bekomme ich derzeit auf die Firmen Mail-Adresse wie auch auf die private Mail-Adresse eine Nachricht. Doch was wenn beide Mailserver nicht funktonieren? Dann bekomme ich in Zukunft auch noch eine SMS. Das ganze fast zum 0-Kostenpreis.

SMS Gateway mit Gammu

Ich hatte noch einen alten MF190 Datenstick rumliegen, einfach perfekt für mein Vorhaben dachte ich. Unter Linux kann man sich mit dem Tool Gammu sein eigenes SMS-Gateway basteln. Unter Ubuntu dazu einfach das Paket gammu installieren. Anschließend mit dem Befehl gammu-config die Konfiguration erledigen. So sieht meine aus:

gammu-config

Um den passenden USB-Port zu finden einfach mit dem Befehl dmesg | grep ttyUSB diesen herausfinden.

Mit dem Befehl gammu –getsecuritystatus kann man auslesen ob aktuell eine PIN Eingabe erwartet wird oder nicht. Wird diese erwartet einfach mit gammu –entersecuritycode PIN 1234 (1234 ist der PIN) den PIN eingeben. Nun kann man sich mittels echo „TEST“ | gammu sendsms TEXT NUMMER bereits selbst eine erste Test-SMS schicken.

Funktioniert dies kann man nun zum nächsten Schritt übergehen.

SMS Daemon installieren und einrichten

Mit dem Befehl apt-get install gammu-smsd den Daemon für Gammu installieren. Dann muss das config-File angepasst werden, ich hab das mit nano /etc/gammu-smsdrc erledigt. Dies ist meine Config-Datei:

gammu smsd config

Den Daemon mit service gammu-smsd start starten. Auch jetzt kann man sich wieder selbst eine Test-SMS schicken. Dieses Mal mit dem Befehl gammu-smsd-inject TEXT NUMMER „TEST“. Hat das auch funktioniert geht es weiter.

Einbindung in Icinga

Bei der Einbindung in Icinga habe ich dann die beiden Scripts sendsms.pl und receivesms.pl benutzt. Danke an Thesysadmin.

Diese beiden Scripts am Icinga-Server unter /usr/bin speichern, anschließend die Rechte noch anpassen. Nun die commands.cfg wie folgt anpassen:

#’notify-service-by-sms‘ command definition
define command{
command_name notify-service-by-sms
command_line /usr/bin/sendsms.pl –type $NOTIFICATIONTYPE$ –servicedesc „$SERVICEDESC$“ –hostname „$HOSTNAME$“ –state „$SERVICESTATE$“ –datetime „$SHORTDATETIME$“ –info „$SERVICEOUTPUT$“ –contact „$CONTACTPAGER$“
}

# ’notify-host-by-sms‘ command definition
define command{
command_name notify-host-by-sms
command_line /usr/bin/sendsms.pl –type „$NOTIFICATIONTYPE$“ –hostname „$HOSTNAME$“ –state „$HOSTSTATE$“ –datetime „$SHORTDATETIME$“ –info „$HOSTOUTPUT$“ –contact „$CONTACTPAGER$“
}

Auch die contacts.cfg muss angepasst werden, hier ein Beispielkontakt:

define contact{
contact_name Beispiel; Short name of user
use generic-contact ; Inherit default values from generic-contact template (defined above)
alias Beispielkontakt; Full name of user

email xyz@mail.at;
pager 1234/1234567;

host_notification_commands notify-host-by-sms
service_notification_commands notify-service-by-sms
}

Nun den Icinga-Benutzer noch in die gammu Gruppe übernehmen: usermod -aG gammu icinga.

Abschließend muss noch ein Cronjob eingerichtet werden. Dieser prüft regelmäßig ob im SMS-Eingang eine neue Nachricht vorhanden ist und setzt dann ein ACK Flag für den betreffenden Service im Icinga. Dazu die Datei /etc/crontab wie folgt anpassen.

*/5 * * * * root /usr/bin/receivesms.pl

Damit wird alle 5 Minuten geprüft ob eine SMS im Eingang vorhanden ist.

Mit service icinga reload  Icinga neustarten. Bei Problemen wird nun eine SMS an eure Telefonnummer gesendet. Wollt ihr das Problem einen ACK-Flag verpassen, einfach eine SMS mit der ID als Inhalt zurückschicken.

Autor: Christoph

IT mit Herz und Seele. Interessiert sich für fast alles wofür Technical-Life steht und hat hier Anfangs an den Mühlen gedreht. Serienjunkie aus Überzeugung. Twitter: @technicallife

Linux , , , , , ,

Schreibe einen Kommentar

Pflichtfelder sind mit * markiert.