mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-12-26 19:19:32 +03:00
zed: Add Pushover notifier
Add zed_notify_pushover to zed-functions.sh, along with the necessary configuration variables in zed.rc. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: Ahelenia Ziemiańska <nabijaczleweli@nabijaczleweli.xyz> Signed-off-by: Scott Colby <scott@scolby.com> Closes #12012
This commit is contained in:
parent
6217656da3
commit
da124ad8ec
@ -206,6 +206,10 @@ zed_notify()
|
|||||||
[ "${rv}" -eq 0 ] && num_success=$((num_success + 1))
|
[ "${rv}" -eq 0 ] && num_success=$((num_success + 1))
|
||||||
[ "${rv}" -eq 1 ] && num_failure=$((num_failure + 1))
|
[ "${rv}" -eq 1 ] && num_failure=$((num_failure + 1))
|
||||||
|
|
||||||
|
zed_notify_pushover "${subject}" "${pathname}"; rv=$?
|
||||||
|
[ "${rv}" -eq 0 ] && num_success=$((num_success + 1))
|
||||||
|
[ "${rv}" -eq 1 ] && num_failure=$((num_failure + 1))
|
||||||
|
|
||||||
[ "${num_success}" -gt 0 ] && return 0
|
[ "${num_success}" -gt 0 ] && return 0
|
||||||
[ "${num_failure}" -gt 0 ] && return 1
|
[ "${num_failure}" -gt 0 ] && return 1
|
||||||
return 2
|
return 2
|
||||||
@ -437,6 +441,84 @@ zed_notify_slack_webhook()
|
|||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# zed_notify_pushover (subject, pathname)
|
||||||
|
#
|
||||||
|
# Send a notification via Pushover <https://pushover.net/>.
|
||||||
|
# The access token (ZED_PUSHOVER_TOKEN) identifies this client to the
|
||||||
|
# Pushover server. The user token (ZED_PUSHOVER_USER) defines the user or
|
||||||
|
# group to which the notification will be sent.
|
||||||
|
#
|
||||||
|
# Requires curl and sed executables to be installed in the standard PATH.
|
||||||
|
#
|
||||||
|
# References
|
||||||
|
# https://pushover.net/api
|
||||||
|
#
|
||||||
|
# Arguments
|
||||||
|
# subject: notification subject
|
||||||
|
# pathname: pathname containing the notification message (OPTIONAL)
|
||||||
|
#
|
||||||
|
# Globals
|
||||||
|
# ZED_PUSHOVER_TOKEN
|
||||||
|
# ZED_PUSHOVER_USER
|
||||||
|
#
|
||||||
|
# Return
|
||||||
|
# 0: notification sent
|
||||||
|
# 1: notification failed
|
||||||
|
# 2: not configured
|
||||||
|
#
|
||||||
|
zed_notify_pushover()
|
||||||
|
{
|
||||||
|
local subject="$1"
|
||||||
|
local pathname="${2:-"/dev/null"}"
|
||||||
|
local msg_body
|
||||||
|
local msg_out
|
||||||
|
local msg_err
|
||||||
|
local url="https://api.pushover.net/1/messages.json"
|
||||||
|
|
||||||
|
[ -n "${ZED_PUSHOVER_TOKEN}" ] && [ -n "${ZED_PUSHOVER_USER}" ] || return 2
|
||||||
|
|
||||||
|
if [ ! -r "${pathname}" ]; then
|
||||||
|
zed_log_err "pushover cannot read \"${pathname}\""
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
zed_check_cmd "curl" "sed" || return 1
|
||||||
|
|
||||||
|
# Read the message body in.
|
||||||
|
#
|
||||||
|
msg_body="$(cat "${pathname}")"
|
||||||
|
|
||||||
|
if [ -z "${msg_body}" ]
|
||||||
|
then
|
||||||
|
msg_body=$subject
|
||||||
|
subject=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Send the POST request and check for errors.
|
||||||
|
#
|
||||||
|
msg_out="$( \
|
||||||
|
curl \
|
||||||
|
--form-string "token=${ZED_PUSHOVER_TOKEN}" \
|
||||||
|
--form-string "user=${ZED_PUSHOVER_USER}" \
|
||||||
|
--form-string "message=${msg_body}" \
|
||||||
|
--form-string "title=${subject}" \
|
||||||
|
"${url}" \
|
||||||
|
2>/dev/null \
|
||||||
|
)"; rv=$?
|
||||||
|
if [ "${rv}" -ne 0 ]; then
|
||||||
|
zed_log_err "curl exit=${rv}"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
msg_err="$(echo "${msg_out}" \
|
||||||
|
| sed -n -e 's/.*"errors" *:.*\[\(.*\)\].*/\1/p')"
|
||||||
|
if [ -n "${msg_err}" ]; then
|
||||||
|
zed_log_err "pushover \"${msg_err}"\"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
# zed_rate_limit (tag, [interval])
|
# zed_rate_limit (tag, [interval])
|
||||||
#
|
#
|
||||||
# Check whether an event of a given type [tag] has already occurred within the
|
# Check whether an event of a given type [tag] has already occurred within the
|
||||||
|
@ -82,6 +82,23 @@
|
|||||||
#
|
#
|
||||||
#ZED_SLACK_WEBHOOK_URL=""
|
#ZED_SLACK_WEBHOOK_URL=""
|
||||||
|
|
||||||
|
##
|
||||||
|
# Pushover token.
|
||||||
|
# This defines the application from which the notification will be sent.
|
||||||
|
# <https://pushover.net/api#registration>
|
||||||
|
# Disabled by default; uncomment to enable.
|
||||||
|
# ZED_PUSHOVER_USER, below, must also be configured.
|
||||||
|
#
|
||||||
|
#ZED_PUSHOVER_TOKEN=""
|
||||||
|
|
||||||
|
##
|
||||||
|
# Pushover user key.
|
||||||
|
# This defines which user or group will receive Pushover notifications.
|
||||||
|
# <https://pushover.net/api#identifiers>
|
||||||
|
# Disabled by default; uncomment to enable.
|
||||||
|
# ZED_PUSHOVER_TOKEN, above, must also be configured.
|
||||||
|
#ZED_PUSHOVER_USER=""
|
||||||
|
|
||||||
##
|
##
|
||||||
# Default directory for zed state files.
|
# Default directory for zed state files.
|
||||||
#
|
#
|
||||||
|
Loading…
Reference in New Issue
Block a user