⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mrtg

📁 主要用于监控网络流量并动态产生可视化结果
💻
📖 第 1 页 / 共 5 页
字号:
	if(($main::OS != 'UNIX') || ($signal != 127))	{	my $exitval = $? >> 8;	warn "\nPROBLEM: rateup died from Signal $signal\n".	" with Exit Value $exitval when doing router '$router'\n".	" code was $value, retcode was $!.".	" If this happens all the time,\n".	" you should probably investigate the cause. :-)\n\n";  }    }  if( $$cfg{'writeexpires'} =~ /^y/i ) {    my($fil,$exp);    while( $fil = shift(@metas) ) {      $exp = &expistr(shift(@metas));      open(META, ">$fil.meta");      print META "Expires: $exp\n";      close(META);    }  }  if ($$rcfg{'options'}{'dorelpercent'}{$router}) {    (\%maxin, \%maxout, \%maxpercent, \%avin, \%avout, \%avpercent, \%cuin, \%cuout, \%cupercent);  }  else {    (\%maxin, \%maxout, \%avin, \%avout, \%cuin, \%cuout);  }}#format 10*$kilo to 10 kB/ssub fmi {  my($number, $maxbytes, $router, @foo) = @_;  my($rcfg,$LOC)=@foo;  my(@short,$mul);  if ($$rcfg{'kmg'}{$router}) {    my($i);    if ($$rcfg{'options'}{'bits'}{$router} == 1) {      @short = ();      foreach $i (split(/,/, $$rcfg{'kmg'}{$router})) {         if ($$rcfg{'options'}{'perminute'}{$router}) {           $short[$#short+1] = "$i".&$LOC("b/min");         } elsif ($$rcfg{'options'}{'perhour'}{$router}) {           $short[$#short+1] = "$i".&$LOC("b/h");         } else {           $short[$#short+1] = "$i".&$LOC("b/s");         }      }      $mul= 8;    } else {      @short = ();      foreach $i (split(/,/, $$rcfg{'kmg'}{$router})) {         if ($$rcfg{'options'}{'perminute'}{$router}) {           $short[$#short+1] = "$i".&$LOC ("B/min");         } elsif ($$rcfg{'options'}{'perhour'}{$router}) {           $short[$#short+1] = "$i".&$LOC("B/h");         } else {           $short[$#short+1] = "$i".&$LOC("B/s");         }      }      $mul= 1;    }    if (exists($$rcfg{'shortlegend'}{$router})) {      @short = ();      foreach $i (split(/,/, $$rcfg{'kmg'}{$router})) {         $short[$#short+1] = "$i"."$$rcfg{'shortlegend'}{$router}";      }    }  } else {    if ($$rcfg{'options'}{'bits'}{$router} == 1) {      if ($$rcfg{'options'}{'perminute'}{$router}) {        @short = (&$LOC("b/min"),&$LOC("kb/min"),&$LOC("Mb/min"),&$LOC("Gb/min"));      } elsif ($$rcfg{'options'}{'perhour'}{$router}) {        @short = (&$LOC("b/h"),&$LOC("kb/h"),&$LOC("Mb/h"),&$LOC("Gb/h"));      } else {        @short = (&$LOC("b/s"),&$LOC("kb/s"),&$LOC("Mb/s"),&$LOC("Gb/s"));      }      $mul= 8;    } else {      if ($$rcfg{'options'}{'perminute'}{$router}) {        @short = (&$LOC("B/min"),&$LOC("kB/min"),&$LOC("MB/min"),&$LOC("GB/min"));      } elsif ($$rcfg{'options'}{'perhour'}{$router}) {        @short = (&$LOC("B/h"),&$LOC("kB/h"),&$LOC("MB/h"),&$LOC("GB/h"));      } else {        @short = (&$LOC("B/s"),&$LOC("kB/s"),&$LOC("MB/s"),&$LOC("GB/s"));      }      $mul= 1;    }    if ($$rcfg{'shortlegend'}{$router}) {	@short = ("$$rcfg{'shortlegend'}{$router}",		  "k$$rcfg{'shortlegend'}{$router}",		  "M$$rcfg{'shortlegend'}{$router}",		  "G$$rcfg{'shortlegend'}{$router}");    }  }  my $digits=length("".$number*$mul);  my $divm=0;##  while ($digits-$divm*3 > 4) { $divm++; }#  my $divnum = $number*$mul/10**($divm*3);  my $divnum=$number*$mul;#  while ($divnum/$$rcfg{'kilo'}{$router} >= 10*$$rcfg{'kilo'}{$router} && $divnum<$#short) {  while ($divnum >= 10*$$rcfg{'kilo'}{$router} && $divm<$#short) {     $divm++;     $divnum /= $$rcfg{'kilo'}{$router};  }  my $perc;  if ($number == 0 || $maxbytes == 0) {    $perc = 0;  } else {    $perc = 100/$maxbytes*$number;  }  if ($$rcfg{'options'}{'integer'}{$router} == 1) {    if ($$rcfg{'options'}{'nopercent'}{$router}) {      return sprintf("%0.f ",$number*$mul);    } else {      return sprintf("%0.f (%2.1f%%)",$number*$mul,$perc);    }  } else {    if ($$rcfg{'options'}{'nopercent'}{$router}) {      return sprintf("%1.1f %s",$divnum,$short[$divm]);  # Added: FvW    } else {      return sprintf("%1.1f %s (%2.1f%%)",$divnum,$short[$divm],$perc);    }   return sprintf("%1.1f %s (%2.1f%%)",$divnum,$short[$divm],$perc);  }}sub datestr {  my ($time) = shift(@_) || return 0;  my ($wday) = ('Sunday','Monday','Tuesday','Wednesday',		'Thursday','Friday','Saturday')[(localtime($time))[6]];  my ($month) = ('January','February' ,'March' ,'April' ,		 'May' , 'June' , 'July' , 'August' , 'September' , 		 'October' ,		 'November' , 'December' )[(localtime($time))[4]];  my ($mday,$year,$hour,$min) = (localtime($time))[3,5,2,1];  if ($min<10) {$min = "0$min";}  return "$wday, $mday $month ".($year+1900)." at $hour:$min";}sub expistr {  my ($time) = time+$_[0]*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";}sub writehtml {  my($router, $cfg, $rcfg, $maxin, $maxout, $maxpercent,     $avin, $avout, $avpercent, $cuin, $cuout, $cupercent, $uptime, $name, $LOC) = @_;    my($VERSION,$Today,$peri);    my($persec);  if ($$rcfg{'options'}{'bits'}{$router} == 1) {     $persec = &$LOC("Bits");  } else {     $persec = &$LOC("Bytes");  }#  Work out the Colour legend  my($leg1, $leg2, $leg3, $leg4, $leg5);  if ($$rcfg{'legend1'}{$router}) {	$leg1 = $$rcfg{'legend1'}{$router};  } else {	$leg1 = &$LOC("Incoming Traffic in $persec per Second");  }  if ($$rcfg{'legend2'}{$router}) {	$leg2 = $$rcfg{'legend2'}{$router};  } else {	$leg2 = &$LOC("Outgoing Traffic in $persec per Second");  }  if ($$rcfg{'legend3'}{$router}) {	$leg3 = $$rcfg{'legend3'}{$router};  } else {	$leg3 = &$LOC("Maximal 5 Minute Incoming Traffic");  }  if ($$rcfg{'legend4'}{$router}) {	$leg4 = $$rcfg{'legend4'}{$router};  } else {	$leg4 = &$LOC("Maximal 5 Minute Outgoing Traffic");  }  if ($$rcfg{'legend5'}{$router}) {	$leg5 = $$rcfg{'legend5'}{$router};  } else {	$leg5 = "(($leg1)/($leg2))*100";  }# Translate the color names$$rcfg{'col1'}{$router}=&$LOC($$rcfg{'col1'}{$router});$$rcfg{'col2'}{$router}=&$LOC($$rcfg{'col2'}{$router});$$rcfg{'col3'}{$router}=&$LOC($$rcfg{'col3'}{$router});$$rcfg{'col4'}{$router}=&$LOC($$rcfg{'col4'}{$router});$$rcfg{'col5'}{$router}=&$LOC($$rcfg{'col5'}{$router});  $Today=&$LOC(datestr(time));  $VERSION = "2.8.12";  open (HTML,">$$cfg{'workdir'}${main::SL}$$rcfg{'directory'}{$router}$router.html") ||     warn ("\nCan not write $router.html");  print HTML '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">' . "\n";  print HTML "<HTML>\n";  my $interval =$$cfg{'interval'} ? $$cfg{'interval'} : 5;  my $expiration = &expistr($interval);  my $refresh =  $$cfg{'refresh'} ? $$cfg{'refresh'} : 300;  my $namestring = &$LOC("the device");    print HTML <<"TEXT";    <HEAD><TITLE>$$rcfg{'title'}{$router}</TITLE><META HTTP-EQUIV="Refresh" CONTENT="$refresh"><META HTTP-EQUIV="Pragma" CONTENT="no-cache"><META HTTP-EQUIV="Expires" CONTENT="$expiration">TEXT  print HTML '<META HTTP-EQUIV="Content-Type" CONTENT="text/html; '.&$LOC('charset=iso-8859-1')."\">\n";  foreach $peri (qw(d w m y)) {    print HTML <<"TEXT";<!-- maxin $peri $$maxin{$peri}{$router} --><!-- maxout $peri $$maxout{$peri}{$router} -->TEXTif ($$rcfg{'options'}{'dorelpercent'}{$router}) {    print HTML <<"TEXT";<!-- maxpercent $peri $$maxpercent{$peri}{$router} -->TEXT}    print HTML <<"TEXT";<!-- avin $peri $$avin{$peri}{$router} --><!-- avout $peri $$avout{$peri}{$router} -->TEXTif ($$rcfg{'options'}{'dorelpercent'}{$router}) {    print HTML <<"TEXT";<!-- avpercent $peri $$avpercent{$peri}{$router} -->TEXT}    print HTML <<"TEXT";<!-- cuin $peri $$cuin{$peri}{$router} --><!-- cuout $peri $$cuout{$peri}{$router} -->TEXTif ($$rcfg{'options'}{'dorelpercent'}{$router}) {    print HTML <<"TEXT";<!-- cupercent $peri $$cupercent{$peri}{$router} -->TEXT}  }  if ($name ne '') {$namestring = "<B>'$name'</B>"};  # allow for \n in addhead  $$rcfg{addhead}{$router} =~ s/\\n/\n/g;print HTML <<"TEXT";    $$rcfg{'addhead'}{$router}</HEAD><BODY $$rcfg{'backgc'}{$router}>$$rcfg{'pagetop'}{$router}<BR><HR>TEXTprint HTML     &$LOC("The statistics were last updated <B>$Today $$rcfg{'timezone'}{$router}</B>");if ($uptime && ! $$rcfg{options}{noinfo}{$router}) {print HTML",<BR>".&$LOC("at which time $namestring had been up for <B>$uptime</B>.")."";  }  my %sample= ('d' => "`Daily' Graph (".$interval.' Minute',	       'w' => "`Weekly' Graph (30 Minute",	       'm' => "`Monthly' Graph (2 Hour",	       'y' => "`Yearly' Graph (1 Day");    my %full = ('d' => 'day',	      'w' => 'week',	      'm' => 'month',	      'y' => 'year');    my $InCo;  if (exists $$rcfg{'legendi'}{$router}) {    if ($$rcfg{'legendi'}{$router} ne "") {      $InCo="<FONT COLOR=\"$$rcfg{'rgb1'}{$router}\">".	"$$rcfg{'legendi'}{$router}</FONT>" }  } else {    $InCo="<FONT COLOR=\"$$rcfg{'rgb1'}{$router}\">".      &$LOC("&nbsp;In:</FONT>") }  my $OutCo;  if (exists $$rcfg{'legendo'}{$router}) {    if ($$rcfg{'legendo'}{$router} ne "") {      $OutCo="<FONT COLOR=\"$$rcfg{'rgb2'}{$router}\">".	"$$rcfg{'legendo'}{$router}</FONT>" }  } else {    $OutCo="<FONT COLOR=\"$$rcfg{'rgb2'}{$router}\">".      &$LOC("&nbsp;Out:</FONT>") }  my $PercentCo;  if (exists $$rcfg{'legend5'}{$router}) {    if ($$rcfg{'legend5'}{$router} ne "") {      $PercentCo="<FONT COLOR=\"$$rcfg{'rgb5'}{$router}\">".	"$$rcfg{'legend5'}{$router}</FONT>" }  } else {    $PercentCo="<FONT COLOR=\"$$rcfg{'rgb5'}{$router}\">".      &$LOC("&nbsp;Percentage</FONT>") }    foreach $peri (qw(d w m y)){    next if $$rcfg{'suppress'}{$router} =~/$peri/;    my $gifw;    if ($$rcfg{'options'}{'dorelpercent'}{$router}) {       $gifw=sprintf("%.0f",($$rcfg{'xsize'}{$router}*$$rcfg{'xscale'}{$router}+		+100+30) *$$rcfg{'xzoom'}{$router});    }    else {      $gifw=sprintf("%.0f",($$rcfg{'xsize'}{$router}*$$rcfg{'xscale'}{$router}		+100) *$$rcfg{'xzoom'}{$router});    }    my $gifh=sprintf("%.0f",($$rcfg{'ysize'}{$router}*$$rcfg{'yscale'}{$router}+35)		 *$$rcfg{'yzoom'}{$router});		       print HTML "<HR>".&$LOC("<B>$sample{$peri}").&$LOC(" Average)</B><BR>")."<IMG VSPACE=10 WIDTH=$gifw HEIGHT=$gifh ALIGN=TOP      SRC=\"$router-$full{$peri}.gif\" ALT=\"$full{$peri}\"> <TABLE CELLPADDING=0 CELLSPACING=0>";    my(@foo)=($rcfg,$LOC);    print HTML "<TR>  ".&$LOC("<TD ALIGN=right><SMALL>Max $InCo</SMALL></TD>")."  <TD ALIGN=right><SMALL>".&fmi($$maxin{$peri}{$router}, $$rcfg{'maxbytes1'}{$router}, $router, @foo)."   </SMALL></TD>  <TD WIDTH=5></TD>  ".&$LOC("<TD ALIGN=right><SMALL>Average $InCo</SMALL></TD>")."  <TD ALIGN=right><SMALL>".&fmi($$avin{$peri}{$router}, $$rcfg{'maxbytes1'}{$router}, $router, @foo)."  </SMALL></TD>  <TD WIDTH=5></TD>  ".&$LOC("<TD ALIGN=right><SMALL>Current $InCo</SMALL></TD>")."  <TD ALIGN=right><SMALL>".&fmi($$cuin{$peri}{$router}, $$rcfg{'maxbytes1'}{$router}, $router, @foo)."  </SMALL></TD> </TR>" if $InCo;print HTML " <TR>  ".&$LOC("<TD ALIGN=right><SMALL>Max $OutCo</SMALL></TD>")."  <TD ALIGN=right><SMALL>".&fmi($$maxout{$peri}{$router}, $$rcfg{'maxbytes2'}{$router}, $router, @foo)."  </SMALL></TD>  <TD WIDTH=5></TD>  ".&$LOC("<TD ALIGN=right><SMALL>Average $OutCo</SMALL></TD>")."  <TD ALIGN=right><SMALL>".&fmi($$avout{$peri}{$router}, $$rcfg{'maxbytes2'}{$router}, $router, @foo)."  </SMALL></TD>  <TD WIDTH=5></TD>  ".&$LOC("<TD ALIGN=right><SMALL>Current $OutCo</SMALL></TD>")."  <TD ALIGN=right><SMALL>".&fmi($$cuout{$peri}{$router}, $$rcfg{'maxbytes2'}{$router}, $router, @foo)." </SMALL></TD> </TR> " if $OutCo;print HTML " <TR>  ".&$LOC("<TD ALIGN=right><SMALL>Max $PercentCo</SMALL></TD>")."  <TD ALIGN=right><SMALL>".sprintf("%0.1f %%",$$maxpercent{$peri}{$router})."  </SMALL></TD>  <TD WIDTH=5></TD>  ".&$LOC("<TD ALIGN=right><SMALL>Average $PercentCo</SMALL></TD>")."  <TD ALIGN=right><SMALL>".sprintf("%0.1f %%",$$avpercent{$peri}{$router})."  </SMALL></TD>  <TD WIDTH=5></TD>  ".&$LOC("<TD ALIGN=right><SMALL>Current $PercentCo</SMALL></TD>")."  <TD ALIGN=right><SMALL>".sprintf("%0.1f %%",$$cupercent{$peri}{$router})." </SMALL></TD> </TR> " if ($$rcfg{'options'}{'dorelpercent'}{$router} && $PercentCo);    print HTML "</TABLE>\n";  }  print HTML "  <HR><BR>  <TABLE WIDTH=500 BORDER=0 CELLPADDING=4 CELLSPACING=0>";  print HTML "   <TR><TD ALIGN=RIGHT><FONT SIZE=-1 COLOR=\"$$rcfg{'rgb1'}{$router}\">      <B>$$rcfg{'col1'}{$router} ###</B></FONT></TD>      <TD><FONT SIZE=-1>$leg1</FONT></TD></TR> " if $InCo;  print HTML "   <TR><TD ALIGN=RIGHT><FONT SIZE=-1 COLOR=\"$$rcfg{'rgb2'}{$router}\">      <B>$$rcfg{'col2'}{$router} ###</B></FONT></TD>      <TD><FONT SIZE=-1>$leg2</FONT></TD></TR> " if $OutCo;    if ($$rcfg{'withpeak'}{$router}) {    print HTML "   <TR><TD ALIGN=RIGHT><FONT SIZE=-1 COLOR=\"$$rcfg{'rgb3'}{$router}\">			<B>$$rcfg{'col3'}{$router}###</B></FONT></TD>       <TD><FONT SIZE=-1>$leg3</FONT></TD></TR> " if $InCo;  print HTML "   <TR><TD ALIGN=RIGHT><FONT SIZE=-1 COLOR=\"$$rcfg{'rgb4'}{$router}\">			<B>$$rcfg{'col4'}{$router}###</B></FONT></TD>       <TD><FONT SIZE=-1>$leg4</FONT></TD></TR> "if $OutCo;     }  if ($$rcfg{'options'}{'dorelpercent'}{$router}) {    print HTML "   <TR><TD ALIGN=RIGHT><FONT SIZE=-1 COLOR=\"$$rcfg{'rgb5'}{$router}\">			<B>$$rcfg{'col5'}{$router}###</B></FONT></TD>       <TD><FONT SIZE=-1>$leg5</FONT></TD></TR> ";     }#	warn ("\nINFO: \$router = $router\n\#	 $$rcfg{'col1'}{$router}, $$rcfg{'rgb1'}{$router},\n\#	 $$rcfg{'col2'}{$router}, $$rcfg{'rgb2'}{$router},\n\

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -