#!/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); # 2:27PM up 4 days, 22:01, 14 users, load averages: 0.00, 0.05, 0.07 if ($lines[0] =~ /days/) { $lines[0] =~ /up\s+(\w+\s+\w+,\s+\w+)/; $uptimeline = $1."hrs ("; } else { $lines[0] =~ /up\s+(\w+)/; } $lines[0]=~ /(\d+\.\d+),\s+(\d+\.\d+),\s+(\d+\.\d+)$/; $uptimeline .= "$1 $2 $3)"; $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"; my $counter = 0; print "Users: "; while (($user,$logins) = each(%users)) { if ($counter) { print ", "; } print "$user($logins)"; $counter++; } print "\n"; print "FTP: "; 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"; }