FAQ


Wie kann ich Alarmierungen von Nagios per SMS versenden?

Sie können die Schnittstellen von SMS4.de nutzen, um Alarmbenachrichtungen von Nagios per SMS zu versenden. Zum Versand könnten Sie beispielsweise einen Wrapper (sms4nagios.pl, siehe unten) verwenden.

1) Speichern Sie das Perlskript sms4nagios.pl (s.u.) auf Ihrem Überwachungsserver
2) Editieren Sie die misccommands.cfg und fügen folgendes hinzu:

# 'notify-by-sms' command definition
define command{
        command_name    notify-by-sms
        command_line    perl /usr/bin/perl/sms4nagios.pl $CONTACTPAGER$ "$SERVICEDESC$ auf $HOSTNAME$ State: $SERVICESTATE$  @$DATETIME$ Info: $OUTPUT$"
        }

# 'host-notify-by-sms' command definition
define command{
        command_name    host-notify-by-sms
        command_line    perl /usr/bin/perl/sms4nagios.pl $CONTACTPAGER$ "Host $HOSTALIAS$ is $HOSTSTATE$ @$DATETIME$ Info: $OUTPUT$"
        }

Das Makro $CONTACTPAGER$ wird hier verwendet, um die Handynummer der zu benachrichtigenden Personen an den Wrapper zu übergeben. Bitte ändern Sie ggf. den Pfad zum Perlskript sms4nagios.pl entsprechend.

3) Pflegen Sie in Nagios einen Contact, der die Benachrichtigungen (24x7) erhalten soll:
# 'Alarm Handy' contact definition
define contact{
        contact_name                    Alarm
        alias                           Alarm-Handy
        service_notification_period     24x7
        host_notification_period        24x7
        service_notification_options    w,u,c,r
        host_notification_options       d,u,r
        service_notification_commands   notify-by-sms
        host_notification_commands      host-notify-by-sms
        pager                           491500123456
        }

4) Ändern Sie das Perlskript sms4nagios.pl: Das Beispiel nutzt die Email-Schnittstelle . Ersetzen Sie die Angaben für Kundennummer und berechtigte Email (Email freischalten hier). Der Versand kann auch über die HTTP-Schnittstelle erfolgen. Die Email-Schnittstelle hat neben der Einfachheit aber den Vorteil, dass Dubletten gefiltert (siehe Einstellungen) werden können, um bei einem größeren Ausfall nicht massenhaft die gleichen SMS zu erhalten.
#!/usr/bin/perl

#####################################################################
# sms4nagios.pl
# Beispielcode für den Versand von SMS mit Nagios
# Aufruf über Kommandozeile, Versand per Email-Schnittstelle (XML)
# Autor: Joachim Nenning info@sms4.de
# für www.sms4.de
#####################################################################

# prüfen, ob beide Kommandozeilen-Parameter übergeben wurden
unless ( scalar(@ARGV)==2 ) {
	die "2 Parameter erwartet: Handynr Nachricht\n";
}

# Parameter aus @ARGV auslesen
my $handynr = shift;	# Handynummer(n)
my $text = shift;	# Text der SMS

my @handyentities = map {
	"<handynr>".$_."</handynr>";
	} split(",",$handynr);


my $kdnr= "XY12345";#Bitte mit Ihrer Kundennr ersetzen


# Ihre Absenderkennung ( 6 bis 11 Zeichen Text oder 6 bis 14 Ziffern )
# nur relevant für Tarif 1 
my $absender = "NAGIOSALARM";

my $tarif = 1;# empfohlen: Tarif 1 mit Absenderkennung und Sendeberichten, direkte Terminierung im SMSC

my $to = 'xml@sms4.de';# E-Mail-Adresse des Gateways

my $from = 'meine@berechtigte-email.de';# eine berechtigte E-Mail-Adresse

my @sendmail_paths=(
'/usr/sbin/sendmail',
'/usr/bin/sendmail',
'/usr/lib/sendmail',
'/var/qmail/bin/sendmail'
);

my $SENDMAIL;

# prüfen, wo Sendmail sich befindet
foreach (@sendmail_paths){
	if (-e $_){
		$SENDMAIL=$_;
	}
}

die ("Kann Sendmail nicht finden\n") unless ($SENDMAIL);


# Mail an Gateway senden
open (SENDMAIL, "|$SENDMAIL -oi -t") or die "Kann Sendmail nicht starten\n";
print SENDMAIL <<"...";
Subject: $kdnr
To: $to
From: $from
MIME-Version: 1.0
Content-Type: text/plain; charset="iso-8859-15"
Content-Disposition: inline
Content-Transfer-Encoding: 8bit

<emailtosms>
  <sms>
    <text>$text</text>
   	@handyentities
    <absender>$absender</absender>
    <tarif>$tarif</tarif>
  </sms>
</emailtosms>
...
close(SENDMAIL);

Weitere Anpassungen sind denkbar: Man könnte z.B. zusätzlich den Tarif oder die Kundennummer als Parameter im command übergeben. Die Länge der Nachricht ist auf 160 Zeichen begrenzt (wird automatisch abgeschnitten). Sie können in den Versandoptionen die Eretierugn auf bis zu 765 Zeichen erlauben.

5) Zum testen Sie können das Perlskript auch direkt aufrufen:
perl /usr/bin/perl/sms4nagios.pl 491500123456 "Dies ist ein Test"
Um zu verhindern, dass Zeilenumbrüche im Text das Shellcommando abschneiden, könnte man z.B. so verfahren:
echo -e "zeile1\nzeile2" | tr -d "\n" | perl -pe 'print `perl /usr/bin/perl/sms4nagios.pl 491500123456 "$_"`'

Hinweise:
Der Versand via HTTP-Schnittstelle (Beispielskript auf Anfrage) ist u.U. etwas schneller, weil keine Email-Umwandlung erfolgen muss, Dubletten können dann aber nicht automatisch ausgefiltert werden.


Anregungen, Fragen, Fehler gefunden? E-Mail an info@sms4.de



Bei SMS4.de häufig gestellte Fragen und die Antworten. Klicken Sie auf den Verweis neben der Frage, um die jeweilige Antwort zu sehen.

Weitere Hinweise finden Sie in unserer Online Hilfe

Frage Antwort
Wie kann ich Alarmierungen von Nagios per SMS versenden? lesen... 
Wie wandle ich für den Massenversand eine Excel-Liste in *.csv um? lesen... 
Warum muss ich (m)eine Handynummer beim Beantragen des Testzugangs angeben? lesen... 
Wie kann ich einen Echtzugang bekommen? lesen... 
Wie kann ich SMS-Empfänger aus Outlook Express importieren? lesen... 
Wie kann ich einen Screenshot von meiner Online-Überweisung erstellen? lesen... 
Kann die Absenderkennung individuell eingestellt werden ? lesen... 
Wie kann ich mit der Zahnarztsoftware CHARLY SMS über sms4.de versenden? lesen... 
Kann ich ein Versende-Formular in meine Webseite einbinden ? lesen... 
Werden SMS mit falschen Empfängernummern berechnet ? lesen... 
Wo kann ich mein restliches Prepaid-Guthaben sehen? lesen... 
Kann ich SMS empfangen ? lesen... 
Bekomme ich eine Rechnung für meine Prepaid-Überweisung? lesen... 
Wie kann ich den Statuscode der HTTP-Schnittstelle verarbeiten? lesen... 
Wie versende ich Unicode / UCS Nachrichten? lesen... 
Wie lange dauert die Versendung eines Großauftrags ? lesen... 
Wie kann ich SMS aus der CSB-Warenwirtschaft versenden? lesen... 
Kann ich den Zeitpunkt der SMS Versendung beeinflussen ? lesen... 
Wie kann ich Gruppen die richtigen Mitglieder zuordnen ? lesen... 
How can I get a live account? lesen... 
Wie kann ich SMS aus dem Stundenplanprogramm versenden? lesen... 
Muss ich Umsatzsteuer zahlen auch wenn mein Firmensitz ausserhalb Deutschlands ist? lesen... 
Warum kommen SMS von Nagios, die über Email->SMS versendet werden, nicht an? lesen... 
When I register a test account, why do I have to provide a/my mobile number? lesen... 
Warum klappt der SMS Versand aus Flowfact heraus nicht? lesen...