YA resync with mainstem, including VMS patches from others
[p5sagit/p5-mst-13.2.git] / eg / scan / scan_sudo
CommitLineData
378cc40b 1#!/usr/bin/perl -P
2
79072805 3# $RCSfile: scan_sudo,v $$Revision: 4.1 $$Date: 92/08/07 17:20:42 $
378cc40b 4
5# Analyze the sudo log.
6
a687059c 7chdir('/usr/adm/private/memories') || die "Can't cd to memories: $!\n";
378cc40b 8
9if (open(Oldsudo,'oldsudo')) {
10 $maxpos = <Oldsudo>;
11 close Oldsudo;
12}
13else {
14 $maxpos = 0;
15 `echo 0 >oldsudo`;
16}
17
18unless (open(Sudo, '/usr/adm/sudo.log')) {
19 print "Somebody removed sudo.log!!!\n" if $maxpos;
20 exit 0;
21}
22
23($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,
24 $blksize,$blocks) = stat(Sudo);
25
26if ($size < $maxpos) {
27 $maxpos = 0;
28 print "Somebody reset sudo.log!!!\n";
29}
30
31seek(Sudo,$maxpos,0);
32
33while (<Sudo>) {
34 s/^.* :[ \t]+//;
35 s/ipcrm.*/ipcrm/;
36 s/kill.*/kill/;
37 unless ($seen{$_}++) {
38 push(@seen,$_);
39 }
40 $last = $_;
41}
42$max = tell(Sudo);
43
a687059c 44open(tmp,'|sort >oldsudo.tmp') || die "Can't create tmp file: $!\n";
378cc40b 45while ($_ = pop(@seen)) {
46 print tmp $_;
47}
48close(tmp);
a687059c 49open(tmp,'oldsudo.tmp') || die "Can't reopen tmp file: $!\n";
378cc40b 50while (<tmp>) {
51 print $seen{$_},":\t",$_;
52}
53
54print `(rm -f oldsudo.tmp; echo $max > oldsudo) 2>&1`;