|
Packit |
667938 |
#!/usr/bin/perl
|
|
Packit |
667938 |
#
|
|
Packit |
667938 |
# Author: Russ Wright, Lawrence Berkeley National Laboratory December 1997
|
|
Packit |
667938 |
# Local modifications by Wee-Meng Lee HP Singapore (colour/lynx)
|
|
Packit |
667938 |
# and Mark Mushkin HP Santa Clara (avg/max/min that suit our needs)
|
|
Packit |
667938 |
# Last Update on Oct 14, 1997
|
|
Packit |
667938 |
#
|
|
Packit |
667938 |
# This will look at the $trafficDir directory for MRTG generated HTML
|
|
Packit |
667938 |
# files, parse them and generate a listing of the most active interfaces
|
|
Packit |
667938 |
# in a file called "active.htlm" in the same directory
|
|
Packit |
667938 |
#
|
|
Packit |
667938 |
# modify this if you wish as long as the above credit is not removed
|
|
Packit |
667938 |
#
|
|
Packit |
667938 |
# The only weird thing I do is to skip tunnel interfaces (see code below)
|
|
Packit |
667938 |
|
|
Packit |
667938 |
#
|
|
Packit |
667938 |
# TWO VARIABLES YOU MUST CHANGE
|
|
Packit |
667938 |
#
|
|
Packit |
667938 |
$trafficDir="/usr/local/httpd/htdocs";
|
|
Packit |
667938 |
#
|
|
Packit |
667938 |
# I put it in a file and include it because I use it in other scripts
|
|
Packit |
667938 |
# if you don't - comment this out and uncomment the above line
|
|
Packit |
667938 |
#require "trafficdir.include";
|
|
Packit |
667938 |
|
|
Packit |
667938 |
# CHANGE THIS to your organization name
|
|
Packit |
667938 |
$orgName="HP Singapore - IT Site Infrastructure";
|
|
Packit |
667938 |
|
|
Packit |
667938 |
$outFile = "$trafficDir/active.html";
|
|
Packit |
667938 |
|
|
Packit |
667938 |
# The following may be changed and I admit that it isn't perfect how I decide
|
|
Packit |
667938 |
# to highlight stuff.
|
|
Packit |
667938 |
#
|
|
Packit |
667938 |
|
|
Packit |
667938 |
#values over this will be displayed in the specified color
|
|
Packit |
667938 |
# these are for the MAX values
|
|
Packit |
667938 |
$maxAMBER = 70;
|
|
Packit |
667938 |
$maxRED = 90;
|
|
Packit |
667938 |
# these are for the Average and Current values
|
|
Packit |
667938 |
$AMBER = 30;
|
|
Packit |
667938 |
$RED = 60;
|
|
Packit |
667938 |
|
|
Packit |
667938 |
#Defining the colors
|
|
Packit |
667938 |
$REDcolor="#ff0000";
|
|
Packit |
667938 |
$AMBERcolor="#ffff00";
|
|
Packit |
667938 |
$GREENcolor="#00ff00";
|
|
Packit |
667938 |
|
|
Packit |
667938 |
# Refresh interval (minutes) for HTML doc
|
|
Packit |
667938 |
$refreshInt=10;
|
|
Packit |
667938 |
#
|
|
Packit |
667938 |
$refreshSeconds=60*$refreshInt;
|
|
Packit |
667938 |
#
|
|
Packit |
667938 |
# Max % to look at (if the Max is lower then we do not include in the list)
|
|
Packit |
667938 |
#$maxThresh = 5;
|
|
Packit |
667938 |
$maxThresh = 0;
|
|
Packit |
667938 |
$theDate=`date +"%m/%d/%y %H:%M"`;
|
|
Packit |
667938 |
|
|
Packit |
667938 |
open(LS, "ls $trafficDir/*.[0-9]*.html|") || die "Couldn't list directory";
|
|
Packit |
667938 |
while (<LS>) {
|
|
Packit |
667938 |
chop;
|
|
Packit |
667938 |
$theFile = $_;
|
|
Packit |
667938 |
open(IN, "$theFile") || die "Couldn't open $theFile\n";
|
|
Packit |
667938 |
$i=0;
|
|
Packit |
667938 |
while (<IN>) {
|
|
Packit |
667938 |
if (/Traffic Analysis for .*[0-9] (.*)<\/H1> /) {
|
|
Packit |
667938 |
if ($1 =~ /tunnel/i) {
|
|
Packit |
667938 |
# skip tunnels
|
|
Packit |
667938 |
last;
|
|
Packit |
667938 |
}
|
|
Packit |
667938 |
$desc{$theFile} = $1;
|
|
Packit |
667938 |
}
|
|
Packit |
667938 |
if (/\(([0-9.]*\%)\)/) {
|
|
Packit |
667938 |
$theList{$theFile}[$i++] = $1;
|
|
Packit |
667938 |
}
|
|
Packit |
667938 |
}
|
|
Packit |
667938 |
close(IN);
|
|
Packit |
667938 |
}
|
|
Packit |
667938 |
close(LS);
|
|
Packit |
667938 |
|
|
Packit |
667938 |
#
|
|
Packit |
667938 |
#
|
|
Packit |
667938 |
# the array contains all the percentages: the following 6 for
|
|
Packit |
667938 |
# daily, weekly, monthly, yearly
|
|
Packit |
667938 |
#
|
|
Packit |
667938 |
# 0 Max In
|
|
Packit |
667938 |
# 1 Avg In
|
|
Packit |
667938 |
# 2 Cur In
|
|
Packit |
667938 |
# 3 Max Out
|
|
Packit |
667938 |
# 4 Avg Out
|
|
Packit |
667938 |
# 5 Cur Out
|
|
Packit |
667938 |
#
|
|
Packit |
667938 |
#
|
|
Packit |
667938 |
|
|
Packit |
667938 |
open(OUT, ">$outFile") || die "Couldn't create $outFile";
|
|
Packit |
667938 |
&PrintHead;
|
|
Packit |
667938 |
|
|
Packit |
667938 |
foreach $key (keys %theList) {
|
|
Packit |
667938 |
# get sum of both max in and out
|
|
Packit |
667938 |
# $sumInOut = $theList{$key}[0] + $theList{$key}[4]; # use for max
|
|
Packit |
667938 |
$sumInOut = $theList{$key}[1] + $theList{$key}[4]; # use for avg
|
|
Packit |
667938 |
if ( ($sumInOut > $maxThresh) ||
|
|
Packit |
667938 |
($curIn > $highlightThresh) ||
|
|
Packit |
667938 |
($curOut > $highlightThresh) ||
|
|
Packit |
667938 |
($avgIn > $highlightThresh) ||
|
|
Packit |
667938 |
($avgOut > $highlightThresh) ) {
|
|
Packit |
667938 |
$printList{$key} = $sumInOut;
|
|
Packit |
667938 |
}
|
|
Packit |
667938 |
}
|
|
Packit |
667938 |
|
|
Packit |
667938 |
|
|
Packit |
667938 |
foreach $key (sort by_percent (keys %printList)) {
|
|
Packit |
667938 |
$theRouter = $key;
|
|
Packit |
667938 |
$theRouter =~ s/.*\///;
|
|
Packit |
667938 |
$theRouter =~ s/\.html//;
|
|
Packit |
667938 |
$theFile = $key;
|
|
Packit |
667938 |
$theFile =~ s/.*traffic\///;
|
|
Packit |
667938 |
$maxIn= $theList{$key}[0];
|
|
Packit |
667938 |
$avgIn= $theList{$key}[1];
|
|
Packit |
667938 |
$curIn= $theList{$key}[2];
|
|
Packit |
667938 |
$maxOut= $theList{$key}[3];
|
|
Packit |
667938 |
$avgOut= $theList{$key}[4];
|
|
Packit |
667938 |
$curOut= $theList{$key}[5];
|
|
Packit |
667938 |
|
|
Packit |
667938 |
printf(OUT "");
|
|
Packit |
667938 |
|
|
Packit |
667938 |
if ($maxIn > $maxRED) {
|
|
Packit |
667938 |
printf(OUT "<CENTER>$maxIn</CENTER>");
|
|
Packit |
667938 |
} elsif ($maxIn > $maxAMBER) {
|
|
Packit |
667938 |
printf(OUT "<CENTER>$maxIn</CENTER>");
|
|
Packit |
667938 |
} else {
|
|
Packit |
667938 |
printf(OUT "<CENTER>$maxIn</CENTER>");
|
|
Packit |
667938 |
}
|
|
Packit |
667938 |
printf(OUT " ");
|
|
Packit |
667938 |
|
|
Packit |
667938 |
if ($maxOut > $maxRED) {
|
|
Packit |
667938 |
printf(OUT "<CENTER>$maxOut</CENTER>");
|
|
Packit |
667938 |
} elsif ($maxOut > $maxAMBER) {
|
|
Packit |
667938 |
printf(OUT "<CENTER>$maxOut</CENTER>");
|
|
Packit |
667938 |
} else {
|
|
Packit |
667938 |
printf(OUT "<CENTER>$maxOut</CENTER>");
|
|
Packit |
667938 |
}
|
|
Packit |
667938 |
printf(OUT " ");
|
|
Packit |
667938 |
|
|
Packit |
667938 |
if ($avgIn > $RED) {
|
|
Packit |
667938 |
printf(OUT "<CENTER>$avgIn</CENTER>");
|
|
Packit |
667938 |
} elsif ($avgIn > $AMBER) {
|
|
Packit |
667938 |
printf(OUT "<CENTER>$avgIn</CENTER>");
|
|
Packit |
667938 |
} else {
|
|
Packit |
667938 |
printf(OUT "<CENTER>$avgIn</CENTER>");
|
|
Packit |
667938 |
}
|
|
Packit |
667938 |
printf(OUT " ");
|
|
Packit |
667938 |
|
|
Packit |
667938 |
if ($avgOut > $RED) {
|
|
Packit |
667938 |
printf(OUT "<CENTER>$avgOut</CENTER>");
|
|
Packit |
667938 |
} elsif ($avgOut > $AMBER) {
|
|
Packit |
667938 |
printf(OUT "<CENTER>$avgOut</CENTER>");
|
|
Packit |
667938 |
} else {
|
|
Packit |
667938 |
printf(OUT "<CENTER>$avgOut</CENTER>");
|
|
Packit |
667938 |
}
|
|
Packit |
667938 |
printf(OUT " ");
|
|
Packit |
667938 |
|
|
Packit |
667938 |
if ($curIn > $RED) {
|
|
Packit |
667938 |
printf(OUT "<CENTER>$curIn</CENTER>");
|
|
Packit |
667938 |
} elsif ($curIn > $AMBER) {
|
|
Packit |
667938 |
printf(OUT "<CENTER>$curIn</CENTER>");
|
|
Packit |
667938 |
} else {
|
|
Packit |
667938 |
printf(OUT "<CENTER>$curIn</CENTER>");
|
|
Packit |
667938 |
}
|
|
Packit |
667938 |
printf(OUT " ");
|
|
Packit |
667938 |
|
|
Packit |
667938 |
if ($curOut > $RED) {
|
|
Packit |
667938 |
printf(OUT "<CENTER>$curOut</CENTER>");
|
|
Packit |
667938 |
} elsif ($curOut > $AMBER) {
|
|
Packit |
667938 |
printf(OUT "<CENTER>$curOut</CENTER>");
|
|
Packit |
667938 |
} else {
|
|
Packit |
667938 |
printf(OUT "<CENTER>$curOut</CENTER>");
|
|
Packit |
667938 |
}
|
|
Packit |
667938 |
printf(OUT " ");
|
|
Packit |
667938 |
|
|
Packit |
667938 |
printf(OUT "$theRouter\n");
|
|
Packit |
667938 |
|
|
Packit |
667938 |
}
|
|
Packit |
667938 |
|
|
Packit |
667938 |
&PrintTail;
|
|
Packit |
667938 |
close(OUT);
|
|
Packit |
667938 |
|
|
Packit |
667938 |
sub by_percent {
|
|
Packit |
667938 |
$printList{$b} <=> $printList{$a};
|
|
Packit |
667938 |
}
|
|
Packit |
667938 |
|
|
Packit |
667938 |
sub PrintTail
|
|
Packit |
667938 |
{
|
|
Packit |
667938 |
print OUT <
|
|
Packit |
667938 |
|
|
Packit |
667938 |
</BODY>
|
|
Packit |
667938 |
</HTML>
|
|
Packit |
667938 |
EOF
|
|
Packit |
667938 |
}
|
|
Packit |
667938 |
|
|
Packit |
667938 |
sub PrintHead
|
|
Packit |
667938 |
{
|
|
Packit |
667938 |
$expTime=&expistr;
|
|
Packit |
667938 |
|
|
Packit |
667938 |
print OUT <
|
|
Packit |
667938 |
<HTML>
|
|
Packit |
667938 |
<HEAD>
|
|
Packit |
667938 |
<TITLE>$orgName Most Active Interface</TITLE>
|
|
Packit |
667938 |
</HEAD>
|
|
Packit |
667938 |
<META HTTP-EQUIV="Expires" CONTENT="$expTime">
|
|
Packit |
667938 |
<META HTTP-EQUIV="Refresh" CONTENT=$refreshSeconds>
|
|
Packit |
667938 |
<BODY bgcolor=#ffffff>
|
|
Packit |
667938 |
Most Active Interfaces as of $theDate
|
|
Packit |
667938 |
The following are sorted by the sum of the daily average input
|
|
Packit |
667938 |
and daily average output (In Avg% + Out Avg%) interface octets.
|
|
Packit |
667938 |
This table is updated every $refreshInt minutes and will automatically
|
|
Packit |
667938 |
be updated if you are using Netscape.
|
|
Packit |
667938 |
|
|
Packit |
667938 |
Value ranges:
|
|
Packit |
667938 |
MAX Values are: <FONT COLOR="#ff0000">RED if \> $maxRED </font>, and
|
|
Packit |
667938 |
YELLOW if \> $maxAMBER </font>
|
|
Packit |
667938 |
|
|
Packit |
667938 |
Average & Current Values are: <FONT COLOR="#ff0000">RED if \> $RED </font>, and YELLOW if \> $AMBER </font>
|
|
Packit |
667938 |
|
|
Packit |
667938 |
|
|
Packit |
667938 |
|
|
Packit |
667938 |
In Max %
|
|
Packit |
667938 |
Out Max %
|
|
Packit |
667938 |
In Avg %
|
|
Packit |
667938 |
Out Avg %
|
|
Packit |
667938 |
In Current %
|
|
Packit |
667938 |
Out Current %
|
|
Packit |
667938 |
Interface
|
|
Packit |
667938 |
|
|
Packit |
667938 |
EOF
|
|
Packit |
667938 |
}
|
|
Packit |
667938 |
|
|
Packit |
667938 |
sub expistr {
|
|
Packit |
667938 |
my ($time) = time+$refreshInt*60+5;
|
|
Packit |
667938 |
my ($wday) = ('Sun','Mon','Tue','Wed','Thu','Fri','Sat')[(gmtime($time))[6]];
|
|
Packit |
667938 |
my ($month) = ('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep',
|
|
Packit |
667938 |
'Oct','Nov','Dec')[(gmtime($time))[4]];
|
|
Packit |
667938 |
my ($mday,$year,$hour,$min,$sec) = (gmtime($time))[3,5,2,1,0];
|
|
Packit |
667938 |
if ($mday<10) {$mday = "0$mday"};
|
|
Packit |
667938 |
if ($hour<10) {$hour = "0$hour"};
|
|
Packit |
667938 |
if ($min<10) {$min = "0$min";}
|
|
Packit |
667938 |
if ($sec<10) {$sec = "0$sec";}
|
|
Packit |
667938 |
return "$wday, $mday $month ".($year+1900)." $hour:$min:$sec GMT";
|
|
Packit |
667938 |
}
|