1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
#!/usr/bin/perl -P
# $Header: scan_last,v 4.0 91/03/20 01:12:45 lwall Locked $
# This reports who was logged on at weird hours
($dy, $mo, $lastdt) = split(/ +/,`date`);
open(Last, 'exec last 2>&1 |') || die "scan_last: can't run last";
while (<Last>) {
#if defined(mc300) || defined(mc500) || defined(mc700)
$_ = substr($_,0,19) . substr($_,23,100);
#endif
next if /^$/;
(print),next if m|^/|;
$login = substr($_,0,8);
$tty = substr($_,10,7);
$from = substr($_,19,15);
$day = substr($_,36,3);
$mo = substr($_,40,3);
$dt = substr($_,44,2);
$hr = substr($_,47,2);
$min = substr($_,50,2);
$dash = substr($_,53,1);
$tohr = substr($_,55,2);
$tomin = substr($_,58,2);
$durhr = substr($_,63,2);
$durmin = substr($_,66,2);
next unless $hr;
next if $login eq 'reboot ';
next if $login eq 'shutdown';
if ($dt != $lastdt) {
if ($lastdt < $dt) {
$seen += $dt - $lastdt;
}
else {
$seen++;
}
$lastdt = $dt;
}
$inat = $hr + $min / 60;
if ($tohr =~ /^[a-z]/) {
$outat = 12; # something innocuous
} else {
$outat = $tohr + $tomin / 60;
}
last if $seen + ($inat < 8) > 1;
if ($inat < 5 || $inat > 21 || $outat < 6 || $outat > 23) {
print;
}
}
|