YAPS ist ein Tool zum Versenden von SMS über Modem bzw. eine ISDN-Karte.
Als ISDN-Karte empfiehlt sich:
Damit eine ISDN-Karte auch funktioniert, muss noch das Paket „isdnutils“ installiert werden.
apt-get install isdnutils
Wichtig!!! Durch die Installation des Paketes isdnutils wird die „default route“ auf die ISDN-Karte konfiguriert. Um dies zu korrigieren, bitte wie im Artikel Isdnutils beschrieben vorgehen.
Das Tool yaps
ist im Downloadbereich unter: http://www.jbackes.de/downloads/yaps/yaps-0.96.tar.gz zu finden.
Hier liegt auch ein bereit kompiliertes yaps-Binary http://www.jbackes.de/downloads/yaps/yaps.
Sollte dies nicht funktionieren, kann über das tar.gz wie folgt neu kompiliert werden.
make depend make make install
Die Binär-Datei 'yaps
' wird nach /usr/sbin/ kopiert.
cp yaps /usr/sbin
Seine Konfiguration holt YAPS aus der Datei /etc/yaps.rc
. Eine vorkonfigurierte yaps.rc gibt es ebenfalls im Downloadbereich unter: http://www.jbackes.de/downloads/yaps/yaps.rc
cp yaps.rc /etc/
Außerdem muss der User „nagios“ in der Gruppe „dialout“ sein, damit er auch auf das ISDN-Interface zugreifen darf.
adduser nagios dialout
Wichtig:<BR>
Ab Ubuntu Version 9.10 funktioniert der oben beschriebene Weg nicht mehr. Aus noch ungeklärten Gründen lässt sich zwar die SMS versenden, yaps bleibt aber beim „hangup“ stehen, so dass das Interface gesperrt ist und keine weitere SMS mehr versendet werden kann.
Als „workaround“ kann mit den CAPI-Treibern gearbeitet werden.
Um die Fritzcard über CAPI mit YAPS ansprechen zu können, müssen folgende Pakete installiert werden:
apt-get install capiutils build-essential linux-headers-2.6.32-24-generic
Mit den capiutils wird eine Modul-Blacklist erzeugt, welche verhindert, dass die hisax-Treiber geladen werden. Zusätzlich muss hier noch der Eintrag blacklist avmfritz
hinzugefügt werden. <BR>Die /etc/modprobe.d/blacklist-capiutils.conf
hat somit folgenden Inhalt:
blacklist hisax blacklist hisax_fcpcipnp blacklist avmfritz
Nun muss ein neues Kernel-Modul (fcpci) kompiliert und ins System integriert werden. Eine vorkompilierte Version (fcpci.ko) sowie die Quellcode (fritz-fcpci-src-2.6.31_untested.tar.bz2) finden sich im Download-Bereich.
wget http://www.jbackes.de/downloads/nagios/fcpci.ko wget http://www.jbackes.de/downloads/nagios/fritz-fcpci-src-2.6.31_untested.tar.bz2
Das fertige Modul muss dann natürlich noch an die passende Stelle kopiert werden und dem System bekannt gegeben werden. Geladen wird es beim Systemstart automatisch, solange die blacklist wie oben angegeben gepflegt ist.
mkdir /lib/modules/`uname -r`/kernel/extras cp fcpci.ko /lib/modules/`uname -r`/kernel/extras depmod -a
Zur Nutzung von CAPI muss nach einem Systemstart noch der Command capiinit start
ausgeführt werden. Dieses kann in das capiutils-Startskript eingebunden werden.
Außerdem muss eine „CAPI-enabled“ Version von YAPS genutzt werden (yaps-0.96.c4). Ein entsprechendes tar und eine vorkompilierte Version (yaps.capi) finden sich im Download-Bereich. Die ebenfalls im Download-Bereich liegende yaps.rc.capi
kann benutzt werden. Unterschied zur sonst benutzten yaps.rc
sind lediglich die beiden device
-Einträge.
device capi/1/<MSN>
Natürlich muss <MSN>
noch durch die MSN des genutzten ISDN-Anschlusses ausgetauscht werden.
wget http://www.jbackes.de/downloads/nagios/yaps-0.96.c4.tar.gz wget http://www.jbackes.de/downloads/nagios/yaps.capi wget http://www.jbackes.de/downloads/nagios/yaps.rc.capi cp yaps.capi /usr/sbin/yaps chmod 755 /usr/sbin/yaps cp yaps.rc.capi /etc/yaps.rc
Außerdem muss der User „nagios“ in der Gruppe „dialout“ sein, damit er auch auf das ISDN-Interface zugreifen darf.
adduser nagios dialout
In den contacts.cfg der wird festgelegt, wer und bei welchem Vorfall benachrichtigt wird.
define contact{ contact_name name alias Vorname Nachname service_notification_period 24x7 host_notification_period 24x7 host_notification_options n,d,u,r service_notification_options n,w,u,c,r service_notification_commands notify-by-sms host_notification_commands host-notify-by-sms pager 0123456789 }
Unter Ubuntu werden standardmäßig unter /etc/nagios-plugins/config
die commands definiert. Hier muss definiert werden, (z.B.:in einer eigenen Datei jb_alarmierung.cfg
) was per SMS an den Pager/das Handy geschickt wird.
####### SMS Alarmierung ############### # 'notify-by-sms' command definition define command{ command_name notify-by-sms command_line PFAD/yaps $CONTACTPAGER$ "$NOTIFICATIONTYPE$: $HOSTNAME$/$SERVICEDESC$ is $SERVICESTATE$" } # 'host-notify-by-sms' command definition define command{ command_name host-notify-by-sms command_line PFAD/yaps $CONTACTPAGER$ "$NOTIFICATIONTYPE$ alert - Host $HOSTNAME$/$HOSTADDRESS$ is $HOSTSTATE$" }
Bei großen Umgebungen, kann es vorkommen, dass mehrere SMS zeitgleich versendet werden sollen. Hier kann es dann zu Problemen können, das jeweils nur ein Prozess die ISDN-Karte nutzen kann. Um dies abzufangen und gleichzeitig eine Protokollierung über die versendeten SMS/Pager-Nachrichten zu erhalten, wird hier nicht direkt das Binary 'yaps' sondern ein selbstgeschriebenes Shell-Skript 'yaps.sh' aufgerufen.
Für den Fall, dass das die ISDN-Karte belegt sein sollte, ist ein retry intervall von 10 Versuchen in 10sec Abstand definiert.
yaps.sh:
#!/bin/sh DATE=`date +%b" "%d" "%T` LOGFILE="/opt/nagios/nec/var/log/pager.log" ptarget=$1 pmsg=$2 declare -i RENUM=0 declare -i i=0 /usr/bin/yaps -C /etc/yaps.rc $ptarget "$pmsg" RC=$? while [ $i -lt 10 ]; do if [ "$RC" = "0" ]; then i=10 else DATE=`date +%b" "%d" "%T` echo "waiting for device" echo "$DATE - -> waiting for device" /bin/sleep 10 /usr/bin/yaps -C /etc/yaps.rc $ptarget "$pmsg" RC=$? RENUM=$i+1 echo "$DATE - RETRY $RENUM -> $ptarget - $pmsg" >> $LOGFILE fi; i=$i+1 done DATE=`date +%b" "%d" "%T` if [ "$RC" = "0" ]; then echo "$DATE - SUCCESS -> $ptarget - $pmsg" >> $LOGFILE else echo "$DATE - ERROR -> $ptarget - $pmsg" >> $LOGFILE fi; exit $RC
— JB 2008/11/27 17:35