diff options
author | Harald Pfeiffer <coding _ lirion.de> | 2019-04-17 19:07:19 +0200 |
---|---|---|
committer | Harald Pfeiffer <coding _ lirion.de> | 2019-04-17 19:07:19 +0200 |
commit | 1e2387474a449452b78520b9ad96a8b4b5e99722 (patch) | |
tree | 836889471eec7d2aac177405068e2a8f1e2b1978 /nagios-plugins-contrib-24.20190301~bpo9+1/check_hpasm/check_hpasm-4.8/plugins-scripts/HP/StorageWorks.pm | |
download | nagios-plugins-contrib-1e2387474a449452b78520b9ad96a8b4b5e99722.tar.bz2 |
initial commit of source fetch
Diffstat (limited to 'nagios-plugins-contrib-24.20190301~bpo9+1/check_hpasm/check_hpasm-4.8/plugins-scripts/HP/StorageWorks.pm')
-rwxr-xr-x | nagios-plugins-contrib-24.20190301~bpo9+1/check_hpasm/check_hpasm-4.8/plugins-scripts/HP/StorageWorks.pm | 157 |
1 files changed, 157 insertions, 0 deletions
diff --git a/nagios-plugins-contrib-24.20190301~bpo9+1/check_hpasm/check_hpasm-4.8/plugins-scripts/HP/StorageWorks.pm b/nagios-plugins-contrib-24.20190301~bpo9+1/check_hpasm/check_hpasm-4.8/plugins-scripts/HP/StorageWorks.pm new file mode 100755 index 0000000..5792961 --- /dev/null +++ b/nagios-plugins-contrib-24.20190301~bpo9+1/check_hpasm/check_hpasm-4.8/plugins-scripts/HP/StorageWorks.pm @@ -0,0 +1,157 @@ +package HP::StorageWorks; + +use strict; +use constant { OK => 0, WARNING => 1, CRITICAL => 2, UNKNOWN => 3 }; +use Data::Dumper; + +our @ISA = qw(HP::Server); + +sub init { + my $self = shift; + $self->{serial} = 'unknown'; + $self->{product} = 'unknown'; + $self->{romversion} = 'unknown'; + $self->collect(); + if (! $self->{runtime}->{plugin}->check_messages()) { + $self->set_serial(); + $self->overall_init(); + $self->overall_check(); + } +} + +sub overall_init { + my $self = shift; + my %params = @_; + my $snmpwalk = $self->{rawdata}; + my $cpqHoMibStatusArray = '1.3.6.1.4.1.232.11.2.10.1.0'; + $self->{cpqHoMibStatusArray} = SNMP::Utils::get_object( + $snmpwalk, $cpqHoMibStatusArray); + if ($self->{cpqHoMibStatusArray} =~ /^(\d+)\s+(\d+)\s+(\d+)\s+(\d+)/) { + $self->{cpqHoMibStatusArray} = 1 * $2; + } elsif ($self->{cpqHoMibStatusArray} =~ /^0x.*(\d\d)(\d\d)(\d\d)(\d\d)$/) { + $self->{cpqHoMibStatusArray} = 1 * $2; + } +} + +sub overall_check { + my $self = shift; + if ($self->{cpqHoMibStatusArray} == 4) { + $self->add_info('overall status is failed'); + $self->add_message(CRITICAL, 'overall status is failed'); + } elsif ($self->{cpqHoMibStatusArray} == 3) { + $self->add_info('overall status is degraded'); + $self->add_message(WARNING, 'overall status is degraded'); + } elsif ($self->{cpqHoMibStatusArray} == 2) { + $self->add_info('overall status is ok'); + $self->add_message(OK, 'overall status is ok'); + } elsif ($self->{cpqHoMibStatusArray} == 1) { + $self->add_info('overall status is other'); + $self->add_message(UNKNOWN, 'overall status is other'); + } +} + +sub identify { + my $self = shift; + return $self->{productname}; +} + +sub dump { + my $self = shift; + printf STDERR "serial %s\n", $self->{serial}; + printf STDERR "product %s\n", $self->{product}; + printf STDERR "romversion %s\n", $self->{romversion}; + printf STDERR "%s\n", Data::Dumper::Dumper($self->{components}); +} + +sub collect { + my $self = shift; + if ($self->{runtime}->{plugin}->opts->snmpwalk) { + my $cpqHoMibStatusArray = '1.3.6.1.4.1.232.11.2.10.1.0'; + if (! exists $self->{rawdata}->{$cpqHoMibStatusArray}) { + $self->add_message(CRITICAL, + 'snmpwalk returns no health data (cpqhost-mib)'); + } + } else { + my $net_snmp_version = Net::SNMP->VERSION(); # 5.002000 or 6.000000 + #$params{'-translate'} = [ + # -all => 0x0 + #]; + my ($session, $error) = + Net::SNMP->session(%{$self->{runtime}->{snmpparams}}); + if (! defined $session) { + $self->{plugin}->add_message(CRITICAL, 'cannot create session object'); + $self->trace(1, Data::Dumper::Dumper($self->{runtime}->{snmpparams})); + } + if (! $self->{runtime}->{plugin}->check_messages()) { + # snmp peer is alive + $self->trace(2, sprintf "Protocol is %s", + $self->{runtime}->{snmpparams}->{'-version'}); + my $cpqHoMibStatusArray = '1.3.6.1.4.1.232.11.2.10.1.0'; + $session->translate; + my $tic = time; + my $response = $session->get_request( + -varbindlist => [$cpqHoMibStatusArray] + ); + my $tac = time; + $self->trace(2, sprintf "%03d seconds for walk cpqHoMibStatusArray (%d oids)", + $tac - $tic, scalar(keys %{$response})); + $session->close; + map { $response->{$_} =~ s/^\s+//; $response->{$_} =~ s/\s+$//; } + keys %$response; + $self->{rawdata} = $response; + } + } + return $self->{runtime}->{plugin}->check_messages(); +} + +sub set_serial { + my $self = shift; + my $snmpwalk = $self->{rawdata}; + my @serials = (); + my @models = (); + my @fws = (); + my $cpqSsBackplaneEntry = '1.3.6.1.4.1.232.8.2.2.6.1'; + my $cpqSsBackplaneFWRev = '1.3.6.1.4.1.232.8.2.2.6.1.3'; + my $cpqSsBackplaneModel = '1.3.6.1.4.1.232.8.2.2.6.1.9'; + my $cpqSsBackplaneSerialNumber = '1.3.6.1.4.1.232.8.2.2.6.1.13'; + # INDEX { cpqSsBackplaneChassisIndex, cpqSsBackplaneIndex } + my @indexes = SNMP::Utils::get_indices($snmpwalk, + $cpqSsBackplaneEntry); + foreach (@indexes) { + my($idx1, $idx2) = ($_->[0], $_->[1]); + my $fw = SNMP::Utils::get_object($snmpwalk, + $cpqSsBackplaneFWRev, $idx1, $idx2); + my $model = SNMP::Utils::get_object($snmpwalk, + $cpqSsBackplaneModel, $idx1, $idx2); + my $serial = SNMP::Utils::get_object($snmpwalk, + $cpqSsBackplaneSerialNumber, $idx1, $idx2); + push(@serials, $serial); + push(@models, $model); + push(@fws, $fw); + } + + $self->{serial} = join('/', @serials); + $self->{product} = join('/', @models); + $self->{romversion} = join('/', @fws); + $self->{runtime}->{product} = $self->{product}; +} + + + + + + + + + + + + + + + + + + + +1; |