On Wed, 24 Jan 2007, Paul Pruett wrote:

> Using cron and atactl to email smartstatus errors
> to an email address other than cron user:
...

I use the following script to help with cron stuff, it can do
what you want.

-d


---------------------------

#!/bin/sh

# Helper for cron(8) to send mail only if command terminates abnormally.
# Also allows you to specify a different recipient.

usage()
{
        echo "Usage: cronmail.sh [-h] [-r recipient] command [args...]" 1>&2
        exit 1
}

args=`getopt hr: $*`
[ $? -ne 0 ] && usage

set -- $args
for o ; do case "$o" in
        -h) usage;;
        -r) RECIPIENT=$2; shift; shift;;
        --) shift; break;;
esac ; done

# Need at least one argument (command)
[ -z "$1" ] && usage

OUTTMP=`mktemp -t cronmail.out.XXXXXXXXXXXXXXXX`
if [ $? -ne 0 ]; then
        # Fall back to executing the command with unredirected output
        exec $*
fi

$* >$OUTTMP 2>&1
RC=$?

if [ $RC -ne 0 ]; then
        if [ -z "$RECIPIENT" ]; then
                cat $OUTTMP
        else
                mail -s "Failed cron command $1" $RECIPIENT < $OUTTMP
        fi
fi

rm $OUTTMP

exit $RC

Reply via email to