From d35a89dea7c157ba4afa3a541c313a95c1c2bacd Mon Sep 17 00:00:00 2001 From: Ian Kelling <iank@fsf.org> Date: Thu, 10 Nov 2022 14:46:41 -0500 Subject: [PATCH] fix stuck on email error --- README | 3 --- sysd-mail-once | 18 ++++++++++++++---- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/README b/README index e463d69..e7fab7e 100644 --- a/README +++ b/README @@ -1,8 +1,5 @@ Log output, conditionally email or print it -Warning: with sysd-log-once, I've found the mail command to block for -several seconds at least. - The main documentation is availiable via --help and near the top of the bash script files which sit next to this file. diff --git a/sysd-mail-once b/sysd-mail-once index 2f7f4d5..b1a67b8 100755 --- a/sysd-mail-once +++ b/sysd-mail-once @@ -24,7 +24,7 @@ case "$1" in -h|--help) cat <<EOF Usage: sysd-mail-once [-t TO_ADDRESS] [-ERRORS] SERVICE COMMAND [ARGS...] -For systemd timers, email on repeated failure & success after failure. +For systemd timers, email (with exim) on repeated failure & success after failure. In the service triggered by the timer, prepend this script to the ExecStart. The email will contain the service's logs for the last ERRORS runs. @@ -81,14 +81,24 @@ if (( code )); then fi fi if $send_mail; then - journalctl -u $service.service --after-cursor=$(<$file) | \ - mail -s "$HOSTNAME: $service exit code: $code" "$to" + exim -odf -t <<EOF +To: $to +From: $USER@$(hostname -f) +Subject: $HOSTNAME: $service exit code: $code + +$(journalctl -u $service.service --after-cursor=$(<$file)) +EOF fi else if [[ $file ]]; then rm -f $file if [[ $file == $c$errors ]]; then - echo | mail -s "$HOSTNAME: $service success" "$to" + exim -odf -t <<EOF +To: $to +From: $USER@$(hostname -f) +Subject: $HOSTNAME: $service success + +EOF fi fi fi -- 2.30.2