You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

84 lines
2.1 KiB
Bash

#!/bin/bash
notify_host="https://notify.everwatch.global"
channel="EWG"
alertType=""
msgTitle=""
message=""
tag="exclamation"
priority="3"
state=""
testMode=""
### Define command for service
### define command {
### command_name notify-service-by-ntfy
### command_line $USER1$/notify-by-ntfy.sh -t service -ha "$HOSTALIAS$" -h "$HOSTNAME$" -hs "$HOSTSTATE$" -ld "$LONGDATETIME$" -nt "$NOTIFICATIONTYPE$" -s "$SERVICEDESC$" -ss "$SERVICESTATE$"
### }
while [ -n "$1" ]; do
case "$1" in
--test) testMode="true"; shift 1;;
-t|--type) alertType="$2"; shift 2;;
-ha) NAGIOS_HOSTALIAS="$2"; shift 2;;
-h) NAGIOS_HOSTNAME="$2"; shift 2;;
-hs) NAGIOS_HOSTSTATE="$2"; shift 2;;
-ld) NAGIOS_LONGDATETIME="$2"; shift 2;;
-nt) NAGIOS_NOTIFICATIONTYPE="$2"; shift 2;;
-s) NAGIOS_SERVICEDESC="$2"; shift 2;;
-ss) NAGIOS_SERVICESTATE="$2"; shift 2;;
*) shift 1;;
esac
done
case "$NAGIOS_NOTIFICATIONTYPE" in
PROBLEM) tag="bangbang";;
RECOVERY) tag="ok";;
ACKNOWLEDGEMENT) tag="ok_hand";;
FLAPPINGSTART) tag="hatched_chick";;
FLAPPINGSTOP) tag="hourglass_flowing_sand";;
DOWNTIMESTART) tag="sleeping_bed";;
DOWNTIMEEND) tag="sunny";;
*) tag="exclamation";;
esac
do_notify() {
[ -n "$1" ] && channel="${channel}-${1}"
curl -s \
-H "Title: ${msgTitle}" \
-H "Tags: ${tag}" \
-H "Priority: ${priority}" \
-d "${message}" \
${notify_host}/${channel}
}
do_host() {
msgTitle="HOST ${NAGIOS_NOTIFICATIONTYPE}"
message="$NAGIOS_NOTIFICATIONTYPE $NAGIOS_HOSTNAME is $NAGIOS_HOSTSTATE $NAGIOS_LONGDATETIME"
do_notify "Hosts"
}
do_service() {
msgTitle="SERVICE ${NAGIOS_NOTIFICATIONTYPE}"
message="$NAGIOS_NOTIFICATIONTYPE $NAGIOS_SERVICEDESC @ $NAGIOS_HOSTALIAS is $NAGIOS_SERVICESTATE $NAGIOS_LONGDATETIME"
do_notify "Services"
}
if [ -n "$testMode" ]; then
NAGIOS_NOTIFICATIONTYPE="Test"
NAGIOS_HOSTNAME="FakeHost"
NAGIOS_HOSTSTATE="OK"
NAGIOS_SERVICEDESC="FakeService"
NAGIOS_HOSTALIAS="FakeHostAlias"
NAGIOS_SERVICESTATE="OK"
NAGIOS_LONGDATETIME="Today"
fi
case "$alertType" in
h|host|host) do_host;;
s|svc|service) do_service;;
*) shift 1;;
esac
exit