[Mailman-Users] mmdsr -- Mailman Daily Status Reports(Bourne shellscript, updated)
Mark Sapiro
msapiro at value.net
Fri Sep 30 07:29:55 CEST 2005
Brad Knowles wrote:
>
> I've taken your submission and incorporated that, as well as
>fixing another bug that was brought to my attention by Adrian Wells.
>It turns out that there is a minor log file difference between
>Mailman versions 2.1.5 and 2.1.6, which causes the "smtp" log to be
>written in a slightly different format. The code should now handle
>both styles without problems.
This all looks good. I made a couple of other changes that I meant to
report before now, but never got to it.
I got tired of seeing all the '.' and '..' entries and the 'total'
blocks in the qfiles subdirectory listings so I changed the script as
follows:
@@ -455,7 +457,7 @@
echo "------------------------------" >> $TMP
if [ $LINES -le $MAX_LINES ] ; then
- $CAT $TMPLOG >> $TMP
+ $GREP -v "^[dt]" $TMPLOG >> $TMP
else
$HEAD $TMPLOG >> $TMP
echo "" >> $TMP
to supress the 'total' line and sub-sub-directories although arguably
the total line is interesting to monitor if it grows large.
One could just make the grep
$GREP -v "^d" $TMPLOG >> $TMP
or maybe just change the preceding
$LS -la $DIR >> $TMPLOG
to
$LS -l $DIR >> $TMPLOG
The other thing I changed is due to the fact that the logs are rotated
weekly via logrotate on my installation. This occurs at 04:02 on
Sundays and is beyond my control and caused my report for Sunday to be
missing the 00:00 to 04:02 time period. Even if I did control it, I
think the best I could do would lose a second or two.
Instead, I changed the script as follows to get all the days entries
from both the current and the previous log (if any).
@@ -254,7 +254,8 @@
$TOUCH $TMPLOG
echo "Log file: $LOG" >> $TMP
echo "==============================" >> $TMP
- $GREP -si "^$DAY [0-9][0-9:]* $YEAR" $LOGDIR/$LOG >> $TMPLOG
+ $GREP -si "^$DAY [0-9][0-9:]* $YEAR" ${LOGDIR}/${LOG}.1
${LOGDIR}/${LOG} \
+ | $SED "s/^[^:]*://" >> $TMPLOG
if [ -f "$LOGDIR/${LOG}" ] ; then
@@ -324,7 +325,8 @@
$TOUCH $TMPLOG
echo "Log file: $LOG" >> $TMP
echo "==============================" >> $TMP
- $GREP -si "^$DAY [0-9][0-9:]* $YEAR" $LOGDIR/$LOG >> $TMPLOG
+ $GREP -si "^$DAY [0-9][0-9:]* $YEAR" ${LOGDIR}/${LOG}.1
${LOGDIR}/${LOG} \
+ | $SED "s/^[^:]*://" >> $TMPLOG
if [ -f "$LOGDIR/${LOG}" ] ; then
Watch for wrapped lines above. Also, note the sed which removes the
leading 'filename:' placed on each line by grep.
--
Mark Sapiro <msapiro at value.net> The highway is for gamblers,
San Francisco Bay Area, California better use your sense - B. Dylan
More information about the Mailman-Users
mailing list