Date: Thu, 14 Dec 2006 16:26:23 +0100 (CET) From: Xavier Beaudouin <kiwi@oav.net> To: FreeBSD-gnats-submit@FreeBSD.org Subject: ports/106720: [NEW PORT] net-mgmt/routers2-extras: Extra extensions and scripts for routers2 frontend Message-ID: <20061214152624.14D642E218@proxy.home.oav.net> Resent-Message-ID: <200612141530.kBEFU8Rh094572@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 106720 >Category: ports >Synopsis: [NEW PORT] net-mgmt/routers2-extras: Extra extensions and scripts for routers2 frontend >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-ports-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: change-request >Submitter-Id: current-users >Arrival-Date: Thu Dec 14 15:30:07 GMT 2006 >Closed-Date: >Last-Modified: >Originator: Xavier Beaudouin >Release: FreeBSD 6.2-PRERELEASE i386 >Organization: Association KAZAR / The Caudium Group >Environment: System: FreeBSD proxy.home.oav.net 6.2-PRERELEASE FreeBSD 6.2-PRERELEASE #0: Tue Nov 7 22:12:43 CET >Description: Extras extensions and third party scripts for routers2 frontend WWW: http://www.steveshipway.org/software/ Generated with FreeBSD Port Tools 0.77 >How-To-Repeat: >Fix: --- routers2-extras-2.17.shar begins here --- # This is a shell archive. Save it in a file, remove anything before # this line, and then unpack it by entering "sh file". Note, it may # create directories; files and directories will be owned by you and # have default permissions. # # This archive contains: # # routers2-extras # routers2-extras/files # routers2-extras/files/patch-buildwan.pl # routers2-extras/files/patch-cfgmaker_host.pl # routers2-extras/files/patch-95.pl # routers2-extras/Makefile # routers2-extras/distinfo # routers2-extras/pkg-descr # routers2-extras/pkg-plist # echo c - routers2-extras mkdir -p routers2-extras > /dev/null 2>&1 echo c - routers2-extras/files mkdir -p routers2-extras/files > /dev/null 2>&1 echo x - routers2-extras/files/patch-buildwan.pl sed 's/^X//' >routers2-extras/files/patch-buildwan.pl << 'END-of-routers2-extras/files/patch-buildwan.pl' X--- buildwan.pl.orig Fri Jun 16 00:17:53 2006 X+++ buildwan.pl Thu Dec 14 15:41:08 2006 X@@ -1,4 +1,4 @@ X-#!/usr/bin/perl X+#!%%PERL%% X # X # Try to build configuration files for all the routers in the WAN, X # by recursively scanning them. Can take a long time to run! X@@ -16,7 +16,7 @@ X use strict; X use Net::SNMP; X use FileHandle; X-use vars qw($opt_L $opt_h $opt_s $opt_c $opt_D $opt_w $opt_N $opt_A); X+use vars qw($opt_L $opt_h $opt_s $opt_c $opt_D $opt_w $opt_N $opt_A $opt_p); X use Getopt::Std; X X my( $conffile, %config,@cfgfiles, $pathsep ); X@@ -32,7 +32,12 @@ X my($IPIFINDEX) = "1.3.6.1.2.1.4.20.1.2"; X my($IPROUTEGW) = "1.3.6.1.2.1.4.21.1.7"; X my($CPUOID) = "1.3.6.1.4.1.9.2.1.58.0"; X+my($FNDRYCPUOID) = "1.3.6.1.4.1.1991.1.1.2.1.35.0"; X my($MEMOID) = "1.3.6.1.4.1.9.9.48.1.1.1.5.1"; # have to find out X+my($FNDRYMEMOID) = "1.3.6.1.4.1.1991.1.1.2.1.55.0"; X+my($FNDRYMAXMEMOID) = "1.3.6.1.4.1.1991.1.1.2.1.54.0"; X+my($FNDRYBGPOID) = "1.3.6.1.4.1.1991.1.2.11.1.27.0"; X+my($FNDRYTEMPOID) = "1.3.6.1.4.1.1991.1.1.1.1.18.0"; X # Cisco 7200 Series Temperature X my($CISCOTEMP) = "1.3.6.1.4.1.9.9.13.1.3.1"; X X@@ -47,7 +52,8 @@ X my( $domain ) = "...\.adsw\.com"; X my( @community ) = ( "public" ); X my( $community ); X-my( $workdir ) = "/var/rrdtool/auto"; X+my( $workdir ) = "/var/db/rrdtool"; X+my( $pathadd ) = "/usr/local/bin"; X my( @queue ) = ( ); X my( $subdir ) = ""; X my( @filelist ) = (); X@@ -80,8 +86,9 @@ X { X my($snmp, $resp, $snmperr, $k); X my($n,$v,$ip); X- my($cpuok,$memok) ; X+ my($cpuok,$memok,$bgpok,$tempok); X my($rcomm) = ""; X+ my($fndrymaxmem); X X $router = $_[0]; X $cpuok = $memok = ""; X@@ -268,15 +275,48 @@ X $routerhostname = $routerip if(!$routerhostname); X X # now check to see if the router has an OID for CPU and mem X- $resp = $snmp->get_request( $CPUOID, $MEMOID ); X+ $resp = $snmp->get_request( $MEMOID ); X if( $resp ) { X- $cpuok = $CPUOID if( $resp->{$CPUOID} ); X $memok = $MEMOID if( $resp->{$MEMOID} ); X+ } else { X+ $resp = $snmp->get_request( $FNDRYMEMOID ); X+ if( $resp ) { X+ $memok = $FNDRYMEMOID if( $resp->{$FNDRYMEMOID} ); X+ $resp = $snmp->get_request( $FNDRYMAXMEMOID ); X+ if( $resp ) { X+ $fndrymaxmem = $resp->{$FNDRYMAXMEMOID} if( $resp->{$FNDRYMAXMEMOID} ); X+ } X+ } X } X X+ # Try $CPUOID, if this doesn't work, try Foundry one X+ $resp = $snmp->get_request( $CPUOID ); X+ if( $resp ) { X+ $cpuok = $CPUOID if( $resp->{$CPUOID} ); X+ } else { X+ $resp = $snmp->get_request( $FNDRYCPUOID ); X+ if( $resp ) { X+ $cpuok = $FNDRYCPUOID if( $resp->{$FNDRYCPUOID} ); X+ } X+ } X+ X+ # Try to check if BGP routes exists X+ $resp = $snmp->get_request( $FNDRYBGPOID ); X+ if( $resp ) { X+ $bgpok = $FNDRYBGPOID if( $resp->{$FNDRYBGPOID} ); X+ } X+ X+ # Try to check if router has temp sensors (currently only foundry !) X+ $resp = $snmp->get_request( $FNDRYTEMPOID ); X+ if( $resp ) { X+ $tempok = $FNDRYTEMPOID if( $resp->{$FNDRYTEMPOID} ); X+ } X+ X+ X $routers{$router} = { interfaces=>{%interfaces}, name=>$routerdesc, X ip=>$routerip, hostname=>$routerhostname, community=>$rcomm, X- cpu=>$cpuok, mem=>$memok }; X+ cpu=>$cpuok, mem=>$memok, fndrymaxmem=>$fndrymaxmem, X+ bgp=>$bgpok, temp=>$tempok }; X X print "\rFinished router $routerhostname at address $routerip\n"; X X@@ -332,15 +372,20 @@ X my($k,$nextip,$icon); X my($t,$d,$f); X my($mb,$pfx); X+ my $descr; X X $n = ucfirst $n if($n !~ /\./); X X foreach $k ( keys %$ifp ) { X+ my $descr; X+ $descr = $ifp->{$k}->{descr}; X+ $descr =~ s/\n//g; X $icon = "interface-sm.gif"; X $pfx = ""; X $d = ""; X $t = $h.".".$k; X- $t = $h.".".$ifp->{$k}->{descr} if($ifp->{$k}->{descr}); X+ #$t = $h.".".$ifp->{$k}->{descr} if($ifp->{$k}->{descr}); X+ $t = $h.".".$descr if($descr); X $t =~ s/[\[\]#\/\\\s]+/./g; X $t =~ s/\.+/./g; X $t = lc $t; X@@ -349,7 +394,7 @@ X if(!$ifp->{$k}->{speed} or !$c or !$h) { X $pfx = "# "; X } X- if(!$includelans and $ifp->{$k}->{descr} =~ /(ether|token)/i) { X+ if(!$includelans and $descr =~ /(ether|token)/i) { X $pfx = "# "; X } X # print "$k".$ifp->{$k}{state}.": ".$ifp->{$k}{descr} X@@ -388,10 +433,10 @@ X X print CFG $pfx."Title[".$t."]: $n"; X print CFG " (".$ifp->{$k}->{ip}.")" if($ifp->{$k}->{ip}); X- print CFG ": ".$ifp->{$k}->{descr}." $d\n"; X+ print CFG ": ".$descr." $d\n"; X print CFG $pfx."PageTop[".$t."]: <H1>Traffic analysis for " X- .$ifp->{$k}->{descr}."</H1>\n"; X- print CFG $pfx."SetEnv[".$t."]: MRTG_INT_DESCR=\"".$ifp->{$k}->{descr} X+ .$descr."</H1>\n"; X+ print CFG $pfx."SetEnv[".$t."]: MRTG_INT_DESCR=\"".$descr X ."\" MRTG_INT_IP=\"".$ifp->{$k}->{ip}."\"\n"; X if($mb > 1000000) { X print CFG $pfx."routers.cgi*UnScaled[$t]: none\n" X@@ -408,7 +453,7 @@ X .$ifp->{$k}->{destination}[2]." router-sm.gif\n"; X } X print CFG $pfx."routers.cgi*ShortDesc[$t]: " X- .$ifp->{$k}->{descr}." (".(ucfirst $ifp->{$k}->{destination}[0]) X+ .$descr." (".(ucfirst $ifp->{$k}->{destination}[0]) X .")\n" X if( $ifp->{$k}->{destination}[0] X # and ($ifp->{$k}->{destination}[0] !~ /^\d/i) X@@ -431,7 +476,8 @@ X open CFG, ">$fname"; X print CFG "# MRTG config for router ".$routers{$rk}{hostname} X ." community ".$routers{$rk}{community} X- ."\n\nWorkdir: $workdir\nLogformat: rrdtool\nOptions[_]: growright bits \n"; X+ ."\n\nWorkdir: $workdir\n" X+ ."PathAdd: $pathadd\nLogformat: rrdtool\nOptions[_]: growright bits \n"; X X print CFG "routers.cgi*Icon: router-sm.gif\n" X ."routers.cgi*ShortDesc: ".$routers{$rk}{name}."\n\n"; X@@ -451,6 +497,7 @@ X .$routers{$rk}{name}." CPU Load\n"; X print CFG "PageTop[".$routers{$rk}{hostname}.".CPU]: CPU Stats\n"; X print CFG "routers.cgi*Mode[".$routers{$rk}{hostname}.".CPU]: cpu\n"; X+ print CFG "routers.cgi*UnScaled[".$routers{$rk}{hostname}.".CPU]: none\n"; X print CFG "routers.cgi*ShortDesc[".$routers{$rk}{hostname} X .".CPU]: CPU Stats\n"; X } else { X@@ -461,7 +508,11 @@ X print CFG "Target[".$routers{$rk}{hostname}.".MEM]: " X .$routers{$rk}{mem}."&".$routers{$rk}{mem}.":" X .$routers{$rk}{community}."\@".$routers{$rk}{hostname}."\n"; X- print CFG "MaxBytes[".$routers{$rk}{hostname}.".MEM]: 64000000\n"; X+ if( $routers{$rk}{mem} == $FNDRYMEMOID ) { X+ print CFG "MaxBytes[".$routers{$rk}{hostname}.".MEM]: ".$routers{$rk}{fndrymaxmem}."\n"; X+ } else { X+ print CFG "MaxBytes[".$routers{$rk}{hostname}.".MEM]: 64000000\n"; X+ } X print CFG "Options[".$routers{$rk}{hostname}.".MEM]: " X ."nopercent integer gauge noo\n"; X print CFG "routers.cgi*UnScaled[".$routers{$rk}{hostname}.".MEM]: none\n"; X@@ -480,6 +531,61 @@ X } else { X print CFG "# Unable to identify a Memory usage OID in MIB\n"; X } X+ X+ if( $routers{$rk}{bgp} ) { X+ print CFG "# BGP routes\n"; X+ print CFG "Target[".$routers{$rk}{hostname}.".BGP]: " X+ .$routers{$rk}{bgp}."&".$routers{$rk}{bgp}.":" X+ .$routers{$rk}{community}."\@".$routers{$rk}{hostname}."\n"; X+ print CFG "MaxBytes[".$routers{$rk}{hostname}.".BGP]: 100000000\n"; X+ print CFG "Options[".$routers{$rk}{hostname}.".BGP]: " X+ ."absolute nopercent integer gauge noo\n"; X+ print CFG "routers.cgi*UnScaled[".$routers{$rk}{hostname}.".BGP]: none\n"; X+ print CFG "Title[".$routers{$rk}{hostname}.".BGP]: " X+ .$routers{$rk}{name}." Total BGP routes\n"; X+ print CFG "ShortLegend[".$routers{$rk}{hostname}.".BGP]: Routes\n"; X+ print CFG "YLegend[".$routers{$rk}{hostname}.".BGP]: BGP Routes\n"; X+ print CFG "PageTop[".$routers{$rk}{hostname}.".BGP]: Total BGP Routes\n"; X+ print CFG "LegendI[".$routers{$rk}{hostname}.".BGP]: Routes:\n"; X+ print CFG "Legend1[".$routers{$rk}{hostname}.".BGP]: Routes\n"; X+ print CFG "Legend3[".$routers{$rk}{hostname}.".BGP]: Peak Routes\n"; X+ print CFG "routers.cgi*ShortDesc[".$routers{$rk}{hostname} X+ .".BGP]: BGP Routes\n"; X+ print CFG "routers.cgi*Options[".$routers{$rk}{hostname} X+ .".BGP]: noo, nopercent, absolute, nototal, nopercentile\n"; X+ } else { X+ print CFG "# No BGP routes OID in MIB\n"; X+ } X+ X+ if( $routers{$rk}{temp} ) { X+ print CFG "# Temperature\n"; X+ # Warning Foundry OID is temperature * 2, so we have to divide it by 2 X+ print CFG "Target[".$routers{$rk}{hostname}.".TEMP]: " X+ .$routers{$rk}{temp}."&".$routers{$rk}{temp}.":" X+ .$routers{$rk}{community}."\@".$routers{$rk}{hostname}." / 2\n"; X+ # 100°C is sufficient to handle this. At this temperature, we can think X+ # that router ... near to die. X+ print CFG "MaxBytes[".$routers{$rk}{hostname}.".TEMP]: 100\n"; X+ print CFG "Options[".$routers{$rk}{hostname}.".TEMP]: " X+ ."absolute nopercent gauge noo\n"; X+ print CFG "routers.cgi*UnScaled[".$routers{$rk}{hostname}.".TEMP]: none\n"; X+ print CFG "Title[".$routers{$rk}{hostname}.".TEMP]: " X+ .$routers{$rk}{name}." Temperature\n"; X+ print CFG "ShortLegend[".$routers{$rk}{hostname}.".TEMP]: °C\n"; X+ print CFG "PageTop[".$routers{$rk}{hostname}.".TEMP]: Temperature\n"; X+ print CFG "LegendI[".$routers{$rk}{hostname}.".TEMP]: Temperature\n"; X+ print CFG "Legend1[".$routers{$rk}{hostname}.".TEMP]: Temperature\n"; X+ print CFG "Legend3[".$routers{$rk}{hostname}.".TEMP]: Peak Temperature\n"; X+ print CFG "routers.cgi*ShortDesc[".$routers{$rk}{hostname} X+ .".TEMP]: Temperature\n"; X+ print CFG "routers.cgi*Options[".$routers{$rk}{hostname} X+ .".TEMP]: noo, nopercent, absolute, nototal, nopercentile\n"; X+ print CFG "routers.cgi*Icon[".$routers{$rk}{hostname} X+ .".TEMP]: temp-sm.gif\n"; X+ } else { X+ print CFG "# No Temperature OID in MIB\n"; X+ } X+ X X close CFG; X X@@ -495,10 +601,10 @@ X $script = "/cgi-bin/routers2.pl"; X } X X-getopts('hc:D:s:Lw:NA'); X+getopts('hc:D:s:Lw:NAp:'); X X if($opt_h or $#ARGV<0) { X- print "Usage: buildwan -h\n buildwan [-L][-A][-N][-s <subdir>][-c <communitylist>][-D <domainname>] -w <workdir> <router>...\n"; X+ print "Usage: buildwan -h\n buildwan [-L][-A][-N][-s <subdir>][-c <communitylist>][-D <domainname>] -w <workdir> -p <rrdpath> <router>...\n"; X print "-L: Include ethernet/token ring Lan interfaces\n"; X print "-A: Include ethernet/token ring Lan interfaces even if they are down\n"; X print "-N: Don't browse network neighors.\n"; X@@ -506,6 +612,7 @@ X print "-D: Specify domain name to be stripped from hostnames in descriptions\n"; X print "-c: Specify SNMP community string (default is 'public'), separate with commas\n"; X print "-w: Specify Work directory where the .rrd files go.\n"; X+ print "-p: Specify the rddtool path (default is /usr/local/bin).\n"; X X exit 1; X } X@@ -515,6 +622,7 @@ X $includelans = 1 if($opt_L); X $includealllan = 1 if($opt_A); X $workdir = $opt_w if($opt_w); X+$pathadd = $opt_p if($opt_p); X @community = split /,\s*/,$opt_c if($opt_c); X @community = ( 'public' ) if(!@community); X if($opt_D) { END-of-routers2-extras/files/patch-buildwan.pl echo x - routers2-extras/files/patch-cfgmaker_host.pl sed 's/^X//' >routers2-extras/files/patch-cfgmaker_host.pl << 'END-of-routers2-extras/files/patch-cfgmaker_host.pl' X--- cfgmaker_host.pl.orig Thu Dec 14 15:43:49 2006 X+++ cfgmaker_host.pl Thu Dec 14 15:44:43 2006 X@@ -1,4 +1,4 @@ X-#!/usr/bin/perl X+#!%%PERL%% X # X # Create a MRTG .cfg file for a given host. Include routers.cgi X # extensions. Check for different SNMP options available. X@@ -34,7 +33,7 @@ X my($PS) = '/'; X my($TIMEOUT) = 4; X my($RETRIES) = 2; X-my($pingprobe) = "/usr/local/bin/mrtg-ping-probe"; X+my($pingprobe) = "%%LOCALBASE%%/bin/mrtg-ping-probe"; X X $|=1; X ####################################################################### X@@ -78,12 +77,16 @@ X netopiausedmem => 'enterprises.304.1.3.1.3.6.0', X netopiacurcpu => 'enterprises.304.1.3.1.3.1.0', X netopiaavgcpu => 'enterprises.304.1.3.1.3.2.0', X- # Fortynet X- fortycpuusage => 'enterprises.12356.1.1.6.1.0', X- fortycpuidle => 'enterprises.12356.1.1.6.2.0', X- fortycpuint => 'enterprises.12356.1.1.6.3.0', X- fortymemusage => 'enterprises.12356.1.1.6.4.0', X- fortysessions => 'enterprises.12356.1.1.6.6.0', X+ # Fortinet MIB X+ forticpu => 'enterprises.12356.1.8.0', X+ fortimem => 'enterprises.12356.1.9.0', X+ fortisessions => 'enterprises.12356.1.10.0', X+# fortycpuidle => 'enterprises.12356.1.1.6.2.0', X+# fortycpuint => 'enterprises.12356.1.1.6.3.0', X+# fortymemusage => 'enterprises.12356.1.1.6.4.0', X+# fortysessions => 'enterprises.12356.1.1.6.6.0', X+ # Foundry MID X+ fndycpu => 'entreprises.1991.1.1.2.1.35.0', X ); X X ####################################################################### X@@ -304,8 +307,74 @@ X print CFG "routers.cgi*Title[$hostname-CPU]: CPU Usage on $hostname\n"; X print CFG "routers.cgi*InSummary[$hostname-CPU]: yes\n"; X } else { X- print CFG "#\n# Not available.\n"; X- print "CPU usage statistics not available.\n"; X+ $rv = undef; X+ ($rv) = snmpget ($snmp, $OID{forticpu}); X+ if (defined $rv and ($rv > 0)) { X+ print "* CPU usage statistic available (FortiOS MIB).\n"; X+ # Current CPU X+ print CFG "Target[$hostname-cpu-cur]: $OID{forticpu}&$OID{forticpu}:$snmp\n"; X+ print CFG "PageTop[$hostname-cpu-cur]: $sdesc<BR>Current CPU usage\n"; X+ print CFG "Title[$hostname-cpu-cur]: Current CPU on $sname\n"; X+ print CFG "Maxbytes[$hostname-cpu-cur]: 100\n"; X+ print CFG "Options[$hostname-cpu-cur]: gauge\n"; X+ print CFG "YLegend[$hostname-cpu-cur]: percent\n"; X+ print CFG "ShortLegend[$hostname-cpu-cur]: %\n"; X+ print CFG "LegendI[$hostname-cpu-cur]: user:\n"; X+ print CFG "Legend1[$hostname-cpu-cur]: Current CPU Usage\n"; X+ print CFG "Legend3[$hostname-cpu-cur]: Current CPU Usage Peak\n"; X+ print CFG "routers.cgi*WithPeak[$hostname-cpu-cur]: none\n"; X+ print CFG "routers.cgi*Options[$hostname-cpu-cur]: noo, nopercent, nototal\n"; X+ print CFG "routers.cgi*Graph[$hostname-cpu-cur]: $hostname-CPU \"CPU usage\" noo\n"; X+ print CFG "routers.cgi*InMenu[$hostname-cpu-cur]: no\n"; X+ print CFG "routers.cgi*InOut[$hostname-cpu-cur]: no\n"; X+ print CFG "routers.cgi*InSummary[$hostname-cpu-cur]: no\n"; X+ # Total & Graph X+ print CFG "routers.cgi*ShortName[$hostname-CPU]: CPU Utilisation\n"; X+ print CFG "routers.cgi*Description[$hostname-CPU]: $hostname CPU Utilisation\n"; X+ print CFG "routers.cgi*GraphStyle[$hostname-CPU]: normal\n"; X+ print CFG "routers.cgi*Options[$hostname-CPU]: total, available\n"; X+ print CFG "routers.cgi*LegendTI[$hostname-CPU]: Total usage\n"; X+ print CFG "routers.cgi*MBLegend[$hostname-CPU]: 100% Utilisation\n"; X+ print CFG "routers.cgi*Icon[$hostname-CPU]: cpu-sm.gif\n"; X+ print CFG "routers.cgi*Title[$hostname-CPU]: CPU Usage on $hostname\n"; X+ print CFG "routers.cgi*InSummary[$hostname-CPU]: yes\n"; X+ } else { X+ $rv = undef; X+ ($rv) = snmpget ($snmp, $OID{fndrycpu}); X+ if (defined $rv and ($rv > 0)) { X+ print "* CPU usage statistic available (Foundry MIB).\n"; X+ # Current CPU X+ print CFG "Target[$hostname-cpu-cur]: $OID{fndrycpu}&$OID{fndrycpu}:$snmp\n"; X+ print CFG "PageTop[$hostname-cpu-cur]: $sdesc<BR>Current CPU usage\n"; X+ print CFG "Title[$hostname-cpu-cur]: Current CPU on $sname\n"; X+ print CFG "Maxbytes[$hostname-cpu-cur]: 100\n"; X+ print CFG "Options[$hostname-cpu-cur]: gauge\n"; X+ print CFG "YLegend[$hostname-cpu-cur]: percent\n"; X+ print CFG "ShortLegend[$hostname-cpu-cur]: %\n"; X+ print CFG "LegendI[$hostname-cpu-cur]: user:\n"; X+ print CFG "Legend1[$hostname-cpu-cur]: Current CPU Usage\n"; X+ print CFG "Legend3[$hostname-cpu-cur]: Current CPU Usage Peak\n"; X+ print CFG "routers.cgi*WithPeak[$hostname-cpu-cur]: none\n"; X+ print CFG "routers.cgi*Options[$hostname-cpu-cur]: noo, nopercent, nototal\n"; X+ print CFG "routers.cgi*Graph[$hostname-cpu-cur]: $hostname-CPU \"CPU usage\" noo\n"; X+ print CFG "routers.cgi*InMenu[$hostname-cpu-cur]: no\n"; X+ print CFG "routers.cgi*InOut[$hostname-cpu-cur]: no\n"; X+ print CFG "routers.cgi*InSummary[$hostname-cpu-cur]: no\n"; X+ # Total & Graph X+ print CFG "routers.cgi*ShortName[$hostname-CPU]: CPU Utilisation\n"; X+ print CFG "routers.cgi*Description[$hostname-CPU]: $hostname CPU Utilisation\n"; X+ print CFG "routers.cgi*GraphStyle[$hostname-CPU]: normal\n"; X+ print CFG "routers.cgi*Options[$hostname-CPU]: total, available\n"; X+ print CFG "routers.cgi*LegendTI[$hostname-CPU]: Total usage\n"; X+ print CFG "routers.cgi*MBLegend[$hostname-CPU]: 100% Utilisation\n"; X+ print CFG "routers.cgi*Icon[$hostname-CPU]: cpu-sm.gif\n"; X+ print CFG "routers.cgi*Title[$hostname-CPU]: CPU Usage on $hostname\n"; X+ print CFG "routers.cgi*InSummary[$hostname-CPU]: yes\n"; X+ } else { X+ print CFG "#\n# Not available.\n"; X+ print "CPU usage statistics not available.\n"; X+ } X+ } X } X } X X@@ -313,6 +382,7 @@ X # physical and virtual X print CFG "\n#######################################\n"; X print CFG "# Memory used\n"; X+ my $oldsname = $sname; # To restore it later. X $rv = undef; X ($rv) = snmpget($snmp, $OID{totalswap} ); X if(defined $rv and ($rv > 0)) { X@@ -356,7 +426,21 @@ X $targ = "$aroid&$asoid:$snmp"; X $factor = 1; X } else { X- print "Memory stats not available.\n"; X+ $rv = undef; X+ ($rv) = snmpget($snmp, $OID{fortimem} ); X+ if ($rv>0) { X+ print "* Memory utilisation available (FortiOS MIB).\n"; X+ #($mbr, $mbs) = snmpget($snmp, $OID{fortimem}, $OID{fortimem}); X+ $mbr = 100; X+ $mbs = 100;; X+ $aroid = $OID{fortimem}; X+ $asoid = $OID{fortimem}; X+ $targ = "$aroid&$asoid:$snmp"; X+ $factor = 1; X+ $sname = "$sname in % "; X+ } else { X+ print "Memory stats not available.\n"; X+ } X } X } X } X@@ -441,6 +525,7 @@ X print CFG "#\n# Not available.\n"; X print "Paging statistics not available.\n"; X } X+ $sname = $oldsname; X X # Disk X # individual disk spaces, and one userdefined summary X@@ -622,6 +707,51 @@ X print CFG "#\n# Not available.\n"; X print "User count not available.\n"; X } X+ X+ # Sessions X+ print CFG "\n#######################################\n"; X+ print CFG "# Session count\n"; X+ $rv = undef; X+ $targ = ""; X+ ($rv) = snmpget($snmp, $OID{fortisessions} ); X+ if(defined $rv) { X+ print "* Session counter available (FortiOS MIB).\n"; X+ $targ = "$OID{fortisessions}&$OID{fortisessions}:$snmp"; X+ X+# } else { X+# ($rv) = snmpget($snmp, $OID{sunusers} ); X+# if(defined $rv) { X+# print "* User counter available (Sun-MIB).\n"; X+# $targ = "$OID{sunusers}&$OID{sunusers}:$snmp"; X+# } X+ } X+ X+ if($targ) { X+ print CFG "Target[$hostname-sessions]: $targ\n"; X+ print CFG "PageTop[$hostname-sessions]: $sdesc<BR>Active Sessions\n"; X+ print CFG "Title[$hostname-sessions]: Active Sessions on $sname\n"; X+ print CFG "MaxBytes[$hostname-sessions]: 1000000\n"; X+ print CFG "SetEnv[$hostname-sessions]: MRTG_INT_DESCR=\"Sessions\"\n"; X+ print CFG "Options[$hostname-sessions]: nopercent, gauge\n"; X+ print CFG "YLegend[$hostname-sessions]: Sessions\n"; X+ print CFG "ShortLegend[$hostname-sessions]: \n"; X+ print CFG "LegendI[$hostname-sessions]: Sessions\n"; X+ print CFG "Legend1[$hostname-sessions]: Active Sessions\n"; X+ print CFG "Legend3[$hostname-sessions]: Peak Active Sessions\n"; X+ print CFG "routers.cgi*Options[$hostname-sessions]: nomax, nototal, fixunit, noo\n"; X+ print CFG "routers.cgi*Mode[$hostname-sessions]: general\n"; X+ print CFG "routers.cgi*ShortDesc[$hostname-sessions]: Sessions\n"; X+ print CFG "routers.cgi*Description[$hostname-sessions]: Sessions on $sname\n"; X+ print CFG "routers.cgi*UnScaled[$hostname-sessions]: none\n"; X+ print CFG "routers.cgi*InOut[$hostname-sessions]: no\n"; X+ print CFG "routers.cgi*InSummary[$hostname-sessions]: yes\n"; X+ print CFG "routers.cgi*InCompact[$hostname-sessions]: no\n"; X+ print CFG "routers.cgi*Icon[$hostname-sessions]: user-sm.gif\n"; X+ } else { X+ print CFG "#\n# Not available.\n"; X+ print "Sessions count not available.\n"; X+ } X+ X X # processes X print CFG "\n#######################################\n"; END-of-routers2-extras/files/patch-cfgmaker_host.pl echo x - routers2-extras/files/patch-95.pl sed 's/^X//' >routers2-extras/files/patch-95.pl << 'END-of-routers2-extras/files/patch-95.pl' X--- 95.pl.orig Thu Dec 14 16:22:04 2006 X+++ 95.pl Thu Dec 14 16:22:56 2006 X@@ -0,0 +1,80 @@ X+#!%%PERL%% X+ X+use strict; X+use Getopt::Long; X+ X+# Options X+my %option; X+ X+sub usage X+{ X+ print <<"EOA" X+usage: 95 --rrd=/path/to/rrdfile.rdd X+ --rrd=file rrdfile to be used to compute the 95 percentil X+ --help this help X+ -h this help X+EOA X+} X+ X+sub main X+{ X+ my $rrd; X+ my $line; X+ my $value; X+ my $percentile95; X+ my $percentile95i; X+ my $percentile95o; X+ my @rrdfetch; X+ my @allvalues; X+ my @allvaluesi; X+ my @allvalueso; X+ my $in; X+ my $out; X+ my @array; X+ X+ die unless GetOptions( X+ 'help|h' => \$option{'help'}, X+ 'rrd=s' => \$option{'rrd'}, X+ ); X+ X+ if ($option{'help'}) { X+ usage(); X+ exit; X+ } X+ X+ unless (defined $option{'rrd'} ) { X+ usage(); X+ die 'rrdfile is not specified'; X+ } X+ X+ $rrd = $option{'rrd'}; X+ X+ #@rrdfetch=qx(/usr/local/bin/rrdtool fetch $rrd AVERAGE -r 300 -s -30000 -e -300); X+# @rrdfetch=qx(/usr/local/bin/rrdtool fetch $rrd AVERAGE -r 300 -s -24h); X+# @rrdfetch=qx(/usr/local/bin/rrdtool fetch $rrd AVERAGE -r 300 -s -24h -e -300); X+ #@rrdfetch=qx(/usr/local/bin/rrdtool fetch $rrd AVERAGE -r 300 -s -1m -e -300); X+ @rrdfetch=qx(/usr/local/bin/rrdtool fetch $rrd AVERAGE -r 300 -s -1month); X+ chomp @array; X+ foreach $line (@rrdfetch) { X+ split(/\s+/,$line); X+ $in = $_[1]; $out = $_[2]; X+ #$value=($_[1] > $_[2]) ? $_[1] : $_[2]; X+ $value=($in > $out) ? $in : $out; X+ push (@allvalues,$value); X+ push (@allvaluesi,$in); X+ push (@allvalueso,$out); X+ } X+ X+ @allvalues=sort {$a <=> $b} @allvalues; X+ $percentile95=sprintf("%.2f",($allvalues[(sprintf("%.0f",(@allvalues*0.95))-1)]*8/1000)); X+ @allvaluesi=sort {$a <=> $b} @allvaluesi; X+ $percentile95i=sprintf("%.2f",($allvaluesi[(sprintf("%.0f",(@allvaluesi*0.95))-1)]*8/1000)); X+ @allvalueso=sort {$a <=> $b} @allvalueso; X+ $percentile95o=sprintf("%.2f",($allvalueso[(sprintf("%.0f",(@allvalueso*0.95))-1)]*8/1000)); X+ print "In/Out : $percentile95 KBytes\n"; X+ print "In : $percentile95i KBytes\n"; X+ print "Out : $percentile95o KBytes\n"; X+ X+} X+ X+main(); END-of-routers2-extras/files/patch-95.pl echo x - routers2-extras/Makefile sed 's/^X//' >routers2-extras/Makefile << 'END-of-routers2-extras/Makefile' X# New ports collection makefile for: routers2 X# Date created: December 14th 2006 X# Whom: Xavier Beaudouin <kiwi@oav.net> X# X# $FreeBSD$ X# X XPORTNAME= routers2-extras XPORTVERSION= 2.17 XCATEGORIES= net-mgmt XMASTER_SITES= http://www.steveshipway.org/software/rrd/ \ X ftp://ftp.oav.oav.net/routers2/ XDISTNAME= routers2-v${PORTVERSION}a X XMAINTAINER= kiwi@oav.net XCOMMENT= Extra extensions and scripts for routers2 frontend X XRUN_DEPENDS= ${LOCALBASE}/www/routers2/routers2.cgi:${PORTSDIR}/net-mgmt/routers2 \ X ${LOCALBASE}/bin/mrtg-ping-probe:${PORTSDIR}/net/mrtg-ping-probe X XWRKSRC= ${WRKDIR}/routers2-v${PORTVERSION}/extras X XUSE_PERL5= YES X XNO_BUILD= YES X Xpost-patch: X for file in buildwan.pl cfgmaker_host.pl 95.pl ; do \ X ${REINPLACE_CMD} -e 's|%%PERL%%|${PERL}|' ${WRKSRC}/$$file; \ X done X for file in cfgmaker_host.pl ; do \ X ${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|' ${WRKSRC}/$$file; \ X done X Xdo-install: X ${MKDIR} -m 755 ${PREFIX}/www/routers2/extras X.if !defined(NOPORTDOCS) X ${MKDIR} -m 755 ${DOCSDIR} X for file in README *.txt; do \ X ${INSTALL_DATA} ${WRKSRC}/$$file ${DOCSDIR}; \ X done X.endif X for file in buildwan.pl cfgmaker_host.pl check_esx2 check_foundry checkagent \ X gather.pl getstats.sh graphprune.pl mrtg-apache mrtg-nrpe.pl mrtg-nrpe.sh \ X mrtg-pnsclient.pl mrtg-portsinuse.pl rrd-archive-clean.pl \ X rrd-archive.pl rrdextend.pl vmware_monitor.pl vmware_monitor2.pl \ X winalert.pl targetnames/targetnames.pl 95.pl; do \ X ${INSTALL_SCRIPT} ${WRKSRC}/$$file ${PREFIX}/www/routers2/extras; \ X done X for file in mrtg-nrpe.cfg mrtg-pnsclient.cfg rrd-archive.conf winalert.conf ; do \ X ${INSTALL_DATA} ${WRKSRC}/$$file ${PREFIX}/www/routers2/extras; \ X done X ${MKDIR} -m 755 ${PREFIX}/www/routers2/extras/templates X for file in templates/* ; do \ X ${INSTALL_DATA} ${WRKSRC}/$$file ${PREFIX}/www/routers2/extras/templates; \ X done X X.include <bsd.port.mk> END-of-routers2-extras/Makefile echo x - routers2-extras/distinfo sed 's/^X//' >routers2-extras/distinfo << 'END-of-routers2-extras/distinfo' XMD5 (routers2-v2.17a.tar.gz) = 57e1542bca50940aa4b3908cc7ed5551 XSHA256 (routers2-v2.17a.tar.gz) = a8aa61db9969ebae2b56fe92184d045f03780a8c9412f99f48ecfed879d9703e XSIZE (routers2-v2.17a.tar.gz) = 383280 END-of-routers2-extras/distinfo echo x - routers2-extras/pkg-descr sed 's/^X//' >routers2-extras/pkg-descr << 'END-of-routers2-extras/pkg-descr' XExtras extensions and third party scripts for routers2 frontend X XWWW: http://www.steveshipway.org/software/ END-of-routers2-extras/pkg-descr echo x - routers2-extras/pkg-plist sed 's/^X//' >routers2-extras/pkg-plist << 'END-of-routers2-extras/pkg-plist' Xwww/routers2/extras/buildwan.pl Xwww/routers2/extras/cfgmaker_host.pl Xwww/routers2/extras/check_esx2 Xwww/routers2/extras/check_foundry Xwww/routers2/extras/checkagent Xwww/routers2/extras/gather.pl Xwww/routers2/extras/getstats.sh Xwww/routers2/extras/graphprune.pl Xwww/routers2/extras/mrtg-apache Xwww/routers2/extras/mrtg-nrpe.pl Xwww/routers2/extras/mrtg-nrpe.sh Xwww/routers2/extras/mrtg-pnsclient.pl Xwww/routers2/extras/mrtg-portsinuse.pl Xwww/routers2/extras/rrd-archive-clean.pl Xwww/routers2/extras/rrd-archive.pl Xwww/routers2/extras/rrdextend.pl Xwww/routers2/extras/vmware_monitor.pl Xwww/routers2/extras/vmware_monitor2.pl Xwww/routers2/extras/winalert.pl Xwww/routers2/extras/targetnames.pl Xwww/routers2/extras/mrtg-nrpe.cfg Xwww/routers2/extras/mrtg-pnsclient.cfg Xwww/routers2/extras/rrd-archive.conf Xwww/routers2/extras/winalert.conf Xwww/routers2/extras/95.pl Xwww/routers2/extras/templates/template-mrtg-dns Xwww/routers2/extras/templates/template-mrtg-ipcs Xwww/routers2/extras/templates/template-mrtg-nrpe Xwww/routers2/extras/templates/template-mrtg-ping Xwww/routers2/extras/templates/template-mrtg-pnsclient X%%PORTDOCS%%%%DOCSDIR%%/README X%%PORTDOCS%%%%DOCSDIR%%/buildwan.txt X%%PORTDOCS%%%%DOCSDIR%%/graphprune.txt X%%PORTDOCS%%%%DOCSDIR%%/mrtg-nrpe.txt X%%PORTDOCS%%%%DOCSDIR%%/mrtg-pnsclient.txt X%%PORTDOCS%%%%DOCSDIR%%/rrd-archive.txt X%%PORTDOCS%%%%DOCSDIR%%/vmware_monitor.txt X%%PORTDOCS%%%%DOCSDIR%%/winalert.txt X@dirrm www/routers2/extras/templates X@dirrm www/routers2/extras X%%PORTDOCS%%@dirrm %%DOCSDIR%% END-of-routers2-extras/pkg-plist exit --- routers2-extras-2.17.shar ends here --- >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20061214152624.14D642E218>