#!/bin/bash
# $Id: rclean,v 1.154 2017/01/02 19:54:55 fulford Exp $
# $Source: /src/admin/usr/local/etc/RCS/rclean,v $
# $Revision: 1.154 $
# Author C W Fulford.
# Copyright (c) 2012-2013 C W Fulford.
# Licensed for public use under the LGPL.
# For assistance contact fulford@fulford.net 0709 229 5385
############################################################################
cmd=`basename $0`
syntax="$cmd [-a #max_age] [-c <config_file>] [-d] [-l] [-t] [-v] <client_hostid>"
while [ $# -gt 0 ];do
case $1 in
-a) orage=$2;shift 2;; #overides config file
-c) config=$2;shift 2;;
-d) debug=:;set -x;shift ;;
-l) log=:;shift 1 ;;
-t) testmode=:; archive=/var/ta/test`date +%d`.tar.gz;shift ;;
-v) verbose=: ;shift 1;;
*) if [ $# -eq 1 ];then
hostid=$1;shift;
else
echo "syntax: $syntax" >&2
exit 1;
fi;;
esac
done
arc=error_log`date +%d`
config=${config:-"/usr/local/etc/rclean.cf"}
debug=${debug:-""}
log=${log:-""}
tag=$cmd
tconf=/tmp/$cmd.$$
testmode=${testmode:-""}
tmp=/tmp/clean$$
verbose=${verbose:-""}
[ -r $config ] ||{
echo "$cmd: configuration file $config not found">&2
exit 1
}
grep -e "^$hostid:" $config >/dev/null 2>&1 || {
echo "$cmd: host id \"$hostid\" not found in $config."
exit 2
}
sed -ne '/^'$hostid':/,/^[\t ]*$/{
/^[ \t]*[^=]*=.*$/p
}' $config >$tconf
eval `sed -ne '/^'$hostid':/,/^[\t ]*$/{
/^[ \t]*[^=]*=.*$/p
}' $tconf`
age=${age:-100} # max age in days before deletion
[ "$orage" ] && age=$orage # command line trumps default and config
awk <$tconf '/target:/ {split(t,":",$1);print("cmd=find $2 -ctime=$3 -ls")}'
echo "
#!/bin/bash
[ $debug ] && set -x
dcount=/tmp/dcount\$\$
zcount=/tmp/zcount\$\$
echo "0" >\$dcount
echo "0" >\$zcount
find $wd -type d -name \*\.co\.uk -print |
while read d ;do
[ -d \$d/statistics/logs ] && {
cd \$d/statistics/logs ;
[ $verbose ] && echo "wd=\$d"
[ ! $testmode ] &&{
cp error_log $arc ;
if [ -f $arc ];then
bash -c '>error_log'
[ $verbose ] && echo "error_log truncated"
fi
[ -f $arc.gz ] && rm $arc.gz ;
if gzip $arc ;then
[ $verbose ] && echo "$arc.gz created"
cfz=\$(<\$zcount)
let cfz=\"\$cfz + 1\"
echo \$cfz >\$zcount
fi
cd \$wd
}
}
find \$d/httpdocs/cron/backups \$d/httpdocs/cron/downloads \( -name EN_\*_META_ORG.zip -o -name httpdocs_\*.tar.gz -o -name mysql_\*.sql.gz \) -a -ctime +$age -print 2>/dev/null|
while read f ;do
[ ! $testmode ] &&{
if rm \$f ;then
[ $verbose ] && echo "\$f deleted"
cfd=\$(<\$dcount)
let cfd=\"\$cfd + 1\"
echo \$cfd >\$dcount
fi
}
done
done
find /usr/local/psa/PMM/logs -name pmmcli.log\* -ctime +$age\
-print 2>/dev/null|
while read f ;do
if rm \$f ;then
#cfd=\$((cfd+1))
cfd=\$(<\$dcount)
let cfd=\"\$cfd + 1\"
echo \$cfd >\$dcount
fi
done
find /var/log -name rkhunter\.log\.[0-9\-:]*$ -ctime $age\
-print 2>/dev/null|
while read f ;do
if rm \$f ;then
cfd=\$((cfd+1))
let cfd=\"\$cfd + 1\"
echo \$cfd >\$dcount
fi
done
# use local0.info to match rsyslog configuration
if [ $log ];then
cfd=\$(<\$dcount)
cfz=\$(<\$zcount)
logger -p local0.info -t $tag \"$hostid \$cfd files removed. \$cfz zipped.\"
fi
[ $verbose ] && echo "\$0 removing self"
rm \$0 \$dcount \$zcount
" >$tmp
[ $verbose ] || options="-q"
scp $options $tmp $hostid:$tmp
[ $verbose ] && params="$params -v"
ssh $hostid "sudo sh $tmp $params"
######################################################################
# This program is free software: you can redistribute it and or #
# modify it under the terms of the Lesser GNU General Public License #
# as published by the Free Software Foundation, either version 3 of #
# the License, or (at your option) any later version. #
# #
# This program is distributed in the hope that it will be useful, #
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
# GNU General Public License for more details. #
# #
# A copy of the Lesser GNU General Public License and the GNU #
# General Public License is available at #
# <http://www.gnu.org/licenses/>. #
######################################################################
Copyright
© 2003-2017
Clifford W Fulford.
Fulford Consulting Ltd.
Regd. Co. 4250037 in England & Wales.
Regd. office 162, Edward Rd. Nottingham NG2 5GF, England, UK.
Related web sites: City Linux | Flare Support | West Bridgford | Fulford Portal | Joan Mary Fulford (Nottingham Writer) | Fulford Gallery | Amharic Interpreter | Arabic Interpreter | Tigrinya Interpreter
The layout and associated style sheets for this page are taken from the World Wide Web Consortium and used here under the W3C software licence.