![]() ![]() |
hotsanic |
Subversion Repositories: |
Compare with Previous - Blame - Download
package HotSaNICmod::syssnmp;use lib "../../lib";use HotSaNICsnmp;sub version {($VERSION = '$Revision: 1.15 $') =~ s/.*(\d+\.\d+).*/$1/;return "syssnmp.pm $VERSION";}sub sample {my %args=@_;my $oid = '.1.3.6.1.2.1.2.2.1'; # interfaces.ifTable.ifEntry.ifDescmy $suf_descr = '.2'; # .ifDescrmy $suf_in = '.10'; # .ifInOctetsmy $suf_out = '.16'; # .ifOutOctetsmy %maxin;my %maxout;my %devin;my %devout;my %sampletime;my %snmpdev;foreach my $entry (@{$args{DEV}}) {my ($host,$community,$item,$dbname,$name,$file,$description,$maxin,$maxout)=HotSaNICmod::common::get_names($entry);if ($host ne "") {my $max = $maxin;$max = $maxout if $maxin < $maxout;my @data = ($item, $max);if (defined $snmpdev{$host."_".$community}) { push @{$snmpdev{$host."_".$community}}, @data; }else { $snmpdev{$host."_".$community} = [ @data ] ; }$dbname{$host."_".$item}=$dbname;}}foreach (keys %snmpdev) {my ($host, $com) = split /_/;my $res;undef my %max;while (@{$snmpdev{$_}}) {my $name=shift @{$snmpdev{$_}};my $max=shift @{$snmpdev{$_}};$max{$name}=$max;}my @query = ($oid.$suf_descr, $oid.$suf_in, $oid.$suf_out);$res = HotSaNICsnmp::snmp_walk($host, $com, @query);if(keys(%$res) == 0) { HotSaNICmod::do_rrd($dbname{$host."_".$_}, $max{$_}, time, "U", "U") foreach keys(%max); }else {for ( my $i=1; defined($$res{$oid.$suf_descr.".".$i}); $i++) {my $dev = $$res{$oid.$suf_descr.".".$i};if(defined($max{$dev})) {HotSaNICmod::do_rrd($dbname{$host."_".$dev}, $max{$dev}, time, $$res{$oid.$suf_in.".".$i}, $$res{$oid.$suf_out.".".$i});}}}}}1;