User Tools

Site Tools


howtos:pushover_script_for_notifications

Table of Contents

Intro

I made this script because I needed to know immediately when my mailcow server rebooted/crashed, as it requires manual actions to get started.

As mailcow itself makes it easy to use Pushover I thought why not use that as well as it works great.

So, here is a simple bash script you can run by itself or insert it into crontab.

crontab example

@reboot root bash /usr/local/bin/pushover.sh "System start up: $(hostname -f)" "$(hostname -f) rebooted!" 2

The script takes three parameters, message, title, and priority. I use priority 2 (emergency) as it will keep nagging me until I react.

pushover.sh

#!/bin/bash

if [ $# -eq 0 ]; then
    echo "Usage: ./pushover <message> [title] [priority]"
    exit
fi

MESSAGE=$1
TITLE=$2
PRIORITY=${3:-0} # if you don't supply a priority it defaults to 0

if [ $# -lt 2 ]; then
    TITLE="`whoami`@${HOSTNAME}"
fi

APP_TOKEN="XXXX"
USER_TOKEN="YYYYY"

BASE_URL="https://api.pushover.net/1/messages.json"
POST_DATA="token=$APP_TOKEN&user=$USER_TOKEN&message=$MESSAGE&title=$TITLE&priority=$PRIORITY"

# Check if $3 is set to 2 and append retry and expire parameters to POST_DATA
if [ "$PRIORITY" -eq 2 ]; then
    POST_DATA="$POST_DATA&retry=60&expire=3600" # Just an example, you can set the values of retry and expire as per your needs
fi

curl -s -X POST -d "$POST_DATA" $BASE_URL > /dev/null 2>&1 &
howtos/pushover_script_for_notifications.txt · Last modified: 18/08/2023 20:09 by domingo