logmanager/logmanager

82 lines
1.7 KiB
Plaintext
Raw Permalink Normal View History

#!/bin/sh
2011-02-23 15:39:35 +01:00
archiver=`dirname "$0"`/logarchiver
rotator=`dirname "$0"`/logrotator
compressor=`dirname "$0"`/logcompressor
cleaner=`dirname "$0"`/logcleaner
cmd=
help() {
cat <<EOF
`basename "$0"` -h | [-a EXE] [-z EXE] [-C EXE] [-c CONF]
-c CONF Config file (std: ./lmtab ~/.lmtab /etc/lmtab (first come first serve)
2011-02-23 15:39:35 +01:00
-a EXE Archiver (std: ./logarchiver)
-z EXE Compressor (std: ./logcompressor)
-C EXE Cleaner (std: ./logcleaner)
-n Dummy mode: prints what will called if not dummy.
-N Calls archiver, compressor and cleaner in dummy mode (-n).
-h Prints this.
2011-02-23 15:39:35 +01:00
EOF
exit
}
with_n() {
2012-07-30 12:02:42 +02:00
__cmd=$1
shift
echo "$__cmd" -n "$@"
2012-07-30 12:02:42 +02:00
"$__cmd" -n "$@"
}
while getopts hc:a:r:z:C:nN o
2011-02-23 15:39:35 +01:00
do
case "$o" in
h) help ;;
c) c="$OPTARG" ;;
a) archiver="$OPTARG" ;;
r) rotator="$OPTARG" ;;
z) compressor="$OPTARG" ;;
C) cleaner="$OPTARG" ;;
n) cmd=echo ;;
N) cmd=with_n ;;
*) help ;;
2011-02-23 15:39:35 +01:00
esac
done
shift `expr $OPTIND - 1`
2011-02-23 15:39:35 +01:00
for n in "$c" ./lmtab "$HOME/.lmtab" /etc/lmtab
2011-02-23 15:39:35 +01:00
do
if [ -f "$n" ]
then
c=$n
break
fi
done
if [ ! -r "$c" ]
then
echo "No config found." >&2
exit 1
fi
# Read variables from config-file and export it as process variables.
eval `sed -ne '
s/#.*//;s/'\''/'"'\\\\\''"'/g;
s/\${\([a-zA-Z][0-9a-zA-Z_]*\)}/'\''"$\1"'\''/;
s/^\([a-zA-Z_][0-9a-zA-Z_]*\)=\(.*\)/\1='\''\2'\''; export \1/p
' < "$c"`
# Format: Directory [Expression[/Expression[/...]]] [retention time]
# Directories must be uniq!
sed -ne 's/#.*//;s/^[a-zA-Z_][0-9a-zA-Z_]*=.*//;/\//p' "$c" | while read dir exp age opts
2011-02-23 15:39:35 +01:00
do
[ X = "X$age" ] || age="-a$age"
while [ ! "X." = "X${exp}" ]
do
e="`basename "${exp}"`"
exp="`dirname "${exp}"`"
2012-07-30 12:02:42 +02:00
$cmd $archiver -e "$e" -- "$dir"
2011-02-23 15:39:35 +01:00
done
2012-07-30 12:02:42 +02:00
$cmd $compressor -- "$dir"
[ 0 = "$age" ] || $cmd $cleaner "$age" -- "$dir"
2011-02-23 15:39:35 +01:00
done