#!/usr/bin/perl -P # $RCSfile$$Revision$$Date$ # This prints out extraordinary console messages. You'll need to customize. chdir('/usr/adm/private/memories') || die "Can't cd to memories: $!\n"; $maxpos = `cat oldmsgs 2>&1`; #if defined(mc300) || defined(mc500) || defined(mc700) open(Msgs, '/dev/null') || die "scan_messages: can't open messages"; #else open(Msgs, '/usr/adm/messages') || die "scan_messages: can't open messages"; #endif ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime, $blksize,$blocks) = stat(Msgs); if ($size < $maxpos) { # Did somebody truncate messages file? $maxpos = 0; } seek(Msgs,$maxpos,0); # Start where we left off last time. while () { s/\[(\d+)\]/#/ && s/$1/#/g; #ifdef vax $_ =~ s/[A-Z][a-z][a-z] +\w+ +[0-9:]+ +\w+ +//; next if /root@.*:/; next if /^vmunix: 4.3 BSD UNIX/; next if /^vmunix: Copyright/; next if /^vmunix: avail mem =/; next if /^vmunix: SBIA0 at /; next if /^vmunix: disk ra81 is/; next if /^vmunix: dmf. at uba/; next if /^vmunix: dmf.:.*asynch/; next if /^vmunix: ex. at uba/; next if /^vmunix: ex.: HW/; next if /^vmunix: il. at uba/; next if /^vmunix: il.: hardware/; next if /^vmunix: ra. at uba/; next if /^vmunix: ra.: media/; next if /^vmunix: real mem/; next if /^vmunix: syncing disks/; next if /^vmunix: tms/; next if /^vmunix: tmscp. at uba/; next if /^vmunix: uba. at /; next if /^vmunix: uda. at /; next if /^vmunix: uda.: unit . ONLIN/; next if /^vmunix: .*buffers containing/; next if /^syslogd: .*newslog/; #endif next if /unknown service/; next if /^\.\.\.$/; if (/^[A-Z][a-z][a-z] [ 0-9][0-9] [ 0-9][0-9]:[0-9][0-9]/) { $pfx = ''; next; } next if /^[ \t]*$/; next if /^[ 0-9]*done$/; if (/^A/) { next if /^Accounting [sr]/; } elsif (/^C/) { next if /^Called from/; next if /^Copyright/; } elsif (/^E/) { next if /^End traceback/; next if /^Ethernet address =/; } elsif (/^K/) { next if /^KERNEL MODE/; } elsif (/^R/) { next if /^Rebooting Unix/; } elsif (/^S/) { next if /^Sun UNIX 4\.2 Release/; } elsif (/^W/) { next if /^WARNING: clock gained/; } elsif (/^a/) { next if /^arg /; next if /^avail mem =/; } elsif (/^b/) { next if /^bwtwo[0-9] at /; } elsif (/^c/) { next if /^cgone[0-9] at /; next if /^cdp[0-9] at /; next if /^csr /; } elsif (/^d/) { next if /^dcpa: init/; next if /^done$/; next if /^dts/; next if /^dump i\/o error/; next if /^dumping to dev/; next if /^dump succeeded/; $pfx = '*' if /^dev = /; } elsif (/^e/) { next if /^end \*\*/; next if /^error in copy/; } elsif (/^f/) { next if /^found /; } elsif (/^i/) { next if /^ib[0-9] at /; next if /^ie[0-9] at /; } elsif (/^l/) { next if /^le[0-9] at /; } elsif (/^m/) { next if /^mem = /; next if /^mt[0-9] at /; next if /^mti[0-9] at /; $pfx = '*' if /^mode = /; } elsif (/^n/) { next if /^not found /; } elsif (/^p/) { next if /^page map /; next if /^pi[0-9] at /; $pfx = '*' if /^panic/; } elsif (/^q/) { next if /^qqq /; } elsif (/^r/) { next if /^read /; next if /^revarp: Requesting/; next if /^root [od]/; } elsif (/^s/) { next if /^sc[0-9] at /; next if /^sd[0-9] at /; next if /^sd[0-9]: oldmsgs.tmp') || die "Can't create tmp file: $!\n"; while ($_ = pop(@seen)) { print tmp $_; } close(tmp); open(tmp,'oldmsgs.tmp') || die "Can't reopen tmp file: $!\n"; while () { if (/^nd:/) { next if $seen{$_} < 20; } if (/NFS/) { next if $seen{$_} < 20; } if (/no carrier/) { next if $seen{$_} < 20; } if (/silo overflow/) { next if $seen{$_} < 20; } print $seen{$_},":\t",$_; } print `rm -f oldmsgs.tmp 2>&1; echo $max > oldmsgs 2>&1`;