neb/skel/opt/scripts/ntfy.sh

100 lines
2.2 KiB
Bash
Raw Normal View History

2023-10-18 01:31:05 +02:00
#!/usr/bin/env bash
ntfy_username=""
ntfy_password=""
ntfy_token=""
help()
{
echo "Options:"
2023-10-18 01:57:15 +02:00
echo "-t Set the title of a message."
2023-10-18 01:31:05 +02:00
echo "-m Your message."
echo "-p Notification priority, 1-5, 5 is the highest. (Optional)"
echo "-e Choose emoji. (https://ntfy.sh/docs/emojis/?h=emo)"
2023-10-18 01:57:15 +02:00
echo "-s Set the token for a message from a file"
echo "-u specify url"
2023-10-18 01:31:05 +02:00
echo "-h Print this help."
echo
echo "If you want to show if the last command was successful or not, you can do something like this:"
echo "yourcommand ; export le=$? ; /path/to/ntfy.sh"
echo
}
2023-10-18 01:57:15 +02:00
while getopts "t:m:p:e:s:u:h" option; do
2023-10-18 01:31:05 +02:00
case $option in
2023-10-18 01:57:15 +02:00
t) ntfy_topic="$OPTARG";;
m) ntfy_message="$OPTARG";;
p) ntfy_prio="$OPTARG";;
e) ntfy_emoji="$OPTARG";;
s) ntfy_token="$(cat $OPTARG)";;
u) ntfy_url="$OPTARG";;
2023-10-18 01:31:05 +02:00
h) help
exit;;
\?)
echo "Error: Invalid option"
exit;;
esac
done
shift $((OPTIND-1))
if [ -z "$ntfy_message" ]; then
ntfy_message="Done"
fi
if [ "$ntfy_prio" == "1" ]; then
ntfy_prio="min"
ntfy_tag="white_small_square"
elif [ "$ntfy_prio" == "2" ]; then
ntfy_prio="low"
ntfy_tag="computer"
elif [ "$ntfy_prio" == "3" ]; then
ntfy_prio="default"
ntfy_tag="computer"
elif [ "$ntfy_prio" == "4" ]; then
ntfy_prio="high"
ntfy_tag="warning"
elif [ "$ntfy_prio" == "5" ]; then
ntfy_prio="max"
ntfy_tag="rotating_light"
else
ntfy_prio="default"
ntfy_tag="computer"
fi
if [ -n "$ntfy_emoji" ]; then
ntfy_tag="$ntfy_emoji"
fi
if [ -n "$le" ]; then
if [ "$le" == "0" ]; then
ntfy_tag="heavy_check_mark"
else
ntfy_tag="x"
fi
fi
if [ -z "$ntfy_topic" ]; then
ntfy_topic="$HOSTNAME"
fi
if [[ -n $ntfy_password && -n $ntfy_token ]]; then
echo "Use ntfy_username and ntfy_password OR ntfy_token"
exit 1
elif [ -n "$ntfy_password" ]; then
ntfy_base64=$( echo -n "$ntfy_username:$ntfy_password" | base64 )
ntfy_auth="Authorization: Basic $ntfy_base64"
elif [ -n "$ntfy_token" ]; then
ntfy_auth="Authorization: Bearer $ntfy_token"
else
ntfy_auth=""
fi
2023-10-18 01:57:15 +02:00
curl \
-X POST \
2023-10-18 01:31:05 +02:00
-H "$ntfy_auth" \
-H "Title: $ntfy_topic" \
-H "Tags: $ntfy_tag" \
-H "Priority: $ntfy_prio" \
-d "$ntfy_message" \
2023-10-18 01:57:15 +02:00
"$ntfy_url"