monitoring_and_alerting_scr.../dns-down.sh

34 lines
1.3 KiB
Bash

#!/bin/bash
# Dependencies: curl, openssl, dig
dns_server=1.1.1.1 # DNS server to test query
dns_port=53 # DNS UDP port (Default is 53)
gotify_server="https://push.gotify.example" # Gotify server address (including http:// or https://)
gotify_api_key="###############" # Gotify server application token for this script
# To do: Add sanity checks for the configuration variables
# Stateful notifications (only send one notification when it goes down, one when it comes backup up, and reminders every x hours)
# Log notification push errors to ~/.offline_error and print them at login with .bashrc
# First argument is the message to be pushed, second argument is the message priority (integer from 0 to 10, 0 being low priority and 10 being high)
gotify_send () {
if [ "$2" -ge 0 ] && [ "$2" -le 10 ]; then # Message priority integer sanity check. Default to 5 on failure.
priority=$2
else
>&2 echo "\"$2\" isn't a valid priority. Defaulting priority to 5."
priority=5
fi
curl -s -X POST "$gotify_server/message?token=$gotify_api_key" -F "title=Message from: $HOSTNAME" -F "message=$1" -F "priority=$priority"
return $?
}
if dig @$dns_server -p $dns_port google.com > /dev/null ; then # Default timeout is 5 seconds
exit 0
else
gotify_send "DNS Server $dns_server#$dns_port isn't responding to queries" 4
exit 1
fi