#!/usr/bin/env bash # usage usage() { USAGE=$(cat < /dev/null || { echo "Requiring 'mailx' but it's not installed"; exit 1; } fi if [[ "${gotifyEnabled}" == "true" ]]; then type gotify &> /dev/null || { echo "Requiring 'gotify' but it's not installed"; exit 1; } fi type whoami &> /dev/null || { echo "Requiring 'whoami' but it's not installed"; exit 1; } } source_config() { local configFallback=$1; local configGlobalFallback=$2; if [[ -f "$configFallback" ]]; then apply_config "$configFallback"; return; fi if [[ -f "$configGlobalFallback" ]]; then apply_config "$configGlobalFallback"; return; fi } source_config "$HOME/.systemd_failure_notify.conf" "/etc/systemd_failure_notify.conf" check_requirements "$SYSTEMD_FAILURE_NOTIFY_MAIL_ENABLED" "$SYSTEMD_FAILURE_NOTIFY_GOTIFY_ENABLED" SYSTEMD_FAILURE_NOTIFY_HOSTNAME=$(hostname) SYSTEMD_FAILURE_NOTIFY_USER=$(whoami) SUBJECT="[systemd $SYSTEMD_FAILURE_NOTIFY_HOSTNAME for $SYSTEMD_FAILURE_NOTIFY_USER] $SYSTEMD_FAILURE_NOTIFY_USER RUN FAILED" MESSAGE="$SYSTEMD_FAILURE_NOTIFY_SERVICE run failed" if [[ "${SYSTEMD_FAILURE_NOTIFY_MAIL_ENABLED}" == "true" ]]; then echo "$MESSAGE"|mailx -Ssendwait -s "$SUBJECT" "$SYSTEMD_FAILURE_NOTIFY_MAIL_ADDRESS"; echo "Sent notifiction via mail" else echo "Sending notifictions via mail is disabled" fi if [[ "${SYSTEMD_FAILURE_NOTIFY_GOTIFY_ENABLED}" == "true" ]]; then if [[ ! -f "${HOME}/.config/gotify/cli.json" && ! -f "${HOME}/gotify/cli.json" && ! -f "./cli.json" && ! -f "/etc/gotify/cli.json" ]]; then echo "Cannot find a valid cli.json, please run 'gotify init' before using this" exit 1; fi echo "$MESSAGE"|gotify push --quiet --title "${SUBJECT}"; echo "Sent message via gotify" else echo "Sending notifictions via gotify is disabled" fi