#!/bin/bash #################################################################################################################### # # full dokumentation on https://pushover.net/api # # POST an HTTPS request to https://api.pushover.net/1/messages.json with the following parameters: # token (required) - your application's API token # user (required) - the user/group key (not e-mail address) of your user (or you), # viewable when logged into our dashboard (often referred to as USER_KEY in our documentation and code examples) # message (required) - your message # # Some optional parameters may be included: # device - your user's device name to send the message directly to that device, # rather than all of the user's devices (multiple devices may be separated by a comma) # title - your message's title, otherwise your app's name is used # url - a supplementary URL to show with your message # url_title - a title for your supplementary URL, otherwise just the URL is shown # priority - send as # -2 to generate no notification/alert, # -1 to always send as a quiet notification, # 0 (default) to send notification with sound, vibration and display(not in quiet hours) # 1 to display as high-priority and bypass the user's quiet hours, or # 2 to also require confirmation from the user # retry # expire # timestamp - a Unix timestamp of your message's date and time to display to the user, rather than the time your message is received by our API # sound - the name of one of the sounds supported by device clients to override the user's default sound choice # # That's it. Make sure your application is friendly to our API servers and you're all set. # For more information on each parameter, keep reading or jump to a section at the left. # # Need help using our API or found an error in the documentation? Drop us a line. # #################################################################################################################### logpath="/var/log/pushover_icinga.txt" ICINGA2HOST="$(hostname)" CURLPROXY="" debug="1" ##################################################### #Übergebene Parameter # # PUSHOVERUSER = "$user.vars.pushover_user$" # PUSHOVERTOKEN = "$user.vars.pushover_token$" # PUSHOVERDEVICE = "$user.vars.pushover_device$" # # PUSHOVERPRIORITY = "$service.vars.pushover_priority$" # PUSHOVERRETRY = "$service.vars.pushover_retry$" # PUSHOVEREXPIRE = "$service.vars.pushover_expire$" # # NOTIFICATIONTYPE = "$notification.type$" # NOTIFICATIONCOMMENT = "$notification.comment$" # NOTIFICATIONAUTHOR = "$notification.author$" # # ICINGALONGDATETIME = "$icinga.long_date_time$" # # HOSTNAME = "$host.name$" # SERVICENAME = "$service.name$" # HOSTDISPLAYNAME = "$host.display_name$" # SERVICESTATE = "$service.state$" # SERVICEOUTPUT = "$service.output$" # ##################################################### #***** Service Monitoring on $ICINGA2HOST ***** PUSHOVERMESSAGE=$(cat << EOF ***** Service Monitoring on icinga ***** $SERVICEDISPLAYNAME on $HOSTDISPLAYNAME is ${SERVICESTATE}! Info: $SERVICEOUTPUT When: $ICINGALONGDATETIME Service: $SERVICENAME Host: $HOSTNAME EOF ) #Wenn ein Kommentar eingetragen wurde (Downtimekommentar, Benachrichtigungskommentar), wird dieser angehangen if [ -n "$NOTIFICATIONCOMMENT" ] then PUSHOVERMESSAGE=$(cat << EOF $PUSHOVERMESSAGE Comment: $NOTIFICATIONCOMMENT Author: $NOTIFICATIONAUTHOR EOF ) fi PUSHOVERTITLE="$NOTIFICATIONTYPE - $HOSTDISPLAYNAME - $SERVICEDISPLAYNAME is $SERVICESTATE" #Wenn die Priorität 2 vergeben wurde, ist ein retry zwingend erforderlich #Sollte retry nicht gesetzt sein, wird er auf 30 gesetzt if [ "$PUSHOVERPRIORITY" = "2" ] && [ "$PUSHOVERRETRY" = "" ] then PUSHOVERRETRY="30" fi #Wenn die Priorität 2 vergeben wurde, ist ein expire zwingend erforderlich #Sollte expire nicht gesetzt sein, wird er auf 300 gesetzt if [ "$PUSHOVERPRIORITY" = "2" ] && [ "$PUSHOVEREXPIRE" = "" ] then PUSHOVEREXPIRE="300" fi #Kommando, um per curl die Pushover-message zu verschicken failstate=$(curl \ --silent \ --insecure --proxy "$CURLPROXY" \ --form-string "token=$PUSHOVERTOKEN" \ --form-string "user=$PUSHOVERUSER" \ --form-string "message=$PUSHOVERMESSAGE" \ --form-string "title=$PUSHOVERTITLE" \ --form-string "priority=$PUSHOVERPRIORITY" \ --form-string "retry=$PUSHOVERRETRY" \ --form-string "expire=$PUSHOVEREXPIRE" \ --form-string "device=$PUSHOVERDEVICE" \ --location https://api.pushover.net/1/messages.json) #Wenn das debugging eingeschaltet ist, wird die folgende Meldung ausgegeben #$logpath sollte vorhanden sein und auf nagios:nagios gesetzt sein if [ "$debug" = "1" ] then cat << EOF >> "$logpath" ########################################### Debugging-Tool ########################################### DatumZeit: $(date) PUSHOVERTOKEN: $PUSHOVERTOKEN PUSHOVERUSER: $PUSHOVERUSER PUSHOVERTITLE: $PUSHOVERTITLE PUSHOVERDEVICE: $PUSHOVERDEVICE PUSHOVERPRIORITY: $PUSHOVERPRIORITY PUSHOVERRETRY: $PUSHOVERRETRY PUSHOVEREXPIRE: $PUSHOVEREXPIRE NOTIFICATIONTYPE: $NOTIFICATIONTYPE NOTIFICATIONCOMMENT: $NOTIFICATIONCOMMENT NOTIFICATIONAUTHOR: $NOTIFICATIONAUTHOR HOSTDISPLAYNAME: $HOSTDISPLAYNAME SERVICEDISPLAYNAME: $SERVICEDISPLAYNAME SERVICESTATE: $SERVICESTATE ICINGALONGDATETIME: $ICINGALONGDATETIME ICINGA2HOST: $ICINGA2HOST SERVICEOUTPUT: $SERVICEOUTPUT SERVICENAME: $SERVICENAME pushover json output: $failstate EOF fi