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