Ich nutze http://www.smstrade.de. Die haben eine recht einfache http-Schnittstelle. Prinzipiell geht jeder, der eine http-Schnittstelle bietet.
https://gateway.smstrade.de/?key=$GATEWAY_KEY&to=$NUMBER&route=basic&concat=1&cost=1&message_id=1&count=1&message=$SMS_MESSAGE
Das ganze in ein Script gegossen:
/usr/local/bin/send_nagios_sms.sh
#!/bin/bash GATEWAY_KEY=<key vom provider> MESSAGE=$1 SMS_MESSAGE=`php -r "echo urlencode('$MESSAGE');"` NUMBER=$2 LOGFILE=/var/log/nagios.sms.log date >> $LOGFILE echo $SMS_MESSAGE >> $LOGFILE wget -q -O - --no-check-certificate "https://gateway.smstrade.de/?key=$GATEWAY_KEY&to=$NUMBER&route=basic&concat=1&cost=1&message_id=1&count=1&message=$SMS_MESSAGE" >> $LOGFILE
Das script hat 2 Parameter:
Da die Nachricht url-encodiert werden muss und die Bash das nicht selbst kann, wird hier php dazu bemüht. Da auf dem Nagios-Server eh php für die Weboberfläche von Nagios installiert ist, sollte das kein Problem darstellen. Die Ausgaben, werden in ein Logfile geschrieben:
/etc/nagios3/commands.cfg
define command{ command_name notify-service-by-sms command_line /usr/local/bin/send_nagios_sms.sh "$NOTIFICATIONTYPE$ for $SERVICEDESC$ at host $HOSTALIAS$/$HOSTADDRESS$: $SERVICESTATE$" $CONTACTPAGER$ } define command{ command_name notify-host-by-sms command_line /usr/local/bin/send_nagios_sms.sh "$NOTIFICATIONTYPE$ for $HOSTNAME$/$HOSTADDRESS$: $HOSTSTATE$" $CONTACTPAGER$ }
Aufgrund von “concat=1” beim SMS-Versand kann die Nachricht bis zu 1530 Zeichen lang sein. Es werden entsprechend mehrere SMS versendet.
/etc/nagios3/conf.d/contacts.cfg
define contact{ contact_name ello-sms alias ello-sms service_notification_period 24x7 host_notification_period 24x7 service_notification_options c,r host_notification_options d,r,u service_notification_commands notify-service-by-sms host_notification_commands notify-host-by-sms pager +49xxxxxx } define contactgroup{ contactgroup_name admins alias Nagios Administrators members ello,ello-sms }
Ich hab für den SMS-Versand einen extra Kontakt definiert, dann ist man flexibeler. Man kann auch mehrere Kontakte definieren, die auch für unterschiedliche Dinge Nachrichten bekommen sollen.