home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / perl502b.zip / eg / scan / scan_messages < prev    next >
Text File  |  1994-10-18  |  5KB  |  223 lines

  1. #!/usr/bin/perl -P
  2.  
  3. # $RCSfile: scan_messages,v $$Revision: 4.1 $$Date: 92/08/07 17:20:37 $
  4.  
  5. # This prints out extraordinary console messages.  You'll need to customize.
  6.  
  7. chdir('/usr/adm/private/memories') || die "Can't cd to memories: $!\n";
  8.  
  9. $maxpos = `cat oldmsgs 2>&1`;
  10.  
  11. #if defined(mc300) || defined(mc500) || defined(mc700)
  12. open(Msgs, '/dev/null') || die "scan_messages: can't open messages";
  13. #else
  14. open(Msgs, '/usr/adm/messages') || die "scan_messages: can't open messages";
  15. #endif
  16.  
  17. ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,
  18.    $blksize,$blocks) = stat(Msgs);
  19.  
  20. if ($size < $maxpos) {        # Did somebody truncate messages file?
  21.     $maxpos = 0;
  22. }
  23.  
  24. seek(Msgs,$maxpos,0);        # Start where we left off last time.
  25.  
  26. while (<Msgs>) {
  27.     s/\[(\d+)\]/#/ && s/$1/#/g;
  28. #ifdef vax
  29.     $_ =~ s/[A-Z][a-z][a-z] +\w+ +[0-9:]+ +\w+ +//;
  30.     next if /root@.*:/;
  31.     next if /^vmunix: 4.3 BSD UNIX/;
  32.     next if /^vmunix: Copyright/;
  33.     next if /^vmunix: avail mem =/;
  34.     next if /^vmunix: SBIA0 at /;
  35.     next if /^vmunix: disk ra81 is/;
  36.     next if /^vmunix: dmf. at uba/;
  37.     next if /^vmunix: dmf.:.*asynch/;
  38.     next if /^vmunix: ex. at uba/;
  39.     next if /^vmunix: ex.: HW/;
  40.     next if /^vmunix: il. at uba/;
  41.     next if /^vmunix: il.: hardware/;
  42.     next if /^vmunix: ra. at uba/;
  43.     next if /^vmunix: ra.: media/;
  44.     next if /^vmunix: real mem/;
  45.     next if /^vmunix: syncing disks/;
  46.     next if /^vmunix: tms/;
  47.     next if /^vmunix: tmscp. at uba/;
  48.     next if /^vmunix: uba. at /;
  49.     next if /^vmunix: uda. at /;
  50.     next if /^vmunix: uda.: unit . ONLIN/;
  51.     next if /^vmunix: .*buffers containing/;
  52.     next if /^syslogd: .*newslog/;
  53. #endif
  54.     next if /unknown service/;
  55.     next if /^\.\.\.$/;
  56.     if (/^[A-Z][a-z][a-z] [ 0-9][0-9] [ 0-9][0-9]:[0-9][0-9]/) {
  57.     $pfx = '';
  58.     next;
  59.     }
  60.     next if /^[ \t]*$/;
  61.     next if /^[ 0-9]*done$/;
  62.     if (/^A/) {
  63.     next if /^Accounting [sr]/;
  64.     }
  65.     elsif (/^C/) {
  66.     next if /^Called from/;
  67.     next if /^Copyright/;
  68.     }
  69.     elsif (/^E/) {
  70.     next if /^End traceback/;
  71.     next if /^Ethernet address =/;
  72.     }
  73.     elsif (/^K/) {
  74.     next if /^KERNEL MODE/;
  75.     }
  76.     elsif (/^R/) {
  77.     next if /^Rebooting Unix/;
  78.     }
  79.     elsif (/^S/) {
  80.     next if /^Sun UNIX 4\.2 Release/;
  81.     }
  82.     elsif (/^W/) {
  83.     next if /^WARNING: clock gained/;
  84.     }
  85.     elsif (/^a/) {
  86.     next if /^arg /;
  87.     next if /^avail mem =/;
  88.     }
  89.     elsif (/^b/) {
  90.     next if /^bwtwo[0-9] at /;
  91.     }
  92.     elsif (/^c/) {
  93.     next if /^cgone[0-9] at /;
  94.     next if /^cdp[0-9] at /;
  95.     next if /^csr /;
  96.     }
  97.     elsif (/^d/) {
  98.     next if /^dcpa: init/;
  99.     next if /^done$/;
  100.     next if /^dts/;
  101.     next if /^dump i\/o error/;
  102.     next if /^dumping to dev/;
  103.     next if /^dump succeeded/;
  104.     $pfx = '*' if /^dev = /;
  105.     }
  106.     elsif (/^e/) {
  107.     next if /^end \*\*/;
  108.     next if /^error in copy/;
  109.     }
  110.     elsif (/^f/) {
  111.     next if /^found /;
  112.     }
  113.     elsif (/^i/) {
  114.     next if /^ib[0-9] at /;
  115.     next if /^ie[0-9] at /;
  116.     }
  117.     elsif (/^l/) {
  118.     next if /^le[0-9] at /;
  119.     }
  120.     elsif (/^m/) {
  121.     next if /^mem = /;
  122.     next if /^mt[0-9] at /;
  123.     next if /^mti[0-9] at /;
  124.     $pfx = '*' if /^mode = /;
  125.     }
  126.     elsif (/^n/) {
  127.     next if /^not found /;
  128.     }
  129.     elsif (/^p/) {
  130.     next if /^page map /;
  131.     next if /^pi[0-9] at /;
  132.     $pfx = '*' if /^panic/;
  133.     }
  134.     elsif (/^q/) {
  135.     next if /^qqq /;
  136.     }
  137.     elsif (/^r/) {
  138.     next if /^read  /;
  139.     next if /^revarp: Requesting/;
  140.     next if /^root [od]/;
  141.     }
  142.     elsif (/^s/) {
  143.     next if /^sc[0-9] at /;
  144.     next if /^sd[0-9] at /;
  145.     next if /^sd[0-9]: </;
  146.     next if /^si[0-9] at /;
  147.     next if /^si_getstatus/;
  148.     next if /^sk[0-9] at /;
  149.     next if /^skioctl/;
  150.     next if /^skopen/;
  151.     next if /^skprobe/;
  152.     next if /^skread/;
  153.     next if /^skwrite/;
  154.     next if /^sky[0-9] at /;
  155.     next if /^st[0-9] at /;
  156.     next if /^st0:.*load/;
  157.     next if /^stat1 = /;
  158.     next if /^syncing disks/;
  159.     next if /^syslogd: going down on signal 15/;
  160.     }
  161.     elsif (/^t/) {
  162.     next if /^timeout [0-9]/;
  163.     next if /^tm[0-9] at /;
  164.     next if /^tod[0-9] at /;
  165.     next if /^tv [0-9]/;
  166.     $pfx = '*' if /^trap address/;
  167.     }
  168.     elsif (/^u/) {
  169.     next if /^unit nsk/;
  170.     next if /^use one of/;
  171.     $pfx = '' if /^using/;
  172.     next if /^using [0-9]+ buffers/;
  173.     }
  174.     elsif (/^x/) {
  175.     next if /^xy[0-9] at /;
  176.     next if /^write [0-9]/;
  177.     next if /^xy[0-9]: </;
  178.     next if /^xyc[0-9] at /;
  179.     }
  180.     elsif (/^y/) {
  181.     next if /^yyy [0-9]/;
  182.     }
  183.     elsif (/^z/) {
  184.     next if /^zs[0-9] at /;
  185.     }
  186.     $pfx = '*' if /^[a-z]+:$/;
  187.     s/pid [0-9]+: //;
  188.     if (/last message repeated ([0-9]+) time/) {
  189.     $seen{$last} += $1;
  190.     next;
  191.     }
  192.     s/^/$pfx/ if $pfx;
  193.     unless ($seen{$_}++) {
  194.     push(@seen,$_);
  195.     }
  196.     $last = $_;
  197. }
  198. $max = tell(Msgs);
  199.  
  200. open(tmp,'|sort >oldmsgs.tmp') || die "Can't create tmp file: $!\n";
  201. while ($_ = pop(@seen)) {
  202.     print tmp $_;
  203. }
  204. close(tmp);
  205. open(tmp,'oldmsgs.tmp') || die "Can't reopen tmp file: $!\n";
  206. while (<tmp>) {
  207.     if (/^nd:/) {
  208.     next if $seen{$_} < 20;
  209.     }
  210.     if (/NFS/) {
  211.     next if $seen{$_} < 20;
  212.     }
  213.     if (/no carrier/) {
  214.     next if $seen{$_} < 20;
  215.     }
  216.     if (/silo overflow/) {
  217.     next if $seen{$_} < 20;
  218.     }
  219.     print $seen{$_},":\t",$_;
  220. }
  221.  
  222. print `rm -f oldmsgs.tmp 2>&1; echo $max > oldmsgs 2>&1`;
  223.