feat: support email notification when backup succeeds and fails

This commit is contained in:
ttionya
2020-06-14 01:59:29 +08:00
parent 299fe93b9d
commit 89e45af55a
6 changed files with 141 additions and 3 deletions
+9
View File
@@ -94,6 +94,11 @@ function upload() {
rclone copy ${UPLOAD_FILE} ${RCLONE_REMOTE}
if [[ $? != 0 ]]; then
color red "upload failed"
if [[ "${MAIL_SMTP_ENABLE}" == "TRUE" && "${MAIL_WHEN_FAILURE}" == "TRUE" ]]; then
send_mail "BitwardenRS Backup Failed" "File upload failed at $(date +"%Y-%m-%d %H:%M:%S")."
fi
exit 1
fi
}
@@ -128,4 +133,8 @@ upload
clear_dir
clear_history
if [[ "${MAIL_SMTP_ENABLE}" == "TRUE" && "${MAIL_WHEN_SUCCESS}" == "TRUE" ]]; then
send_mail "BitwardenRS Backup Success" "The file was successfully uploaded at $(date +"%Y-%m-%d %H:%M:%S")."
fi
color none ""
+16
View File
@@ -9,6 +9,22 @@ if [[ "$1" == "rclone" ]]; then
exit 0
fi
# mailx test
if [[ "$1" == "mail" ]]; then
MAIL_SMTP_ENABLE="TRUE"
MAIL_DEBUG="TRUE"
if [[ -n "$2" ]]; then
MAIL_TO="$2"
fi
init_env
send_mail "BitwardenRS Backup Test" "Your SMTP looks configured correctly."
exit 0
fi
function configure_cron() {
echo "${CRON} sh /app/backup.sh > /dev/stdout" >> /etc/crontabs/root
}
+52
View File
@@ -32,6 +32,27 @@ function check_rclone_connection() {
fi
}
########################################
# Send mail by mailx.
# Arguments:
# mail subject
# mail content
# Outputs:
# send mail result
########################################
function send_mail() {
if [[ "${MAIL_DEBUG}" == "TRUE" ]]; then
local MAIL_VERBOSE="-v"
fi
echo "$2" | mailx ${MAIL_VERBOSE} -s "$1" ${MAIL_SMTP_VARIABLES} ${MAIL_TO}
if [[ $? != 0 ]]; then
color red "mail sending failed"
else
color blue "mail send was successfully"
fi
}
########################################
# Initialization environment variables.
# Arguments:
@@ -80,6 +101,31 @@ function init_env() {
BACKUP_KEEP_DAYS="${BACKUP_KEEP_DAYS_DEFAULT}"
fi
# MAIL_SMTP_ENABLE
# MAIL_TO
MAIL_SMTP_ENABLE=$(echo "${MAIL_SMTP_ENABLE}" | tr '[a-z]' '[A-Z]')
if [[ "${MAIL_SMTP_ENABLE}" == "TRUE" && -n "${MAIL_TO}" ]]; then
MAIL_SMTP_ENABLE="TRUE"
else
MAIL_SMTP_ENABLE="FALSE"
fi
# MAIL_WHEN_SUCCESS
MAIL_WHEN_SUCCESS=$(echo "${MAIL_WHEN_SUCCESS}" | tr '[a-z]' '[A-Z]')
if [[ "${MAIL_WHEN_SUCCESS}" == "FALSE" ]]; then
MAIL_WHEN_SUCCESS="FALSE"
else
MAIL_WHEN_SUCCESS="TRUE"
fi
# MAIL_WHEN_FAILURE
MAIL_WHEN_FAILURE=$(echo "${MAIL_WHEN_FAILURE}" | tr '[a-z]' '[A-Z]')
if [[ "${MAIL_WHEN_FAILURE}" == "FALSE" ]]; then
MAIL_WHEN_FAILURE="FALSE"
else
MAIL_WHEN_FAILURE="TRUE"
fi
color yellow "========================================"
color yellow "CRON: ${CRON}"
color yellow "RCLONE_REMOTE_NAME: ${RCLONE_REMOTE_NAME}"
@@ -88,5 +134,11 @@ function init_env() {
color yellow "ZIP_ENABLE: ${ZIP_ENABLE}"
color yellow "ZIP_PASSWORD: ${#ZIP_PASSWORD} Chars"
color yellow "BACKUP_KEEP_DAYS: ${BACKUP_KEEP_DAYS}"
color yellow "MAIL_SMTP_ENABLE: ${MAIL_SMTP_ENABLE}"
if [[ "${MAIL_SMTP_ENABLE}" == "TRUE" ]]; then
color yellow "MAIL_TO: ${MAIL_TO}"
color yellow "MAIL_WHEN_SUCCESS: ${MAIL_WHEN_SUCCESS}"
color yellow "MAIL_WHEN_FAILURE: ${MAIL_WHEN_FAILURE}"
fi
color yellow "========================================"
}