Send Error e-mails if errors or warnings were found on local log file.

This commit is contained in:
Christoph 2024-12-15 16:12:23 +01:00
parent 42bd0bc709
commit 595ce80230
4 changed files with 149 additions and 4 deletions

View File

@ -758,11 +758,11 @@ subject_utf8_encoded="=?utf-8?B?$(echo $subject_utf8 | base64 --wrap=0)?="
cat <<EOF >> ${BORG_LOG_FILE} cat <<EOF >> ${BORG_LOG_FILE}
echo -e "To:${ADMIN_EMAIL}\n${content_type}\nSubject:${subject_utf8_encoded}\n\${filesystem_usage}\n\${msg_head_line}\n\${msg}\n" | /usr/sbin/sendmail -F "BACKUP ${COMPANY}" -f ${FROM_ADDRESS} ${ADMIN_EMAIL} echo -e "To:${ADMIN_EMAIL}\n${content_type}\nSubject:${subject_utf8_encoded}\n\${filesystem_usage}\n\${msg_head_line}\n\${msg}\n" | /usr/sbin/sendmail -F "Borg BACKUP ${COMPANY}" -f ${FROM_ADDRESS} ${ADMIN_EMAIL}
EOF EOF
echo -e "To:${ADMIN_EMAIL}\n${content_type}\nSubject:${subject_utf8_encoded}\n${filesystem_usage}\n${msg_head_line}\n${msg}\n" | /usr/sbin/sendmail -F "BACKUP ${COMPANY}" -f ${FROM_ADDRESS} ${ADMIN_EMAIL} > ${log_file} 2>&1 echo -e "To:${ADMIN_EMAIL}\n${content_type}\nSubject:${subject_utf8_encoded}\n${filesystem_usage}\n${msg_head_line}\n${msg}\n" | /usr/sbin/sendmail -F "Borg BACKUP ${COMPANY}" -f ${FROM_ADDRESS} ${ADMIN_EMAIL} > ${log_file} 2>&1
if [[ $? -gt 0 ]] ; then if [[ $? -gt 0 ]] ; then
@ -774,6 +774,68 @@ fi
blank_line blank_line
# Error Handling
#
declare -i error=$(grep -i -e"\[\s*ERROR" ${BORG_LOG_FILE} | wc -l)
declare -i warning=$(grep -i -e"\[\s*WARN" ${BORG_LOG_FILE} | wc -l)
if [ $error -gt 0 -o $warning -gt 0 ] ; then
# Send Error Message
#
if $terminal ; then
echo -e -n " Send Error Message to ${ADMIN_EMAIL}.."
fi
host_name="$(hostname -f)"
err_msg="$(grep -A 2 -i -e"\[\s*ERROR" ${BORG_LOG_FILE})\n"
warn_msg="$(grep -A 2 -i -e"\[\s*WARN" ${BORG_LOG_FILE})\n"
msg_top="Borg Backup Error ${COMPANY} vom ${datum}.\nBorg Backup on '${host_name}' beendet mit:"
msg_body_01="\t${error} Error(s)\n\t${warning} Warning(s)\n"
msg_body_02="\n\n--- ERROR(S) ---\n${err_msg}\n\n--- WARNING(S) ...\n${warn_msg}"
msg="${msg_top}\n${msg_body_01}\n${msg_body_02}"
subject="Borg Backup Errors at ${host_name} -- ${datum}"
#subject="Borg Backup Errors at ${host_name}"
subject_utf8="$(echo "${subject}" | iconv -t UTF8)"
subject_utf8_encoded="=?utf-8?B?$(echo ${subject_utf8} | base64 --wrap=0)?="
echo -e "To:${ADMIN_EMAIL}\n${content_type}\nSubject:${subject_utf8_encoded}\n${msg}\n" | /usr/sbin/sendmail -F "Errors Borg BACKUP ${COMPANY}" -f ${FROM_ADDRESS} ${ADMIN_EMAIL} > ${log_file} 2>&1
if [[ $? -gt 0 ]] ; then
echo_failed
error "$(cat "${log_file}")"
else
echo_ok
fi
if [[ -n "${ADMIN_EXTRA_EMAIL}" ]] ; then
echo -e "To:${ADMIN_EXTRA_EMAIL}\n${content_type}\nSubject:${subject_utf8_encoded}\n${msg}\n" | /usr/sbin/sendmail -F "Errors Borg BACKUP ${COMPANY}" -f ${FROM_ADDRESS} ${ADMIN_EXTRA_EMAIL} > ${log_file} 2>&1
# Send Error Message
#
if $terminal ; then
echo -e -n " Send Error Message to ${ADMIN_EMAIL}.."
fi
if [[ $? -gt 0 ]] ; then
echo_failed
error "$(cat "${log_file}")"
else
echo_ok
fi
fi
blank_line
fi
blank_line
echononl "Create temporary logorotate configuration file 'logrotate_borg.conf'.." echononl "Create temporary logorotate configuration file 'logrotate_borg.conf'.."
cat << EOF > ${LOCK_DIR}/logrotate_borg.conf 2> ${log_file} cat << EOF > ${LOCK_DIR}/logrotate_borg.conf 2> ${log_file}

View File

@ -730,11 +730,11 @@ subject_utf8_encoded="=?utf-8?B?$(echo $subject_utf8 | base64 --wrap=0)?="
cat <<EOF >> ${BORG_LOG_FILE} cat <<EOF >> ${BORG_LOG_FILE}
echo -e "To:${ADMIN_EMAIL}\n${content_type}\nSubject:${subject_utf8_encoded}\n\${filesystem_usage}\n\${msg_head_line}\n\${msg}\n" | /usr/sbin/sendmail -F "BACKUP ${COMPANY}" -f ${FROM_ADDRESS} ${ADMIN_EMAIL} echo -e "To:${ADMIN_EMAIL}\n${content_type}\nSubject:${subject_utf8_encoded}\n\${filesystem_usage}\n\${msg_head_line}\n\${msg}\n" | /usr/sbin/sendmail -F "Borg BACKUP ${COMPANY}" -f ${FROM_ADDRESS} ${ADMIN_EMAIL}
EOF EOF
echo -e "To:${ADMIN_EMAIL}\n${content_type}\nSubject:${subject_utf8_encoded}\n${filesystem_usage}\n${msg_head_line}\n${msg}\n" | /usr/sbin/sendmail -F "BACKUP ${COMPANY}" -f ${FROM_ADDRESS} ${ADMIN_EMAIL} > ${log_file} 2>&1 echo -e "To:${ADMIN_EMAIL}\n${content_type}\nSubject:${subject_utf8_encoded}\n${filesystem_usage}\n${msg_head_line}\n${msg}\n" | /usr/sbin/sendmail -F "Borg BACKUP ${COMPANY}" -f ${FROM_ADDRESS} ${ADMIN_EMAIL} > ${log_file} 2>&1
if [[ $? -gt 0 ]] ; then if [[ $? -gt 0 ]] ; then
@ -746,6 +746,71 @@ fi
blank_line blank_line
# Error Handling
#
declare -i error=$(grep -i -e"\[\s*ERROR" ${BORG_LOG_FILE} | wc -l)
declare -i warning=$(grep -i -e"\[\s*WARN" ${BORG_LOG_FILE} | wc -l)
if [ $error -gt 0 -o $warning -gt 0 ] ; then
# Send Error Message
#
if $terminal ; then
echo -e -n " Send Error Message to ${ADMIN_EMAIL}.."
fi
#ADMIN_EMAIL="ckubu@oopen.de"
host_name="$(hostname -f)"
err_msg="$(grep -A 2 -i -e"\[\s*ERROR" ${BORG_LOG_FILE})\n"
warn_msg="$(grep -A 2 -i -e"\[\s*WARN" ${BORG_LOG_FILE})\n"
msg_top="Borg Backup Error ${COMPANY} vom ${datum}.\nBorg Backup on '${host_name}' beendet mit:"
msg_body_01="\t${error} Error(s)\n\t${warning} Warning(s)\n"
msg_body_02="\n\n--- ERROR(S) ---\n${err_msg}\n\n--- WARNING(S) ...\n${warn_msg}"
msg="${msg_top}\n${msg_body_01}\n${msg_body_02}"
subject="Borg Backup Errors at ${host_name} -- ${datum}"
#subject="Borg Backup Errors at ${host_name}"
subject_utf8="$(echo "${subject}" | iconv -t UTF8)"
subject_utf8_encoded="=?utf-8?B?$(echo ${subject_utf8} | base64 --wrap=0)?="
echo -e "To:${ADMIN_EMAIL}\n${content_type}\nSubject:${subject_utf8_encoded}\n${msg}\n" | /usr/sbin/sendmail -F "Errors Borg BACKUP ${COMPANY}" -f ${FROM_ADDRESS} ${ADMIN_EMAIL} > ${log_file} 2>&1
if [[ $? -gt 0 ]] ; then
echo_failed
error "$(cat "${log_file}")"
else
echo_ok
fi
if [[ -n "${ADMIN_EXTRA_EMAIL}" ]] ; then
echo -e "To:${ADMIN_EXTRA_EMAIL}\n${content_type}\nSubject:${subject_utf8_encoded}\n${msg}\n" | /usr/sbin/sendmail -F "Errors Borg BACKUP ${COMPANY}" -f ${FROM_ADDRESS} ${ADMIN_EXTRA_EMAIL} > ${log_file} 2>&1
# Send Error Message
#
if $terminal ; then
echo -e -n " Send Error Message to ${ADMIN_EMAIL}.."
fi
if [[ $? -gt 0 ]] ; then
echo_failed
error "$(cat "${log_file}")"
else
echo_ok
fi
fi
blank_line
fi
blank_line
echononl "Create temporary logorotate configuration file 'logrotate_borg.conf'.." echononl "Create temporary logorotate configuration file 'logrotate_borg.conf'.."
cat << EOF > ${LOCK_DIR}/logrotate_borg.conf 2> ${log_file} cat << EOF > ${LOCK_DIR}/logrotate_borg.conf 2> ${log_file}

View File

@ -205,6 +205,15 @@
#ADMIN_EMAIL="root" #ADMIN_EMAIL="root"
# ADMIN_EXTRA_EMAIL
#
# Send Informations about the backup process also to this e-mail address
#
# Defaults to empty string (NOT SET)
#
#ADMIN_EXTRA_EMAIL=""
# FROM_ADDRESS # FROM_ADDRESS
# #
# Defaults to: # Defaults to:

View File

@ -242,6 +242,15 @@
#ADMIN_EMAIL="root" #ADMIN_EMAIL="root"
# ADMIN_EXTRA_EMAIL
#
# Send Informations about the backup process also to this e-mail address
#
# Defaults to empty string (NOT SET)
#
#ADMIN_EXTRA_EMAIL=""
# FROM_ADDRESS # FROM_ADDRESS
# #
# Defaults to: # Defaults to: