diff options
| author | EuAndreh <eu@euandre.org> | 2024-05-11 16:42:54 -0300 |
|---|---|---|
| committer | EuAndreh <eu@euandre.org> | 2024-05-11 16:42:54 -0300 |
| commit | fb7a2f48795d00e8db18450bb3b956674d260a62 (patch) | |
| tree | 37b6415f1695714f1b5efc90c37f009acd7561b7 /src | |
| parent | Initial empty commit (diff) | |
| download | cronjob-main.tar.gz cronjob-main.tar.xz | |
Diffstat (limited to 'src')
| -rwxr-xr-x | src/cronjob | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/cronjob b/src/cronjob new file mode 100755 index 0000000..b6798f0 --- /dev/null +++ b/src/cronjob @@ -0,0 +1,43 @@ +#!/bin/sh +. /etc/rc +set -eu + + +CMD="$*" +HOSTNAME="$(hostname)" +FROM="cronjob@$HOSTNAME" +TIMEOUT='14400' # four hours +STATUS_F="$(mkstemp)" +CLOCK_F="$(mkstemp)" +OUT="$(mkstemp)" + +email() { + { + cat <<-EOF + Content-Type: text/plain; charset=UTF-8 + Content-Transfer-Encoding: 8bit + From: $FROM + To: root@localhost + Subject: (exit status: $(cat "$STATUS_F")) - $HOSTNAME: $CMD + + EOF + cat "$OUT" + } | sendmail -t -f "$FROM" +} +trap 'email; rm -f "$OUT" "$STATUS_F" "$CLOCK_F"' EXIT + +{ + cat <<-EOF + Running commad: $CMD + Starting at: $(timestamp) + + EOF + + statusf "$STATUS_F" clock -o "$CLOCK_F" timeout "$TIMEOUT" nicely "$@" + + cat <<-EOF + + Finished at: $(timestamp) + Duration: $(minutes "$(cat "$CLOCK_F")") + EOF +} 2>&1 | pre "[$CMD]" | ts '%Y-%m-%dT%H:%M:%S' | tee "$OUT" >> /var/log/cronjobs.log |
