X-Git-Url: https://iankelling.org/git/?a=blobdiff_plain;f=failmail;h=6bb1e94cf941381b7c899e9de06ab423de15f77d;hb=refs%2Fheads%2Fmaster;hp=703e13038d6c7428d32e9c4a3f21f6d84966317b;hpb=caf623ada289608bdbcc2216058057a7390f7939;p=log-quiet diff --git a/failmail b/failmail old mode 100644 new mode 100755 index 703e130..6bb1e94 --- a/failmail +++ b/failmail @@ -1,5 +1,12 @@ #!/bin/bash -# Copyright (C) 2016 Ian Kelling +# I, Ian Kelling, follow the GNU license recommendations at +# https://www.gnu.org/licenses/license-recommendations.en.html. They +# recommend that small programs, < 300 lines, be licensed under the +# Apache License 2.0. This file contains or is part of one or more small +# programs. If a small program grows beyond 300 lines, I plan to switch +# its license to GPL. + +# Copyright 2024 Ian Kelling # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -13,20 +20,30 @@ # See the License for the specific language governing permissions and # limitations under the License. + case $1 in - -h|--help) - cat <<'EOF' -usage: logmail CMD [ARGS...] + -h|--help) + cat <<'EOF' +usage: failmail CMD [ARGS...] Send mail in case of failure of CMD + +Emails to $MAILTO or if unset, $USER@localhost EOF - exit 0 - ;; + exit 0 + ;; esac +mailto=$USER@localhost +if [[ $MAILTO ]]; then + mailto=$MAILTO +fi + t=$(mktemp) -if ! "$@" &>"$t"; then - mail -s "$HOSTNAME: $*" $USER@localhost <"$t" - rm "$t" +code=0 +"$@" &>"$t" || code=$? +if (( code )); then + mail -s "$HOSTNAME: code: $code cmd: $*" $mailto <"$t" + rm "$t" fi exit 0