![]() ![]() |
hotsanic |
Subversion Repositories: |
Compare with Previous - Blame - Download
package HotSaNICmod::OSdep;use lib "../../lib";use RRDs;eval { require "platform/syssnmp.pm"; };$NO_SNMP=1 if($@);sub version {($VERSION = '$Revision: 1.3 $') =~ s/.*(\d+\.\d+).*/$1/;return "$^O.pm $VERSION";}sub sample {my %args=@_;my %maxin;my %maxout;my %devin;my %devout;my %sampletime;my %snmpdev;foreach (keys(%args)) {if ( index($_,"DEV") >= 0) {($dev,$maxin,$maxout,$description)=split /,/,$args{$_};if ( index($dev,"SNMP\:") >= 0) {(undef,$host,$community,$interface)=split /:/,$dev;my $max = $maxin;$max = $maxout if $maxin < $maxout;my @data = ( $interface, $max);if (defined $snmpdev{$host."_".$community}) {push @{$snmpdev{$host."_".$community}}, @data;} else {$snmpdev{$host."_".$community} = [ @data ] ;}} else {$dev =~ s/:/_/g;$maxin{$dev}=$maxin;$maxout{$dev}=$maxout;$devin{$dev}="U";$devout{$dev}="U";$sampletime{$dev}=time;}}}open(IN,"netstat -nib | grep Link |");while(<IN>) {chomp;@line = split;$name = $line[0];$input = $line[$#line-4];$output= $line[$#line-1];$devin{$name}=$input;$devout{$name}=$output;$sampletime{$name}=time;}close(IN);## then query SNMP hosts and check interfaces#syssnmp::do_snmp(%snmpdev);## save data#foreach $name (keys %maxin) {# build new database if needed#if (! -e "rrd/$name.rrd" ) {# get max. transmission value#my $max=$maxin{$name};if ($max < $maxout{$name}) { $max=$maxout{$name} };# if max-transmission is not set, assume 100 MBit.#if ($max == 0) { $max=12500000; }system("./makerrd","$name","$max")}# update databaseRRDs::update "rrd/$name.rrd",$sampletime{$name}.":".$devin{$name}.":".$devout{$name};if ($ERROR = RRDs::error) { print time,": ",$args{MODNAME},": unable to update `$name.rrd': $ERROR\n"; }}}1;