Wer kennt das nicht? Endlich Freitag… Nur wann ist der Picdump auf BA online?
Nun ist Schluss mit der F5 Drückerrei!
Auf Basis von Thorbens Blog und ein wenig Bash war es recht einfach dies zu realisieren.
(OpenNMS wird nicht zwangsläufig gebraucht. In dem Bash Script kann man auch ein sendmail Befehl hinterlegen und gut ist. Aber ich habe nun mal einen OpenNMS am Start ;) )

Als erstes habe ich eine „Provisioning Group“ in OpenNMS angelegt. Dort habe ich das IP Interface „bildschirmarbeiter.com“ hinzugefügt (die passende IP zieht er sich alleine). Dann die Detectoren entfernt, damit keine Dienste dort erkannt werden.
Hier ein paar Screenshots dazu:


Dann benötigt man ein Event. Unter /etc/opennms/events/ habe ich die Datei picdump.events.xml erstellt und das hinzugefügt:

<events>
    <event>
        <uei>uei.opennms.org/Custom/opennms/picdump</uei>
        <event-label>BA Picdump</event-label>
        <descr>BA picdump is online</descr>
        <logmsg dest="logndisplay">%parm[url]%.</logmsg>
        <severity>Normal</severity>
    </event>
</events>

Der NMS Dienst muss dafür leider neu gestartet werden:

service opennms restart

Dieses Script lasse ich jeden Freitag von 9-12 (jede Minute) per Cron auf meinem OpenNMS Server laufen. Es überprüft, ob die URL des Picdumps online ist.

#!/bin/bash
#Pfad zum send-event Script
SEND_EVENT=/usr/share/opennms/bin/send-event.pl
# DIE UEI von dem Picdump Event
ONMS_UEI_OK=uei.opennms.org/Custom/opennms/picdump
# Die Node ID von Bildschirmarbeiter (über Provisioning Group, Interface: bildschirmarbeiter.com hinzugefügt)
ONMS_NODEID=388
# Das Interface von dem Bildschirmarbeiter Node
ONMS_IF=94.23.194.125

datum=`date -d today +%d.%m.%Y`
url=http://www.bildschirmarbeiter.com/pic/bildschirmarbeiter_-_picdump_$datum
if [ ! -e /tmp/picdump ]; then
        if [[ `curl -I $url 2>/dev/null | grep '200 OK' | tr -d "\r"`  == "HTTP/1.1 200 OK" ]]; then
                ${SEND_EVENT} ${ONMS_UEI_OK} -n ${ONMS_NODEID} -i ${ONMS_IF} -x 3 -p 'url '$url''
                touch /tmp/picdump
        fi
fi

Die Datei /tmp/picdump wird nur dafür angelegt, damit man sicherstellen kann, dass bei Prüfungserfolg (d.h. Picdump online!) nicht mehr weiter geprüft wird und man noch mehr Mails dazu bekommt.

Das ist der Cronjob dazu:

sudo crontab -e

# m h  dom mon dow   command
*       9-12    *       *       FRI     /jobs/picdump.sh

Allerdings muss irgendwann vor Freitagen um 9 Uhr diese Datei wieder weg sein. Daher noch ein Cronjob:

0       23      *       *       THU     rm /tmp/picdump

Dann noch eine Notification in OpenNMS angelegt und fertig (nicht vergessen: Der Destination Path muss noch erstellt werden)

<notification name="BA_picdump" status="on" writeable="yes">
        <uei>uei.opennms.org/Custom/opennms/picdump</uei>
        <rule>(IPADDR IPLIKE *.*.*.*)</rule>
        <destinationPath>BA_picdump</destinationPath>
        <text-message>%parm[url]%</text-message>
        <subject>BA Picdump online!</subject>
        <numeric-message>111-%noticeid%</numeric-message>
</notification>

PS: Falls jemand noch mal eine schöne Lösung dafür findet, die Notifications im NMS zu unterdrücken bzw. gleich mit automatisch zu bestätigen, bitte mal als Kommentar posten. Da kein zweites Event dazu kommt, kann ich auch nicht mit der notifd-config arbeiten.

  1. Srinivas sagt:

    Thanks for posting. Seems to be a very good solution. Will try out the same.