1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
package HP::Proliant::Component::SNMP;
sub get_entries {
my $self = shift;
my $oids = shift;
my $entry = shift;
my $snmpwalk = $self->{rawdata};
my @params = ();
my @indices = SNMP::Utils::get_indices($snmpwalk, $oids->{$entry});
foreach (@indices) {
my @idx = @{$_};
my %params = (
runtime => $self->{runtime},
);
my $maxdimension = scalar(@idx) - 1;
foreach my $idxnr (1..scalar(@idx)) {
$params{'index'.$idxnr} = $_->[$idxnr - 1];
}
foreach my $oid (keys %{$oids}) {
next if $oid =~ /Entry$/;
next if $oid =~ /Value$/;
if (exists $oids->{$oid.'Value'}) {
$params{$oid} = SNMP::Utils::get_object_value(
$snmpwalk, $oids->{$oid}, $oids->{$oid.'Value'}, @idx);
if (! defined $params{$oid}) {
my $numerical_value = SNMP::Utils::get_object(
$snmpwalk, $oids->{$oid}, @idx);
if (! defined $numerical_value) {
# maschine liefert schrott
$params{$oid} = 'value_unknown';
} else {
$params{$oid} = 'value_'.SNMP::Utils::get_object(
$snmpwalk, $oids->{$oid}, @idx);
}
}
} else {
$params{$oid} = SNMP::Utils::get_object(
$snmpwalk, $oids->{$oid}, @idx);
}
}
push(@params, \%params);
}
return @params;
}
sub mib {
my $self = shift;
my $mib = shift;
my $condition = {
0 => 'other',
1 => 'ok',
2 => 'degraded',
3 => 'failed',
};
my $MibRevMajor = $mib.'.1.0';
my $MibRevMinor = $mib.'.2.0';
my $MibRevCondition = $mib.'.3.0';
return (
$self->SNMP::Utils::get_object($self->{rawdata},
$MibRevMajor),
$self->SNMP::Utils::get_object($self->{rawdata},
$MibRevMinor),
$self->SNMP::Utils::get_object_value($self->{rawdata},
$MibRevCondition, $condition));
};
1;
|