#!/usr/bin/perl
# ICS 243d - Internet Technology
# Spring Quarter 2001
# Roberto Silveira Silva Filho ID# 85849631
# Administration data collector - Server side.
# Final project
#
# ----------------------------------------------------------
local $/=CRLF;
# Removes the white spaces before and after a string
sub alltrim {
$parameter = shift;
$parameter =~ s/^\s*//; # ltrim
$parameter =~ s/\s*$//; # rtrim
return $parameter
}
my @output;
$output = `/usr/bin/vmstat 1 5`; #Collects the information for 5 seconds
#print $output;
# Get the lines of the output in the array...
@outputArray = split("\n", $output);
#print @outputArray."\n";
my @properties; # Array containing the properties
print '
'."\n" ;
print " \n";
print ' Time | '."\n";
print ' Disk Swapp | '."\n";
print ' Disk Free | '."\n";
print ' CPU Idle | '."\n";
print "
\n";
my $i=0;
my @properties;
foreach $line (@outputArray) {
# substitute "is" followed by more than 2 spaces, by tab.
$outputArray[$i] =~ s/\s+/ /g; # replaces 1 or more spaces by 1 globally
@properties;
#print $outputArray[$i]."\n";
# does not consider the first 3 lines of the output
if ($i >2 ) {
@splittedArray = split(/ /,$outputArray[$i]);
#for ($j=0; $j<25; $j++) {
# print "\n $j: $splittedArray[$j] \n";
#}
$properties[$i-3,0]=$splittedArray[4]; #free page
$properties[$i-3,1]=$splittedArray[5]; #free disk
$properties[$i-3,2]=$splittedArray[22]; #cpu load
#print $properties[$i-3,0]."\n";
#print $properties[$i-3,1]."\n";
#print $properties[$i-3,2]."\n";
}
$i++;
}
$i=$i-3;
#print "i= $i \n";
my $j;
my $page;
my $disk;
my $load;
for ($j=0; $j<$i; $j++) {
#print $j."\n";
$page = $page + $properties[$j,0];
$disk = $disk + $properties[$j,1];
$load = $load + $properties[$j,2];
#print " page: $page" ;
#print " disk: $disk" ;
#print " load: $load" ;
}
#print "i= $i \n";
#print " ";
#print " $page | ";
#print " $disk | ";
#print " $load | ";
#print "
\n";
# Calculate the average...
$page = $page / $i;
$disk = $disk / $i;
$load = $load / $i;
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
print " ";
print " $hour:$min:$sec | ";
print " $page | ";
print " $disk | ";
print " $load | ";
print "
\n";
print "
\n";