102 lines
1.9 KiB
Text
102 lines
1.9 KiB
Text
|
#!/bin/bash
|
||
|
# run-parts - concept taken from Debian
|
||
|
|
||
|
# keep going when something fails
|
||
|
set +e
|
||
|
|
||
|
if [ $# -lt 1 ]; then
|
||
|
echo "Usage: run-parts [--args | --list | --test] <dir>"
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
while [ $# -gt 1 ]; do
|
||
|
case $1 in
|
||
|
--args)
|
||
|
runargs=$2
|
||
|
shift 2
|
||
|
break
|
||
|
;;
|
||
|
--list)
|
||
|
list=1
|
||
|
shift
|
||
|
break
|
||
|
;;
|
||
|
--test)
|
||
|
test=1
|
||
|
shift
|
||
|
break
|
||
|
;;
|
||
|
--)
|
||
|
# -- end of options
|
||
|
shift
|
||
|
break
|
||
|
;;
|
||
|
*)
|
||
|
# directory
|
||
|
break
|
||
|
;;
|
||
|
esac
|
||
|
done
|
||
|
|
||
|
if [ ! -d $1 ]; then
|
||
|
echo "Not a directory: $1"
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
if [ -f /etc/sysconfig/run-parts ]; then
|
||
|
. /etc/sysconfig/run-parts
|
||
|
fi
|
||
|
|
||
|
# Ignore *~ and *, scripts
|
||
|
for i in $(LC_ALL=C; echo ${1%/}/*[^~,]) ; do
|
||
|
[ -d $i ] && continue
|
||
|
# Don't run *.{rpmsave,rpmorig,rpmnew,swp,cfsaved} scripts
|
||
|
[ "${i%.cfsaved}" != "${i}" ] && continue
|
||
|
[ "${i%.rpmsave}" != "${i}" ] && continue
|
||
|
[ "${i%.rpmorig}" != "${i}" ] && continue
|
||
|
[ "${i%.rpmnew}" != "${i}" ] && continue
|
||
|
[ "${i%.swp}" != "${i}" ] && continue
|
||
|
[ "${i%,v}" != "${i}" ] && continue
|
||
|
|
||
|
# jobs.deny prevents specific files from being executed
|
||
|
# jobs.allow prohibits all non-named jobs from being run.
|
||
|
# can be used in conjunction but there's no reason to do so.
|
||
|
if [ -r $1/jobs.deny ]; then
|
||
|
grep -q "^$(basename $i)$" $1/jobs.deny && continue
|
||
|
fi
|
||
|
if [ -r $1/jobs.allow ]; then
|
||
|
grep -q "^$(basename $i)$" $1/jobs.allow || continue
|
||
|
fi
|
||
|
|
||
|
if [ -e $i ]; then
|
||
|
if [ -r $1/whitelist ]; then
|
||
|
grep -q "^$(basename $i)$" $1/whitelist && continue
|
||
|
fi
|
||
|
|
||
|
if [ ${list:-0} = 1 ]; then
|
||
|
echo $i;
|
||
|
elif [ -x $i ]; then
|
||
|
if [ ${test:-0} = 1 ]; then
|
||
|
echo $i;
|
||
|
continue
|
||
|
fi
|
||
|
if [ "$RANDOMIZE" != "" ]; then
|
||
|
let "rtime = $RANDOM"
|
||
|
if [ "$RANDOMTIME" != "" ]; then
|
||
|
let "rtime %= $RANDOMTIME"
|
||
|
else
|
||
|
let "rtime %= 300"
|
||
|
fi
|
||
|
sleep $rtime
|
||
|
fi
|
||
|
|
||
|
# run executable files
|
||
|
echo "run-parts[$$]" "($1) starting $(basename $i)"
|
||
|
$i $runargs 2>&1
|
||
|
echo "run-parts[$$]" "($1) finished $(basename $i)"
|
||
|
fi
|
||
|
fi
|
||
|
done
|
||
|
|
||
|
exit 0
|