#!/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 () { #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; } }