blob: acc08cb312d3ad1cbe4272548a0106380717d319 [file] [log] [blame]
#!/bin/bash
# Positive tests for cron, that means these tests have to pass
iam=`whoami`
tvar=${MACHTYPE%-*}
tvar=${tvar#*-}
if [ "$tvar" = "redhat" -o "$tvar" = "redhat-linux" ]
then
CRON_ALLOW="/etc/cron.allow"
else
CRON_ALLOW="/var/spool/cron/allow"
fi
if [ $iam = "root" ]; then
if [ $# -lt 1 ] ; then
echo Either do not run this script as root or start it like
echo " $0 <user>"
exit 1
fi
mv $CRON_ALLOW $CRON_ALLOW.old &> /dev/null
su $1 -c "$0 $*"
RC=$?
mv $CRON_ALLOW.old $CRON_ALLOW &> /dev/null
exit $RC
fi
function restorecrontab () {
test -e /tmp/crontab-save-$iam && \
crontab /tmp/crontab-save-$iam && \
rm -f /tmp/crontab-save-$iam && \
echo restored old crontab
}
echo Running as user $iam...
# Save current users crontab
test -e /tmp/crontab-save-$iam && rm -f /tmp/crontab-save-$iam
if [ "0" -lt `crontab -l 2>/dev/null | wc -l` ]; then
echo 'crontab of this user exists -> creating backup'
crontab -l | grep '^[^#]' > /tmp/crontab-save-$iam
fi
# Do tests
# 1. Add new job
rm -rf /tmp/crontest &> /dev/null
mkdir -p /tmp/crontest
cat > /tmp/crontest/testjob_cron01 << EOF
echo Testjob running
date
EOF
chmod 755 /tmp/crontest/testjob_cron01
crontab - << EOF
`date '+%M' | awk '{ print ($1+2)%60 " * * * * "
}'` /tmp/crontest/testjob_cron01 >> /tmp/crontest/output_cron01 2>&1
EOF
rc=$?
if [ $rc = "1" ]; then
echo Error while adding crontab for user $iam
restorecrontab
exit 1
fi
echo new job added successfully
# 2. Wait for execution of job
echo 'sleeping for 130 seconds...'
sleep 130
rc=1
test -e /tmp/crontest/output_cron01 && rc=0
if [ $rc = "1" ]; then
echo Job has not been executed
restorecrontab
exit 1
fi
grep "Testjob running" /tmp/crontest/output_cron01
rc=$?
if [ $rc = "1" ]; then
echo Job has not produced valid output
restorecrontab
fi
echo 'job has been executed :-)'
echo "testjob's output:"
echo
rm -rf /tmp/crontest
# 3. Delete crontab
crontab -r
echo removed crontab
# Restore old crontab file
restorecrontab
exit $rc