ansible-role-system/files/timer-mail

63 lines
1.2 KiB
Bash
Executable File

#!/usr/bin/env sh
help() {
[ 0 -lt $# ] && >&2 echo "$*"
>&2 cat <<EOF
Usage: $0 [*options] command [*args]
Options:
-h
-t TO default: your login-user
-f FROM default: your login-user
-s SUBJECT default: "timer: [command *args]"
-v pipes output through
-e send email only on error (command exit-code != 0)
-o send email only if command writes on STDOUT or STDERR (default)
-a send always email
EOF
exit 1
}
eval set -- "$(getopt -n "$0" "ht:f:s:aev" "$@")"
while [ 0 -lt $# ]
do
case "$1" in
-h) help ;;
-s) shift ; subject="$1" ;;
-t) shift ; to="$1" ;;
-f) shift ; from="$1" ;;
-e) on=error ;;
-o) on=output ;;
-a) on=always ;;
-v) verbose=true ;;
--) shift ; break ;;
*) help "Unknown option: $1" ;;
esac
shift
done
subject="${subject:-timer: $*}"
on=${on:-output}
verbose=${verbose:-false}
to="${to:-${LOGNAME:-$USER}}"
from="${from:-${LOGNAME:-$USER}}"
output="$(mktemp)"
trap "rm -f -- $output" EXIT
if $verbose
then
2>&1 "$@" | tee $output
r=$?
else
>$output 2>&1 "$@"
r=$?
fi
if [ always = $on ] || [ error = $on -a 0 -lt $r ] || [ output = $on -a -s $output ]
then
<$output mail -s "$subject" -r "$from" -- "$to" || exit 97
fi
exit $r