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>