home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World Komputer 1999 March B
/
SCO_CASTOR4RRT.iso
/
base
/
root.15
/
usr
/
lib
/
uucp
/
uudemon.clean
/
uudemon
Wrap
Text File
|
1998-08-19
|
5KB
|
243 lines
#!/usr/lib/uucp/permld /var/spool/uucp
#ident "@(#)uudemon.clean 1.2"
#ident "$Header: uudemon.cleanup 1.1 91/02/28 $"
#
# This daemon cleans up uucp directories. It is started
# by an entry in uucp's crontab. It can be run daily,
# weekly, whatever depending on the system's uucp load, e.g.
#
# 45 23 * * * /usr/lib/uucp/uudemon.clean > /dev/null
#
# The log files may get so large that you may have to up
# the ulimit by moving the entry to root's crontab, e.g.
#
# 45 23 * * * ulimit 5000; /usr/bin/su uucp -c "/usr/lib/uucp/uudemon.clean" > /dev/null
#
MAILTO=uucp
export PATH
PATH=/usr/bin:/usr/lib/uucp
TMP=/tmp/uu$$
# Running as uucp, take care to protect things
umask 0022
#
# These are taken from the Makefile. If changed in Makefile
# they must be changed here also.
#
PUBDIR=/var/spool/uucppublic
SPOOL=/var/spool/uucp
VAR=/var/uucp
LOCKS=/var/spool/locks # needs a comment in parms.h on USRSPOOLOCKS
XQTDIR=$VAR/.Xqtdir
CORRUPT=$VAR/.Corrupt
LOGDIR=$VAR/.Log
SEQDIR=$VAR/.Sequence
STATDIR=$VAR/.Status
WORKDIR=$VAR/.Workspace
ADMIN=$VAR/.Admin
UUCPDIR=
# if -d option is specified, remove empty directories under
# the PUBDIR directory only if they are owned by uucp (UID=5).
# This feature is needed for the DESKTOP environment.
if [ $# -gt 0 ]
then
if [ $1 = "-d" ]
then
UUCPDIR="-user 5"
else
echo "usage: uudemon.clean [-d]"
exit 1
fi
fi
# OLD is the directory for archiving old admin/log files
OLD=$VAR/.Old
O_LOGS=$OLD/Old-Log
ACCT_LOGS=$OLD/Old-acct
SEC_LOGS=$OLD/Old-sec
mv $ADMIN/xferstats $OLD/xferstats
mv $ADMIN/audit $OLD/audit
mv $ADMIN/command $OLD/command
mv $ADMIN/errors $OLD/errors
mv $ADMIN/Foreign $OLD/Foreign
> $ADMIN/xferstats
> $ADMIN/audit
> $ADMIN/command
> $ADMIN/errors
> $ADMIN/Foreign
#
# If performance log exists, save it and create a new one
#
if [ -f $ADMIN/perflog ]
then
mv $ADMIN/perflog $OLD/perflog
> $ADMIN/perflog
fi
#
# The list in the for controls how many old Log and security logs
# are retained: 2 -> 3, 1 -> 2, current -> 1.
#
for i in 2 1
do
j=`expr $i + 1`
mv ${O_LOGS}-$i ${O_LOGS}-$j
mv ${SEC_LOGS}-$i ${SEC_LOGS}-$j
done
mv $ADMIN/security ${SEC_LOGS}-1
> $ADMIN/security
#
# Combine all log files into O_LOGS-1.
# Add a name separator between each system.
#
> ${O_LOGS}-1
for i in uucico uucp uux uuxqt
do
if [ ! -d $LOGDIR/$i ]
then
(echo "uudemon.clean: $LOGDIR/$i directory does not exist, remove if file"
echo "uudemon.clean: making a directory $LOGDIR/$i"
) | mail $MAILTO
rm -f $LOGDIR/$i
mkdir $LOGDIR/$i
continue
fi
cd $LOGDIR/$i
if [ "`pwd`" != "$LOGDIR/$i" ]
then
(echo "uudemon.clean: unable to chdir to $LOGDIR/$i") | mail $MAILTO
continue
fi
for j in *
do
if [ "$j" = "*" ]
then
break
fi
echo "********** $j ********** ($i)" >> ${O_LOGS}-1
cat $j >> ${O_LOGS}-1
rm -f $j
done
done
#
# If the accounting log exists, save it and create a new one.
# The list in the for controls how many old accounting logs
# are retained: 2 -> 3, 1 -> 2, current -> 1.
#
if [ -f $ADMIN/account ]
then
for i in 2 1
do
j=`expr $i + 1`
mv ${ACCT_LOGS}-$i ${ACCT_LOGS}-$j
done
mv $ADMIN/account ${ACCT_LOGS}-1
> $ADMIN/account
fi
# Execute the system directory cleanup program
# See uucleanup.1m for details.
uucleanup -D7 -C7 -X2 -o2 -W1
# Use the grep instead of the mv to ignore warnings to uucp
# grep -v 'warning message sent to uucp' $ADMIN/uucleanup > $OLD/uucleanup
mv $ADMIN/uucleanup $OLD/uucleanup
if [ -s $OLD/uucleanup ]
then
(echo "Subject: cleanup"; cat $OLD/uucleanup) | mail $MAILTO
fi
>$ADMIN/uucleanup
# cleanup funny directories that may have been created in the spool areas
cd $SPOOL
# check that we are in the correct directory
if [ "`pwd`" != "$SPOOL" ]
then
(echo "uudemon.clean: unable to chdir to $SPOOL") | mail $MAILTO
continue
else
for d in $SPOOL/*/*/*
do
if [ "$d" != "$SPOOL/*/*/*" -a -d "$d" ]
then
rm -fr $d
fi
done
fi
#
# Find old cores
#
find $SPOOL -name core -print > $TMP
if [ -s $TMP ]
then
(echo "Subject: cores"; cat $TMP) | mail $MAILTO
fi
#
# Remove old files and directories
#
find $PUBDIR -type f -mtime +30 -exec rm -f {} \;
find $PUBDIR/* -depth -type d $UUCPDIR -exec rmdir {} \;
find $SPOOL/* -depth -type d -exec rmdir {} \;
find $SEQDIR -mtime +30 -exec rm -f {} \;
find $WORKDIR -mtime +1 -exec rm -f {} \;
find $STATDIR -mtime +2 -exec rm -f {} \;
find $CORRUPT -mtime +10 -exec rm -f {} \;
rm -f $LOCKS/LTMP*
#
# Mail a daily summary of status
#
grep passwd ${O_LOGS}-1 > $TMP
grep "REQUEST.*/" ${O_LOGS}-1 >> $TMP
if [ -s $TMP ]
then
(echo "Subject: uucp requests"; cat $TMP) | mail $MAILTO
fi
awk '/(DENIED)/ {print prev}
{prev = $0}' ${O_LOGS}-1 > $TMP
if [ -s $TMP ]
then
(echo "Subject: uucp DENIED"; cat $TMP) | mail $MAILTO
fi
uustat -q > $TMP
if [ -s $TMP ]
then
(echo "Subject: uu-status"; cat $TMP) | mail $MAILTO
fi
ls $CORRUPT > $TMP
if [ -s $TMP ]
then
(echo "Subject: $CORRUPT"; cat $TMP) | mail $MAILTO
fi
tail $OLD/errors 2>/dev/null > $TMP
tail $OLD/Foreign 2>/dev/null >> $TMP
if [ -s $TMP ]
then
(echo "Subject: uucp Admin"; cat $TMP) | mail $MAILTO
fi
(echo "Subject: uucleanup ran; $SPOOL du"; du $SPOOL) | mail $MAILTO
#
# Clean up
#
rm -f $TMP