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