#!/usr/bin/perl $w = `/usr/bin/w`; $f = `/usr/bin/last -50 |grep ftp |grep still`; $a = `/usr/local/sbin/apachectl status`; @lines = split(/\n/,$w); $lines[0]=~ /^\s+(.*)/; $uptimeline = $1; $junkline = $lines[1]; undef $lines[0]; undef $lines[1]; my %users; my %procs; my %ftps; foreach $line (@lines) { next if ($line =~ /^$/); @cols = split(/\s+/,$line); $user = $cols[0]; #user list: $users{$user}++; #user's procs: push(@{$procs{$user}}, $cols[5]); } @ftplines = split(/\n/,$f); foreach $line (@ftplines) { @cols = split(/\s+/,$line); $user = $cols[0]; $ftps{$user}++; } @apachelines = split(/\n/,$a); foreach $line (@apachelines) { if ($line =~ m/Server uptime/) { $line =~ /Server uptime: (\d+\s+\w+\s+\d+\s+\w+)/; $apacheuptime = $1; $apacheup++; } if ($line =~ m/Total accesses/) { $line =~ /Total accesses: \d+ - Total Traffic:\s+(.*)$/; $apachetraffic = $1; } } ### output ### print "$uptimeline\n"; while (($user,$logins) = each(%users)) { my $counter = 0; print "$user($logins): "; foreach $proc (@{$procs{$user}}) { if ($counter) { print ", "; } print "$proc"; $counter++; } print "\n"; } print "FTP Logins: "; my $counter = 0; while (($user,$logins) = each(%ftps)) { if ($counter) { print ", "; } print "$user"; $counter++; } print "\n"; if ($apacheup) { print "Apache: $apachetraffic $apacheuptime\n"; } else { print "Apache: Error!!!!\n"; }