fix stuck on email error
authorIan Kelling <iank@fsf.org>
Thu, 10 Nov 2022 19:46:41 +0000 (14:46 -0500)
committerIan Kelling <iank@fsf.org>
Thu, 10 Nov 2022 19:46:41 +0000 (14:46 -0500)
README
sysd-mail-once

diff --git a/README b/README
index e463d691de06440d27c471939e1153cfd28c7a18..e7fab7e6b24e69cfd7d8e012374e8ef4d2dbb48f 100644 (file)
--- 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.
 
index 2f7f4d5d9efd035d7803d623bb946090f4597be7..b1a67b881cee88388d64ff0e31cda81d24de96f7 100755 (executable)
@@ -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