freebsd_amp_hwpstate/contrib/perl5/eg/scan/scan_last

58 lines
1.3 KiB
Perl

#!/usr/bin/perl -P
# $RCSfile: scan_last,v $$Revision: 4.1 $$Date: 92/08/07 17:20:35 $
# 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;
}
}