home *** CD-ROM | disk | FTP | other *** search
/ Il CD di internet / CD.iso / SOURCE / N / CNEWS / _CNEWS.TAR / usr / lib / newsbin / maint / newsdaily < prev    next >
Encoding:
Text File  |  1994-09-02  |  3.5 KB  |  177 lines

  1. #! /bin/sh
  2. # newsdaily - daily housekeeping chores
  3.  
  4. # =()<. ${NEWSCONFIG-@<NEWSCONFIG>@}>()=
  5. . ${NEWSCONFIG-/var/lib/news/bin/config}
  6.  
  7. PATH=$NEWSCTL/bin:$NEWSBIN/maint:$NEWSBIN:$NEWSPATH ; export PATH
  8. umask $NEWSUMASK
  9.  
  10. gripes="/tmp/ngrip$$"
  11. tmp="/tmp/ndai$$"
  12. sus="/tmp/suspects$$"
  13. trap "rm -f $gripes $tmp $sus ; exit 0" 0 1 2 15
  14. >$gripes
  15.  
  16. if test $# -gt 0
  17. then
  18.     gurus="$*"
  19. else
  20.     gurus="$NEWSMASTER"
  21. fi
  22.  
  23. cd $NEWSCTL
  24.  
  25. # keep several generations of errlog for problem tracking
  26. rm -f errlog.ooo
  27. mv errlog.oo errlog.ooo
  28. mv errlog.o errlog.oo
  29. mv errlog errlog.o && >errlog
  30.  
  31. # keep one generation of log -- it's big
  32. rm -f log.o
  33. mv log log.o && >log
  34.  
  35. # keep several generations of batchlog for statistics
  36. if test -f batchlog
  37. then
  38.     rm -f batchlog.ooo
  39.     mv batchlog.oo batchlog.ooo
  40.     mv batchlog.o batchlog.oo
  41.     mv batchlog batchlog.o && >batchlog
  42. fi
  43.  
  44. # report any errors
  45. sleep 500            # hope that errlog.o is quiescent after this
  46. if test -s errlog.o
  47. then
  48.     (
  49.         echo "errlog.o"
  50.         echo ---------
  51.         cat errlog.o
  52.         echo ---------
  53.         echo
  54.     ) >>$gripes
  55. fi
  56.  
  57. # look for input anomalies
  58. cd $NEWSARTS/in.coming
  59. find . -type f -mtime +1 -print | sed 's;^\./;;' | egrep -v '^bad/' >$tmp
  60. if test -s $tmp        # old non-bad files lying about
  61. then
  62.     (
  63.         echo 'old input files:'
  64.         ls -ldtr `cat $tmp`
  65.         echo
  66.     ) >>$gripes
  67. fi
  68. find bad -type f -name '[0-9]*' -mtime -2 -print >$tmp    # recent bad batches
  69. if test -s $tmp
  70. then
  71.     (
  72.         echo 'recent bad input batches (perhaps worth investigation):'
  73.         ls -ldtr `cat $tmp`
  74.         echo
  75.     ) >>$gripes
  76. fi
  77. find bad -type f -name '[0-9]*' -mtime +7 -exec rm -f '{}' ';'
  78. cd $NEWSCTL
  79.  
  80. # look for output anomalies
  81. cd $NEWSARTS/out.going
  82. find . -type f -name 'togo*' -size +0 -mtime +1 -print >$tmp
  83. if test -s $tmp
  84. then
  85.     (
  86.         echo 'batching possibly stalled for sites:'
  87.         sed 's;^\./\([^/]*\)/.*;\1;' $tmp | sort -u
  88.         echo
  89.     ) >>$gripes
  90. fi
  91. cd $NEWSCTL
  92. no=0
  93. if test -f batchlog.o
  94. then
  95.     no=`egrep 'disk too full' batchlog.o | wc -l`
  96. fi
  97. if test " $no" -gt 0
  98. then
  99.     (
  100.         echo "space shortage(s) limited batching $no times"
  101.         echo
  102.     ) >>$gripes
  103. fi
  104.  
  105. # sweep log file, once, for suspect lines
  106. egrep '`
  107. ancient
  108. future
  109. unparsable
  110. header
  111. space in
  112. Message-ID' log.o >$sus
  113.  
  114. # look for problem newsgroups on input (can miss cross-posted articles)
  115. egrep junked $sus | sed 's/.*`\(.*\)'"'"'.*/\1/' | sort |
  116.     uniq -c | sort -nr | sed 5q >$tmp
  117. if test -s $tmp
  118. then
  119.     (
  120.         echo 'leading five unknown newsgroups by number of articles:'
  121.         cat $tmp
  122.         echo
  123.     ) >>$gripes
  124. fi
  125. egrep unapproved $sus | sed 's/.*`\(.*\)'"'"'.*/\1/' | sort |
  126.     uniq -c | sort -nr | sed 5q >$tmp
  127. if test -s $tmp
  128. then
  129.     (
  130.         echo 'top five supposedly-moderated groups with unmoderated postings:'
  131.         cat $tmp
  132.         echo
  133.     ) >>$gripes
  134. fi
  135. egrep 'no subscribed' $sus | sed 's/.*`\(.*\)'"'"'.*/\1/' | sort |
  136.     uniq -c | sort -nr | sed 5q >$tmp
  137. if test -s $tmp
  138. then
  139.     (
  140.         echo 'leading five unsubscribed newsgroups:'
  141.         cat $tmp
  142.         echo
  143.     ) >>$gripes
  144. fi
  145.  
  146. # And other signs of problems.
  147. egrep 'ancient|too far in the future|unparsable Date' $sus | egrep ' - ' |
  148.     awk '{print $4}' | sort | uniq -c | sort -nr | sed 5q >$tmp
  149. if test -s $tmp
  150. then
  151.     (
  152.         echo 'leading five sites sending stale/future/misdated news:'
  153.         cat $tmp
  154.         echo
  155.     ) >>$gripes
  156. fi
  157. egrep ' (no|empty) .* header|contains non-|Message-ID|space in' $sus |
  158.     egrep ' - ' | awk '{print $4}' | sort | uniq -c | sort -nr |
  159.     sed 5q >$tmp
  160. if test -s $tmp
  161. then
  162.     (
  163.         echo 'leading five sites sending news with bad headers:'
  164.         cat $tmp
  165.         echo
  166.     ) >>$gripes
  167. fi
  168.  
  169. # send it
  170. if test -s $gripes
  171. then
  172.     mail $gurus <$gripes
  173. fi
  174.  
  175. # and do other daily chores
  176. $NEWSBIN/relay/dodelayed
  177.