#!/usr/contrib/bin/perl -w # $Log: las,v $ # Revision 1.12 1996/09/12 14:13:43 tjchol01 # Olek protector added. # # Revision 1.11 1996/09/11 23:00:56 tjchol01 # Date and coredump corrected. # # Revision 1.10 1996/09/08 14:53:09 tjchol01 # Added day number to date. # # Revision 1.9 1996/07/07 18:11:55 tjchol01 # Added full paths for date and cut. # # Revision 1.8 1996/06/23 19:51:22 tjchol01 # Brian added. # # Revision 1.7 1996/06/12 03:00:33 tjchol01 # Timeout (some problems with hanging less?). # # Revision 1.6 1996/05/26 22:16:53 tjchol01 # Added group checking. # # Revision 1.5 1996/05/22 05:32:22 tjchol01 # Perl with parallel pipes. # # Revision 1.4 1996/05/22 04:28:57 tjchol01 # Before converting to Perl. # # Revision 1.3 1996/02/01 06:48:57 tjchol01 # Yesterday added. # # Revision 1.2 1996/02/01 02:58:10 tjchol01 # Super # # Revision 1.1 1996/02/01 02:40:55 tjchol01 # Initial revision use strict; no strict "refs"; #use Sys::AlarmCall; my $date = '/usr/contrib/bin/date'; my $cut = '/usr/contrib/bin/cut'; my $timeout = 60; my $group = "damon damill01 tjchol01 a0mali01 aglozo01 zjlata01 a0wise01 jmzura02 bprete01"; my @cluster = ("mecca", "talos", "starbase", "tycho", "vulcan", "rigel", "draconis", "sirius", "terra", "romulus", "orion"); my $id = $ENV{"USER"}; if (-t STDOUT && $ENV{"TERM"} ne "emacs") { open (OUT, "| less -ifMrse") or die "No less?: $!\n"; } else { open (OUT, ">&STDOUT"); } select (OUT); $| = 1; # make it unbuffered my $a; if ($#ARGV >= 0) { $a = "@ARGV"; } else { if (index ($group, $id) >= 0) { $a = $group; } else { $a = $id; } } if ($id =~ "a0mali01") { $a =~ s/tjchol01/xxxxxxxx/g; } my $ho; my $rege = "'" . $a . "'"; $rege =~ s/ /\|/g; foreach $ho (@cluster) { # print $ho; my $lastopt = ""; $lastopt = "-R" unless $ho eq "mecca"; open ($ho, "timed-run 20 $ho 'last $lastopt $a | head -n 250' |") or die "Can't open: $!\n"; # open ($ho, "/usr/bin/remsh $ho last -R $a |") or die "Can't open: $!\n"; } my $dat = `$date '+%b %_d'`; my $ydat = `$date -d 'yesterday' '+%b %_d'`; #print OUT $dat; #print OUT $ydat; chop $dat; chop $ydat; foreach $ho (@cluster) { my @l = <$ho>; # my @l = alarm_call ($timeout, 'read_arr', $ho); my @ll = (); # print OUT "====$ho\n"; foreach (@l) { # print OUT; if (/$rege/ && !/\{.*\(00:00\)|^\r$|wtmp begins/ && (/$dat|$ydat/ || /TIMEOUT/)) { push (@ll, $_); } } # print OUT "====\n"; if (@ll) { print OUT "$ho:\n"; print OUT reverse (@ll); print OUT "\n"; } } close (OUT); exit 0; #--------------------------------------------------------------- sub read_arr { my ($file) = @_; my @w = <$file>; close <$file>; return @w; }