From 928447e5ef9580cfd6ed9ac0efac4c33e451a9e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yann=20M=C3=B6lle?= Date: Wed, 12 Apr 2023 07:08:03 +0000 Subject: [PATCH] =?UTF-8?q?=E2=80=9Epushover.sh=E2=80=9C=20hinzuf=C3=BCgen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pushover.sh | 144 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 144 insertions(+) create mode 100644 pushover.sh diff --git a/pushover.sh b/pushover.sh new file mode 100644 index 0000000..a311740 --- /dev/null +++ b/pushover.sh @@ -0,0 +1,144 @@ + +#!/bin/sh +# +# pushover.sh: Shell script to push messages to mobile devices via Pushover (https://pushover.net/) +# +# Florian Schäfer , 2013-02-04 +# +# Requires curl(1), grep(1) and sed(1). +# + +VERSION="1.0" +PROGNAME="$(basename $0)" + +CONFIG="${HOME}/.pushover" + +PUSHOVER_USER_TOKEN="" +PUSHOVER_API_TOKEN="" +PUSHOVER_TARGET_DEVICE="" +PUSHOVER_MESSAGE_TEXT="" +PUSHOVER_MESSAGE_TITLE="" +PUSHOVER_MESSAGE_URL="" +PUSHOVER_MESSAGE_URL_TITLE="" +PUSHOVER_MESSAGE_PRIORITY="" +PUSHOVER_MESSAGE_TIMESTAMP="" +PUSHOVER_NOTIFICATION_SOUND="" + +if [ -f "${CONFIG}" ] +then + . "${CONFIG}" +fi + +print_usage () { + cat < -a [] message + +Supported options: + -h print this help message + -v print version + -u user key (not e-mail address) + -a application's API token + -m the message to send + -d device identifier to send the message directly to + -q message's title, otherwise uses the app's name + -w <url> a supplementary URL to show with the message + -e <url title> a title for the supplementary URL + -p <priority> set to "1" to display as high-priority and bypass quiet hours, + or "-1" to always send as a quiet notification + -t <timestamp> a Unix timestamp to show message the with a particular time + -s <sound> name of one of the sounds supported by device clients to override + the user's default sound choice +EOT +} + +print_version () { + echo "${PROGNAME} ${VERSION}" +} + +push_message () { + curl -ks \ + -F "token=${PUSHOVER_API_TOKEN}" \ + -F "user=${PUSHOVER_USER_TOKEN}" \ + -F "message=${PUSHOVER_MESSAGE_TEXT}" \ + -F "device=${PUSHOVER_TARGET_DEVICE}" \ + -F "title=${PUSHOVER_MESSAGE_TITLE}" \ + -F "url=${PUSHOVER_MESSAGE_URL}" \ + -F "url_title=${PUSHOVER_MESSAGE_URL_TITLE}" \ + -F "priority=${PUSHOVER_MESSAGE_PRIORITY}" \ + -F "timestamp=${PUSHOVER_MESSAGE_TIMESTAMP}" \ + -F "sound=${PUSHOVER_NOTIFICATION_SOUND}" \ + https://api.pushover.net/1/messages.json +} + +while getopts hvu:a:m:d:q:w:e:p:t:s: OPT; do + case "${OPT}" in + h|\?) + print_version + print_usage + exit 0 + ;; + v) + print_version + exit 0 + ;; + u) + PUSHOVER_USER_TOKEN="${OPTARG}" + ;; + a) + PUSHOVER_API_TOKEN="${OPTARG}" + ;; + m) + PUSHOVER_MESSAGE_TEXT="${OPTARG}" + ;; + d) + PUSHOVER_TARGET_DEVICE="${OPTARG}" + ;; + q) + PUSHOVER_MESSAGE_TITLE="${OPTARG}" + ;; + w) + PUSHOVER_MESSAGE_URL="${OPTARG}" + ;; + e) + PUSHOVER_MESSAGE_URL_TITLE="${OPTARG}" + ;; + p) + PUSHOVER_MESSAGE_PRIORITY="${OPTARG}" + ;; + t) + PUSHOVER_MESSAGE_TIMESTAMP="${OPTARG}" + ;; + s) + PUSHOVER_NOTIFICATION_SOUND="${OPTARG}" + ;; + *) + print_version >&2 + print_usage >&2 + exit 1 + ;; + esac +done + +shift "$(expr ${OPTIND} - 1)" + +if [ -z "${PUSHOVER_MESSAGE_TEXT}" ] +then + PUSHOVER_MESSAGE_TEXT="$*" +fi + +if [ -z "${PUSHOVER_USER_TOKEN}" -o -z "${PUSHOVER_API_TOKEN}" -o -z "${PUSHOVER_MESSAGE_TEXT}" ] +then + print_version >&2 + print_usage >&2 + exit 1 +fi + +RETVAL="$(push_message)" +if echo "${RETVAL}" | grep -i -q "error" +then + ERROR="$(echo ${RETVAL} | sed 's/.*errors\":\[\(".*"\)\].*/\1/')" + echo "error: ${ERROR}" >&2 + exit 1 +fi + +# EOF