#!/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";
}



