added pushover.sh
This commit is contained in:
parent
3816d94e95
commit
bfb46f8c31
139
pushover.sh
Executable file
139
pushover.sh
Executable file
@ -0,0 +1,139 @@
|
||||
#!/bin/bash
|
||||
|
||||
#----------------------------------------------------------------------------------------------------
|
||||
#~ Name : pushover
|
||||
#~ Description : Send notification to pushover
|
||||
#~ Author : Etienne Girault <etienne.girault@gmail.com>
|
||||
#~
|
||||
#~ Usage : [-h] [-D] [-V]
|
||||
#~ Usage : [-a <application>]
|
||||
#~ Usage : -t <titre>
|
||||
#~ Usage : -m <message>
|
||||
#~
|
||||
#~ Options : -h, --help ; Affiche l'aide
|
||||
#~ Options : -V, --version ; Affiche la version
|
||||
#~ Options : -D, --debug ; Mode debug
|
||||
#~ Options : -a, --application ; Nom de l'application
|
||||
#~ Options : -m, --message ; Message de la notification
|
||||
#~ Options : -t, --title ; Titre de la notification
|
||||
#~ Options : -p, --priority ; Priorité de la notification (-2, -1, 0 ou 1)
|
||||
#~ Options : -s, --sound ; Choix du son de la notification
|
||||
#~ Options : -d, --dry-run ; N'envoie pas la notification et la simule en sortie
|
||||
|
||||
#----------------------------------------------------------------------------------------------------
|
||||
# Variables
|
||||
#----------------------------------------------------------------------------------------------------
|
||||
script_name="$(grep '^#~ Nom' "$0" | sed 's/^.*: //')"
|
||||
script_version="$(grep '^#~ v' "$0" | tail -1 | sed -e 's/^#~ //' -e 's/ *\-.*$//')"
|
||||
|
||||
keyfile=keys
|
||||
|
||||
#----------------------------------------------------------------------------------------------------
|
||||
# Functions
|
||||
#----------------------------------------------------------------------------------------------------
|
||||
print_script_name_version() { echo "$script_name $script_version" && sed -n '/^#~ Version/,$p' "$0" | grep '^#~' | sed 's/^#~ //'; }
|
||||
print_script_description() { grep '^#~ Description' "$0" | sed 's/^.*: //'; }
|
||||
print_script_usage() { grep '^#~ Usage' "$0" | sed -e 's/^.*: //' -e '1 s/^/Usage: '"$script_name"' /' -e '2,$ s/^/'"$(printf '%*s' "$(echo "Usage: $script_name" | wc -c)")"'/'; }
|
||||
print_script_options() { echo "Options" && grep '^#~ Options' "$0" | sed -e 's/^.*://' -e 's/^ --/ --/' | column -ts \;; }
|
||||
print_script_help() { echo "$script_name $script_version" && print_script_description && print_script_usage && print_script_options; }
|
||||
|
||||
send_notification() {
|
||||
curl --silent \
|
||||
-F "token=$apptoken" \
|
||||
-F "user=$user_key" \
|
||||
-F "title=$title" \
|
||||
-F "message=$message" \
|
||||
https://api.pushover.net/1/messages > /dev/null
|
||||
|
||||
# -F "sound=$sound" \
|
||||
# -F "$priorityString" \
|
||||
}
|
||||
|
||||
load_keys() {
|
||||
[[ $user_key ]] && save_user_key=$user_key
|
||||
[[ $apptoken ]] && save_apptoken=$apptoken
|
||||
if [[ -f "$keyfile" ]]; then
|
||||
. "$keyfile"
|
||||
else
|
||||
if [[ $apptoken == "" ]]; then
|
||||
echo "unable to load key file"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
[[ $save_user_key ]] && user_key=$save_user_key
|
||||
[[ $save_apptoken ]] && apptoken=$save_apptoken
|
||||
}
|
||||
|
||||
|
||||
choose_app() {
|
||||
apptoken=$(eval echo \$apptoken_$1)
|
||||
if [[ $apptoken == "" ]]; then
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
simulate () {
|
||||
echo "Application: $application"
|
||||
echo "Title: $title"
|
||||
echo "Message: $message"
|
||||
exit
|
||||
}
|
||||
|
||||
# Signals
|
||||
trap 'exit 1' INT TERM
|
||||
|
||||
#----------------------------------------------------------------------------------------------------
|
||||
# Options
|
||||
#----------------------------------------------------------------------------------------------------
|
||||
while getopts ":-:hVDf:a:m:t:p:s:d" OPTION; do
|
||||
case $OPTION in
|
||||
h) print_script_help; exit;;
|
||||
V) print_script_name_version; exit;;
|
||||
D) set -x;;
|
||||
f) keyfile="$OPTARG";;
|
||||
a) application="$OPTARG";;
|
||||
m) message="$OPTARG";;
|
||||
t) title="$OPTARG";;
|
||||
d) mode_simulation=0;;
|
||||
:) ;;
|
||||
-) case $OPTARG in
|
||||
help) print_script_help; exit;;
|
||||
version) print_script_name_version; exit;;
|
||||
debug) set -x;;
|
||||
application) token="";; # TODO
|
||||
message) message="";; # TODO
|
||||
title) title="";; # TODO
|
||||
esac ;;
|
||||
*) ;;
|
||||
esac
|
||||
done
|
||||
shift $((OPTIND-1))
|
||||
|
||||
#----------------------------------------------------------------------------------------------------
|
||||
# Start
|
||||
#----------------------------------------------------------------------------------------------------
|
||||
|
||||
load_keys
|
||||
|
||||
[[ $apptoken ]] || choose_app "${application:=$(hostname -s)}"
|
||||
|
||||
[[ "$mode_simulation" ]] && simulate
|
||||
|
||||
send_notification
|
||||
|
||||
|
||||
#----------------------------------------------------------------------------------------------------
|
||||
# End
|
||||
#----------------------------------------------------------------------------------------------------
|
||||
|
||||
#~ Version changelog
|
||||
#~ v0.1 - Script creation
|
||||
#~ v0.2 - Added chose app
|
||||
#~ v0.3 - Added simulation
|
||||
#~ v0.4 - Reworked how to get the apptoken
|
||||
#~ v0.5 - Added load keys
|
||||
#~ v0.5.1 - Load keys can now read from env
|
||||
#~ v0.5.2 - Bug fix whith apptoken from env
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user