[BACK]Return to daily CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / etc

Annotation of src/etc/daily, Revision 1.50

1.1       cgd         1: #!/bin/sh -
                      2: #
1.50    ! jhawk       3: #      $NetBSD: daily,v 1.49 2003/02/21 22:35:46 jhawk Exp $
1.21      mikel       4: #      @(#)daily       8.2 (Berkeley) 1/25/94
1.1       cgd         5: #
1.18      mrg         6:
1.27      mycroft     7: export PATH=/bin:/usr/bin:/sbin:/usr/sbin
1.28      lukem       8: umask 077
                      9:
                     10: if [ -s /etc/daily.conf ]; then
                     11:        . /etc/daily.conf
                     12: fi
                     13:
1.20      mikel      14: host=`hostname`
1.28      lukem      15: date=`date`
1.1       cgd        16:
1.28      lukem      17: echo "To: ${MAILTO:-root}"
                     18: echo "Subject: $host daily output for $date"
                     19: echo ""
1.18      mrg        20:
1.25      lukem      21: if [ -f /etc/rc.subr ]; then
                     22:        . /etc/rc.subr
                     23: else
                     24:        echo "Can't read /etc/rc.subr; aborting."
                     25:        exit 1;
                     26: fi
                     27:
1.23      phil       28: if [ -z "$MAILTO" -o "$USER" != "root" ]; then
1.27      mycroft    29:        MAILTO=root
1.23      phil       30: fi
                     31:
1.22      lukem      32: echo ""
                     33: echo "Uptime: " `uptime`
1.18      mrg        34:
1.29      abs        35: # Uncommenting any of the finds below would open up a race condition attack
                     36: # based on symlinks, potentially allowing removal of any file on the system.
                     37: #
1.17      jtc        38: #echo ""
                     39: #echo "Removing scratch and junk files:"
                     40: #if [ -d /tmp -a ! -h /tmp ]; then
                     41: #      cd /tmp && {
                     42: #      find . -type f -atime +3 -exec rm -f -- {} \;
                     43: #      find . ! -name . -type d -mtime +1 -exec rmdir -- {} \; \
                     44: #          >/dev/null 2>&1; }
                     45: #fi
1.1       cgd        46:
1.17      jtc        47: #if [ -d /var/tmp -a ! -h /var/tmp ]; then
                     48: #      cd /var/tmp && {
                     49: #      find . ! -name . -atime +7 -exec rm -f -- {} \;
1.35      aymeric    50: #      find . ! \( -name . -o -name vi.recover \) -type d \
                     51: #              -mtime +1 -exec rmdir -- {} \; \
1.17      jtc        52: #          >/dev/null 2>&1; }
                     53: #fi
1.10      cgd        54:
1.15      pk         55: # Additional junk directory cleanup would go like this:
                     56: #if [ -d /scratch -a ! -h /scratch ]; then
                     57: #      cd /scratch && {
                     58: #      find . ! -name . -atime +1 -exec rm -f -- {} \;
                     59: #      find . ! -name . -type d -mtime +1 -exec rmdir -- {} \; \
                     60: #          >/dev/null 2>&1; }
                     61: #fi
1.10      cgd        62:
1.17      jtc        63: #if [ -d /var/rwho -a ! -h /var/rwho ] ; then
                     64: #      cd /var/rwho && {
                     65: #      find . ! -name . -mtime +7 -exec rm -f -- {} \; ; }
                     66: #fi
1.10      cgd        67:
1.36      lukem      68: DAILYDIR=`mktemp -d /tmp/_daily.XXXXXX` || exit 1
1.18      mrg        69:
1.36      lukem      70: trap "/bin/rm -rf $DAILYDIR ; exit 0" EXIT INT QUIT
1.18      mrg        71:
1.36      lukem      72: if ! cd "$DAILYDIR"; then
                     73:        echo "Can not cd to $DAILYDIR".
1.18      mrg        74:        exit 1
                     75: fi
                     76:
1.10      cgd        77: TMP=daily.$$
1.18      mrg        78: TMP2=daily2.$$
                     79:
1.25      lukem      80: if checkyesno find_core; then
1.18      mrg        81:        find / \( ! -fstype local -o -fstype rdonly -o -fstype fdesc \
1.43      lukem      82:                -o -fstype null \
1.48      atatat     83:                -o -fstype kernfs -o -fstype procfs \) -prune -o \
                     84:                -name 'lost+found' -prune -o \
                     85:                \( -name '*.core' -o -name 'core' \) -type f -print > $TMP
1.18      mrg        86: #              \( -name '[#,]*' -o -name '.#*' -o -name a.out \
                     87: #                 -o -name '*.CKP' -o -name '.emacs_[0-9]*' \) \
                     88: #                      -a -atime +3 -exec rm -f -- {} \; -a -print > $TMP
                     89:
1.26      nathanw    90:        egrep '\.core$|^core$' $TMP > $TMP2
1.18      mrg        91:        if [ -s $TMP2 ]; then
                     92:                echo ""
                     93:                echo "Possible core dumps:"
                     94:                cat $TMP2
                     95:        fi
                     96:
                     97: #      egrep -v '\.core' $TMP > $TMP2
                     98: #      if [ -s $TMP2 ]; then
                     99: #              echo ""
                    100: #              echo "Deleted files:"
                    101: #              cat $TMP2
                    102: #      fi
1.10      cgd       103:
1.18      mrg       104:        rm -f $TMP $TMP2
                    105: fi
1.10      cgd       106:
1.25      lukem     107: if checkyesno run_msgs; then
1.18      mrg       108:        msgs -c
                    109: fi
1.1       cgd       110:
1.25      lukem     111: if checkyesno expire_news && [ -f /etc/news.expire ]; then
1.1       cgd       112:        /etc/news.expire
                    113: fi
                    114:
1.25      lukem     115: if checkyesno purge_accounting && [ -f /var/account/acct ]; then
1.21      mikel     116:        echo ""
                    117:        echo "Purging accounting records:"
1.45      lukem     118:        mv /var/account/acct.2 /var/account/acct.3 2>/dev/null
                    119:        mv /var/account/acct.1 /var/account/acct.2 2>/dev/null
                    120:        mv /var/account/acct.0 /var/account/acct.1 2>/dev/null
1.21      mikel     121:        cp /var/account/acct /var/account/acct.0
                    122:        sa -sq
1.1       cgd       123: fi
                    124:
1.25      lukem     125: if checkyesno run_calendar; then
1.50    ! jhawk     126:        calendar -a > $TMP 2>&1
1.18      mrg       127:        if [ -s $TMP ]; then
                    128:                echo ""
                    129:                echo "Running calendar:"
                    130:                cat $TMP
                    131:        fi
                    132:        rm -f $TMP
                    133: fi
1.1       cgd       134:
1.25      lukem     135: if checkyesno check_uucp && \
                    136:     [ -d /var/spool/uucp -a -f /usr/libexec/uucp/clean.daily ]; then
1.1       cgd       137:        echo ""
                    138:        echo "Cleaning up UUCP:"
1.24      lukem     139:        su daemon -c /usr/libexec/uucp/clean.daily
1.1       cgd       140: fi
                    141:
1.25      lukem     142: if checkyesno check_disks; then
1.42      atatat    143:        df -ki > $TMP
1.40      perry     144:        dump -W > $TMP2
1.18      mrg       145:        if [ -s $TMP -o -s $TMP2 ]; then
                    146:                echo ""
                    147:                echo "Checking subsystem status:"
                    148:                echo ""
                    149:                echo "disks:"
                    150:                if [ -s $TMP ]; then
                    151:                        cat $TMP
                    152:                        echo ""
                    153:                fi
                    154:                if [ -s $TMP2 ]; then
                    155:                        cat $TMP2
                    156:                        echo ""
                    157:                fi
                    158:                echo ""
                    159:        fi
1.46      bouyer    160:        rm -f $TMP $TMP2
                    161:        touch $TMP2
                    162:        for dev in `iostat -x | awk '/^raid/ { print $1 }'`; do
                    163:                raidctl -s $dev | awk '/^.*: failed$/ {print $0}' > $TMP
                    164:                if [ -s $TMP ]; then
                    165:                        echo "$dev:" >> $TMP2
                    166:                        cat $TMP >> $TMP2
                    167:                fi
                    168:                rm -f $TMP
                    169:        done
                    170:        if [ -s $TMP2 ]; then
                    171:                echo "failed RAIDframe component(s):"
                    172:                        cat $TMP2
                    173:        fi
                    174:        rm -f $TMP2
1.18      mrg       175: fi
                    176:
1.25      lukem     177: if checkyesno check_mailq; then
1.18      mrg       178:        mailq > $TMP
1.44      lukem     179:        if ! grep -q "queue is empty$" $TMP; then
1.18      mrg       180:                echo ""
                    181:                echo "mail:"
                    182:                cat $TMP
                    183:        fi
                    184: fi
                    185:
                    186: rm -f $TMP
1.1       cgd       187:
1.25      lukem     188: if checkyesno check_uucp && [ -d /var/spool/uucp ]; then
1.41      perry     189:        (cd /tmp; su -m uucp -c "uustat -a") > $TMP
1.18      mrg       190:        if [ -s $TMP ]; then
                    191:                echo ""
                    192:                echo "uucp:"
1.21      mikel     193:                cat $TMP
1.18      mrg       194:        fi
                    195: fi
1.1       cgd       196:
1.18      mrg       197: rm -f $TMP
1.1       cgd       198:
1.25      lukem     199: if checkyesno check_network; then
1.18      mrg       200:        echo ""
                    201:        echo "network:"
1.33      itojun    202:        netstat -inv
1.1       cgd       203:        echo ""
1.18      mrg       204:        t=/var/rwho/*
                    205:        if [ "$t" != '/var/rwho/*' ]; then
                    206:                ruptime
                    207:        fi
1.1       cgd       208: fi
                    209:
1.25      lukem     210: if checkyesno run_fsck; then
1.18      mrg       211:        echo ""
                    212:        echo "Checking filesystems:"
1.37      lukem     213:        fsck -n -f | grep -v '^\*\* Phase'
1.18      mrg       214: fi
1.1       cgd       215:
                    216: echo ""
1.25      lukem     217: if checkyesno run_rdist && [ -f /etc/Distfile ]; then
1.1       cgd       218:        echo "Running rdist:"
1.20      mikel     219:        if [ -d /var/log/rdist ]; then
1.30      enami     220:                logf=`date +%Y.%b.%d`
1.20      mikel     221:                rdist -f /etc/Distfile 2>&1 | tee /var/log/rdist/$logf
                    222:        else
                    223:                rdist -f /etc/Distfile
                    224:        fi
1.1       cgd       225: fi
                    226:
1.25      lukem     227: if checkyesno run_security; then
1.36      lukem     228:        SECOUT="$DAILYDIR/sec"
1.47      grant     229:        sh /etc/security > "$SECOUT" 2>&1
1.36      lukem     230:        if [ ! -s "$SECOUT" ]; then
1.49      jhawk     231:                if checkyesno send_empty_security; then
                    232:                        echo "Nothing to report on $date" > "$SECOUT"
                    233:                else
                    234:                        echo ""
                    235:                        echo "Supressing empty security report."
                    236:                fi
                    237:        fi
                    238:        if [ -s "$SECOUT" ]; then
                    239:                mail -s "$host daily insecurity output for $date" \
                    240:                    $MAILTO < "$SECOUT"
1.28      lukem     241:        fi
1.34      hubertf   242: fi
                    243:
                    244: if checkyesno run_skeyaudit; then
                    245:        echo ""
                    246:        echo "Checking remaining s/key OTPs:"
                    247:        skeyaudit
1.31      ad        248: fi
                    249:
                    250: if [ -f /etc/daily.local ]; then
                    251:        echo ""
                    252:        echo "Running /etc/daily.local:"
                    253:        . /etc/daily.local
1.18      mrg       254: fi

CVSweb <webmaster@jp.NetBSD.org>