Notification: Pushover
Alle benötigten Scripte und Konfigurations-Dateien wurden hinzugefügt
This commit is contained in:
147
notification/pushover/scripts/pushover-host-notification.sh
Executable file
147
notification/pushover/scripts/pushover-host-notification.sh
Executable file
@@ -0,0 +1,147 @@
|
||||
#!/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="0"
|
||||
|
||||
#####################################################
|
||||
#Übergebene Parameter
|
||||
#
|
||||
# PUSHOVERUSER = "$user.vars.pushover_user$"
|
||||
# PUSHOVERTOKEN = "$user.vars.pushover_token$"
|
||||
# PUSHOVERDEVICE = "$user.vars.pushover_device$"
|
||||
#
|
||||
# PUSHOVERPRIORITY = "$host.vars.pushover_priority$"
|
||||
# PUSHOVERRETRY = "$host.vars.pushover_retry$"
|
||||
# PUSHOVEREXPIRE = "$host.vars.pushover_expire$"
|
||||
#
|
||||
# NOTIFICATIONTYPE = "$notification.type$"
|
||||
# NOTIFICATIONCOMMENT = "$notification.comment$"
|
||||
# NOTIFICATIONAUTHOR = "$notification.author$"
|
||||
#
|
||||
# ICINGALONGDATETIME = "$icinga.long_date_time$"
|
||||
#
|
||||
# HOSTNAME = "$host.name$"
|
||||
# HOSTDISPLAYNAME = "$host.display_name$"
|
||||
# HOSTSTATE = "$host.state$"
|
||||
# HOSTOUTPUT = "$host.output$"
|
||||
#
|
||||
#####################################################
|
||||
|
||||
#***** Host Monitoring on $ICINGA2HOST *****
|
||||
PUSHOVERMESSAGE=$(cat << EOF
|
||||
***** Host Monitoring on icinga *****
|
||||
$HOSTDISPLAYNAME is $HOSTSTATE!
|
||||
Info: $HOSTOUTPUT
|
||||
When: $ICINGALONGDATETIME
|
||||
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 - Host $HOSTDISPLAYNAME is $HOSTSTATE!"
|
||||
|
||||
#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
|
||||
HOSTDISPLAYNAME: $HOSTDISPLAYNAME
|
||||
ICINGALONGDATETIME: $ICINGALONGDATETIME
|
||||
NOTIFICATIONTYPE: $NOTIFICATIONTYPE
|
||||
NOTIFICATIONCOMMENT: $NOTIFICATIONCOMMENT
|
||||
NOTIFICATIONAUTHOR: $NOTIFICATIONAUTHOR
|
||||
ICINGA2HOST: $ICINGA2HOST
|
||||
HOSTNAME: $HOSTNAME
|
||||
HOSTSTATE: $HOSTSTATE
|
||||
HOSTOUTPUT: $HOSTOUTPUT
|
||||
pushover json output: $failstate
|
||||
|
||||
EOF
|
||||
fi
|
||||
150
notification/pushover/scripts/pushover-service-notification.sh
Executable file
150
notification/pushover/scripts/pushover-service-notification.sh
Executable file
@@ -0,0 +1,150 @@
|
||||
#!/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
|
||||
Reference in New Issue
Block a user