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
Text File  |  1998-08-19  |  5KB  |  243 lines

  1. #!/usr/lib/uucp/permld /var/spool/uucp
  2. #ident    "@(#)uudemon.clean    1.2"
  3. #ident "$Header: uudemon.cleanup 1.1 91/02/28 $"
  4. #
  5. #    This daemon cleans up uucp directories. It is started
  6. #    by an entry in uucp's crontab. It can be run daily,
  7. #    weekly, whatever depending on the system's uucp load, e.g.
  8. #
  9. # 45 23 * * * /usr/lib/uucp/uudemon.clean > /dev/null
  10. #
  11. #    The log files may get so large that you may have to up
  12. #    the ulimit by moving the entry to root's crontab, e.g.
  13. #
  14. # 45 23 * * * ulimit 5000; /usr/bin/su uucp -c "/usr/lib/uucp/uudemon.clean" > /dev/null
  15. #
  16.  
  17. MAILTO=uucp
  18. export PATH
  19. PATH=/usr/bin:/usr/lib/uucp
  20. TMP=/tmp/uu$$
  21.  
  22. #    Running as uucp, take care to protect things
  23.  
  24. umask 0022
  25.  
  26. #
  27. #    These are taken from the Makefile.  If changed in Makefile
  28. #    they must be changed here also.
  29. #
  30. PUBDIR=/var/spool/uucppublic
  31. SPOOL=/var/spool/uucp
  32. VAR=/var/uucp
  33. LOCKS=/var/spool/locks    # needs a comment in parms.h on USRSPOOLOCKS
  34. XQTDIR=$VAR/.Xqtdir
  35. CORRUPT=$VAR/.Corrupt
  36. LOGDIR=$VAR/.Log
  37. SEQDIR=$VAR/.Sequence
  38. STATDIR=$VAR/.Status
  39. WORKDIR=$VAR/.Workspace
  40. ADMIN=$VAR/.Admin
  41. UUCPDIR=
  42.  
  43. # if -d option is specified, remove empty directories under
  44. # the PUBDIR directory only if they are owned by uucp (UID=5).
  45. # This feature is needed for the DESKTOP environment.
  46.  
  47. if [ $# -gt 0 ]
  48. then
  49.     if [ $1 = "-d" ]
  50.     then
  51.         UUCPDIR="-user 5"
  52.     else
  53.         echo "usage: uudemon.clean [-d]"
  54.         exit 1
  55.     fi
  56. fi
  57.  
  58. #    OLD is the directory for archiving old admin/log files
  59. OLD=$VAR/.Old
  60. O_LOGS=$OLD/Old-Log
  61. ACCT_LOGS=$OLD/Old-acct
  62. SEC_LOGS=$OLD/Old-sec
  63.  
  64. mv $ADMIN/xferstats $OLD/xferstats
  65. mv $ADMIN/audit $OLD/audit
  66. mv $ADMIN/command $OLD/command
  67. mv $ADMIN/errors $OLD/errors
  68. mv $ADMIN/Foreign $OLD/Foreign
  69.  
  70. > $ADMIN/xferstats
  71. > $ADMIN/audit
  72. > $ADMIN/command
  73. > $ADMIN/errors
  74. > $ADMIN/Foreign
  75.  
  76. #
  77. #    If performance log exists, save it and create a new one
  78. #
  79. if [ -f $ADMIN/perflog ]
  80. then
  81.     mv $ADMIN/perflog $OLD/perflog
  82.     > $ADMIN/perflog
  83. fi
  84.  
  85. #
  86. #    The list in the for controls how many old Log and security logs
  87. #    are retained: 2 -> 3, 1 -> 2, current -> 1.
  88. #
  89. for i in  2 1
  90. do
  91.     j=`expr $i + 1`
  92.     mv ${O_LOGS}-$i ${O_LOGS}-$j
  93.     mv ${SEC_LOGS}-$i ${SEC_LOGS}-$j
  94. done
  95.  
  96. mv $ADMIN/security ${SEC_LOGS}-1
  97. > $ADMIN/security
  98.  
  99. #
  100. #    Combine all log files into O_LOGS-1.
  101. #    Add a name separator between each system.
  102. #
  103. > ${O_LOGS}-1
  104. for i in uucico uucp uux uuxqt
  105. do
  106.     if [ ! -d $LOGDIR/$i ]
  107.     then
  108.           (echo "uudemon.clean: $LOGDIR/$i directory does not exist, remove if file"
  109.            echo "uudemon.clean: making a directory $LOGDIR/$i"
  110.           ) | mail $MAILTO
  111.         rm -f $LOGDIR/$i
  112.         mkdir $LOGDIR/$i
  113.         continue
  114.     fi
  115.     cd $LOGDIR/$i
  116.     if [ "`pwd`" != "$LOGDIR/$i" ]
  117.     then
  118.           (echo "uudemon.clean: unable to chdir to $LOGDIR/$i") | mail $MAILTO
  119.         continue
  120.     fi
  121.     for j in *
  122.     do
  123.         if [ "$j" = "*" ]
  124.         then
  125.             break
  126.         fi
  127.         echo "********** $j ********** ($i)" >> ${O_LOGS}-1
  128.         cat $j >> ${O_LOGS}-1
  129.         rm -f $j
  130.     done
  131. done
  132.  
  133. #
  134. #    If the accounting log exists, save it and create a new one.
  135. #    The list in the for controls how many old accounting logs
  136. #    are retained: 2 -> 3, 1 -> 2, current -> 1.
  137. #
  138. if [ -f $ADMIN/account ]
  139. then
  140.     for i in  2 1
  141.     do
  142.         j=`expr $i + 1`
  143.         mv ${ACCT_LOGS}-$i ${ACCT_LOGS}-$j
  144.     done
  145.     mv $ADMIN/account ${ACCT_LOGS}-1
  146.     > $ADMIN/account
  147. fi
  148.  
  149. #    Execute the system directory cleanup program
  150. #    See uucleanup.1m for details.
  151. uucleanup -D7 -C7 -X2 -o2 -W1
  152.  
  153. #    Use the grep instead of the mv to ignore warnings to uucp
  154. # grep -v 'warning message sent to uucp' $ADMIN/uucleanup > $OLD/uucleanup
  155. mv $ADMIN/uucleanup $OLD/uucleanup
  156. if [ -s $OLD/uucleanup ]
  157. then
  158.     (echo "Subject: cleanup"; cat $OLD/uucleanup) | mail $MAILTO
  159. fi
  160. >$ADMIN/uucleanup
  161.  
  162. #  cleanup funny directories that may have been created in the spool areas
  163. cd $SPOOL
  164. #  check that we are in the correct directory
  165. if [ "`pwd`" != "$SPOOL" ]
  166. then
  167.     (echo "uudemon.clean: unable to chdir to $SPOOL") | mail $MAILTO
  168.     continue
  169. else
  170.     for d in $SPOOL/*/*/*
  171.     do
  172.     if [ "$d" != "$SPOOL/*/*/*" -a -d "$d" ]
  173.     then
  174.         rm -fr $d
  175.     fi
  176.     done
  177. fi
  178.  
  179. #
  180. #    Find old cores
  181. #
  182. find $SPOOL -name core -print > $TMP
  183. if [ -s $TMP ]
  184. then
  185.     (echo "Subject: cores"; cat $TMP) | mail $MAILTO
  186. fi
  187.  
  188. #
  189. #    Remove old files and directories
  190. #
  191. find $PUBDIR -type f -mtime +30 -exec rm -f {} \;
  192. find $PUBDIR/* -depth -type d $UUCPDIR -exec rmdir {} \;
  193. find $SPOOL/* -depth -type d -exec rmdir {} \;
  194. find $SEQDIR -mtime +30 -exec rm -f {} \;
  195. find $WORKDIR -mtime +1 -exec rm -f {} \;
  196. find $STATDIR -mtime +2 -exec rm -f {} \;
  197. find $CORRUPT -mtime +10 -exec rm -f {} \;
  198.  
  199. rm -f $LOCKS/LTMP*
  200.  
  201. #
  202. #    Mail a daily summary of status
  203. #
  204. grep passwd ${O_LOGS}-1 > $TMP
  205. grep "REQUEST.*/" ${O_LOGS}-1 >> $TMP
  206. if [ -s $TMP ]
  207. then
  208.     (echo "Subject: uucp requests"; cat $TMP) | mail $MAILTO
  209. fi
  210.  
  211.  
  212. awk '/(DENIED)/    {print prev}
  213.         {prev = $0}' ${O_LOGS}-1 > $TMP
  214. if [ -s $TMP ]
  215. then
  216.     (echo "Subject: uucp DENIED"; cat $TMP) | mail $MAILTO
  217. fi
  218.  
  219. uustat -q > $TMP
  220. if [ -s $TMP ]
  221. then
  222.     (echo "Subject: uu-status"; cat $TMP) | mail $MAILTO
  223. fi
  224.  
  225. ls $CORRUPT > $TMP
  226. if [ -s $TMP ]
  227. then
  228.     (echo "Subject: $CORRUPT"; cat $TMP) | mail $MAILTO
  229. fi
  230.  
  231. tail $OLD/errors 2>/dev/null > $TMP
  232. tail $OLD/Foreign 2>/dev/null >> $TMP
  233. if [ -s $TMP ]
  234. then
  235.     (echo "Subject: uucp Admin"; cat $TMP) | mail $MAILTO
  236. fi
  237. (echo "Subject: uucleanup ran; $SPOOL du"; du $SPOOL) | mail $MAILTO
  238.  
  239. #
  240. #    Clean up
  241. #
  242. rm -f $TMP
  243.