#!/bin/bash # SPDX-License-Identifier: GPL-2.0 # # Copyright (C) 2023-2024 Oracle. All Rights Reserved. # Author: Darrick J. Wong # Email logs of failed bcachefsck and bcachefsck_all unit runs recipient="$1" test -z "${recipient}" && exit 0 service="$2" test -z "${service}" && exit 0 mntpoint="$3" hostname="$(hostname -f 2>/dev/null)" test -z "${hostname}" && hostname="${HOSTNAME}" mailer="$(command -v sendmail)" if [ ! -x "${mailer}" ]; then echo "${mailer}: Mailer program not found." exit 1 fi fail_mail_mntpoint() { local scrub_svc # Turn the mountpoint into a properly escaped systemd instance name scrub_svc="$(systemd-escape --template "${service}@.service" --path "${mntpoint}")" cat << ENDL To: ${recipient} From: <${service}@${hostname}> Subject: ${service} failure on ${mntpoint} Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8 So sorry, the automatic ${service} of ${mntpoint} on ${hostname} failed. Please do not reply to this mesage. A log of what happened follows: ENDL systemctl status --full --lines 4294967295 "${scrub_svc}" } fail_mail() { cat << ENDL To: ${recipient} From: <${service}@${hostname}> Subject: ${service} failure So sorry, the automatic ${service} on ${hostname} failed. A log of what happened follows: ENDL systemctl status --full --lines 4294967295 "${service}" } if [ -n "${mntpoint}" ]; then fail_mail_mntpoint | "${mailer}" -t -i else fail_mail | "${mailer}" -t -i fi exit "${PIPESTATUS[1]}"