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.ifDesc
my $suf_descr = '.2'; # .ifDescr
my $suf_in = '.10'; # .ifInOctets
my $suf_out = '.16'; # .ifOutOctets
my %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;