|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T c
Length: 4762 (0x129a)
Types: TextFile
Names: »checkerr.sh«
└─⟦9ae75bfbd⟧ Bits:30007242 EUUGD3: Starter Kit
└─⟦2fafebccf⟧ »EurOpenD3/mail/smail3.1.19.tar.Z«
└─⟦bcd2bc73f⟧
└─⟦this⟧ »util/checkerr.sh«
#!/bin/sh
# @(#)checkerr.sh 1.18 4/2/89 22:28:56
#
# Copyright (C) 1987, 1988 Ronald S. Karr and Landon Curt Noll
#
# See the file COPYING, distributed with smail, for restriction
# and warranty information.
# Check for errors which have been deposited in the smail error directory.
# If any new messages are found in this directory, save information
# related to those errors in the file .checkerror which is then mailed
# to the postmaster the next time this shell script is called.
#
# Currently, smail will also detect files in the defer directory and will
# move them into the error directory.
#
# We will also move spool files at the top of the spool directory
# hierarchy into the input subdirectory.
PATH="X_SECURE_PATH_X"
SMAIL_PROGRAM="X_SMAIL_NAME_X"
SPOOL_DIRS="`$SMAIL_PROGRAM -bP spool_dirs`"
HOSTNAME="`$SMAIL_PROGRAM -bP primary_name`"
LOGFILE="`$SMAIL_PROGRAM -bP logfile`"
OLD_LOGFILE="`echo $LOGFILE | sed -e 's,^\(.*\)/\([^/][^/]*\)$,\1/OLD/\2,'`"
PANICLOG="`$SMAIL_PROGRAM -bP paniclog`"
OLD_PANICLOG="`echo $PANICLOG | sed -e 's,^\(.*\)/\([^/][^/]*\)$,\1/OLD/\2,'`"
Z_DOT="X_DOT_Z_X"
ZCAT="X_ZCAT_X"
PROG=$0
# go into each spooling directory
(IFS=:; for i in $SPOOL_DIRS; do echo $i; done) |
while read SPOOLDIR; do
cd $SPOOLDIR
if [ $? != 0 ]; then
# spool directory did not exist, ignore it
continue
fi
# cleanup old msg.* files in the input directory
if [ -d input ]; then
find input -name 'msg.*' -mtime +2 -print | while read fn
do
rm -f "$fn"
done
fi
# cleanup msglog files with no corresponding input or error file:
if [ -d msglog ]; then (
cd msglog
x="`echo [0-9]*`"
sleep 1 # avoids an almost impossible race condition
if [ "$x" != "[0-9]*" ]; then
for i in $x; do
if [ ! -f ../input/$i ] && [ ! -f ../error/$i ]; then
rm -f $i
fi
done
fi
); fi
# if the last run found some errors, but couldn't deliver, try again now
if [ -s .checkerror ]; then
# don't send to the Postmaster if configuration errors still exist
x="`$SMAIL_PROGRAM -bv Postmaster 2>/dev/null`"
if [ "$x" ]; then
$SMAIL_PROGRAM -f"<>" -eq -m Postmaster <<EOF
From: MAILER-DAEMON
Subject: Mail errors on the host $HOSTNAME
Smail has detected new errors requiring your attention on the
host $HOSTNAME. Messages which failed can be found in the
directory $SPOOLDIR/error and should be moved back to
$SPOOLDIR when the situation which caused the error has
been taken care of.
A sumary of these errors follows:
`cat .checkerror`
EOF
else
# if we cannot reach the postmaster, don't go to the next step
continue
fi
fi
if [ ! -d error ]; then
# no error directory, so there could not be new errors
rm -f .checkerror
continue
fi
# find any new errors
if [ -f .lasttimedone ]; then
mv -f .lasttimedone .thistime
: > .lasttimedone
cd error; find * -newer ../.thistime -name '[0-9]*' -print
else
: > .lasttimedone
cd error; find * -name '[0-9]*' -print
fi 2> /dev/null | while read f; do
echo ""; echo "------------------ Message $f ------------------"
if [ -s msglog/$f ]; then
echo "The per-message log file contains:"
sed 's/^/ /' < msglog/$f
else
echo "No per-message log file was created"
fi
echo ""; echo "Logfile entries related to this message are:"
(if [ -f $LOGFILE ]; then
cat $LOGFILE;
fi
if [ -f $OLD_LOGFILE.0 ]; then
cat $OLD_LOGFILE.0;
elif [ -f $OLD_LOGFILE.0$Z_DOT ]; then
$ZCAT $OLD_LOGFILE.0$Z_DOT;
fi
if [ -f $OLD_LOGFILE.1 ]; then
cat $OLD_LOGFILE.1;
elif [ -f $OLD_LOGFILE.1$Z_DOT ]; then
$ZCAT $OLD_LOGFILE.1$Z_DOT;
fi) | grep "\[m$f\]" | sed 's/^/ /'
echo ""; echo "Paniclog entries related to this messsage are:"
(if [ -f $PANICLOG ]; then
cat $PANICLOG;
fi
if [ -f $OLD_PANICLOG.0 ]; then
cat $OLD_PANICLOG.0;
elif [ -f $OLD_PANICLOG.0$Z_DOT ]; then
$ZCAT $OLD_PANICLOG.0$Z_DOT;
fi
if [ -f $OLD_PANICLOG.1 ]; then
cat $OLD_PANICLOG.1;
elif [ -f $OLD_PANICLOG.1$Z_DOT ]; then
$ZCAT $OLD_PANICLOG.1$Z_DOT;
fi) | grep "\[m$f\]" | sed 's/^/ /'
done > .newerrors
mv .newerrors .checkerror
if [ -s .checkerror ]; then
# don't send to the Postmaster if configuration errors still exist
x="`$SMAIL_PROGRAM -bv Postmaster 2>/dev/null`"
if [ "$x" ]; then
$SMAIL_PROGRAM -f"<>" -eq -m Postmaster <<EOF
From: MAILER-DAEMON
Subject: Mail errors on the host $HOSTNAME
Smail has detected new errors requiring your attention on the
host $HOSTNAME. Messages which failed can be found in the
directory $SPOOLDIR/error and should be moved back to
$SPOOLDIR when the situation which caused the error has
been taken care of.
A sumary of these errors follows:
`cat .checkerror`
EOF
fi
fi
done
exit 0