# Version and similar info
$NAME = 'check_openmanage';
-$VERSION = '3.5.8-beta1';
+$VERSION = '3.5.8-beta2';
$AUTHOR = 'Trond H. Amundsen';
$CONTACT = 't.h.amundsen@usit.uio.no';
if ($snmp) {
$index = $out->{temperatureProbeIndex} - 1;
$status = $snmp_probestatus{$out->{temperatureProbeStatus}};
- $reading = $out->{temperatureProbeReading} / 10;
$location = $out->{temperatureProbeLocationName};
- $max_crit = $out->{temperatureProbeUpperCriticalThreshold} / 10;
- $max_warn = $out->{temperatureProbeUpperNonCriticalThreshold} / 10;
+ $reading = exists $out->{temperatureProbeReading}
+ ? $out->{temperatureProbeReading} / 10 : '[N/A]';
+ $max_crit = exists $out->{temperatureProbeUpperCriticalThreshold}
+ ? $out->{temperatureProbeUpperCriticalThreshold} / 10 : '[N/A]';
+ $max_warn = exists $out->{temperatureProbeUpperNonCriticalThreshold}
+ ? $out->{temperatureProbeUpperNonCriticalThreshold} / 10 : '[N/A]';
$min_crit = exists $out->{temperatureProbeLowerCriticalThreshold}
? $out->{temperatureProbeLowerCriticalThreshold} / 10 : '[N/A]';
$min_warn = exists $out->{temperatureProbeLowerNonCriticalThreshold}
? $out->{temperatureProbeLowerNonCriticalThreshold} / 10 : '[N/A]';
$type = get_hashval($out->{temperatureProbeType}, \%probe_type);
$discrete = exists $out->{temperatureProbeDiscreteReading}
- ? $out->{temperatureProbeDiscreteReading} : undef;
+ ? $out->{temperatureProbeDiscreteReading} : '[N/A]';
+ # workaround for bad temp probes
+ if ($type eq 'AmbientESM' and $reading !~ m{\A \d+(\.\d+)? \z}xms) {
+ $type = 'Discrete';
+ }
}
else {
$index = $out->{'Index'};
$count{temp}++;
if ($type eq 'Discrete') {
- my $msg = sprintf 'Temperature probe %d (%s): is %s',
+ my $msg = sprintf 'Temperature probe %d [%s] is %s',
$index, $location, $discrete;
my $err = $snmp ? $probestatus2nagios{$status} : $status2nagios{$status};
report('chassis', $msg, $err, $index);
# Fetch OMSA version via SNMP, put in sysinfo hash
#
sub get_snmp_about {
-# my %omsa_oid
-# = (
-# '1.3.6.1.4.1.674.10892.1.100.10.0' => 'systemManagementSoftwareGlobalVersionName',
-# );
-# my $systemManagementSoftwareGroup = '1.3.6.1.4.1.674.10892.1.100';
-#
-# my $result = $snmp_session->get_table(-baseoid => $systemManagementSoftwareGroup);
-# if (defined $result) {
-# foreach my $oid (keys %{ $result }) {
-# if (exists $omsa_oid{$oid} and $omsa_oid{$oid} eq 'systemManagementSoftwareGlobalVersionName') {
-# $sysinfo{om} = ($result->{$oid});
-# }
-# }
-# }
-# else {
-# my $msg = sprintf 'SNMP ERROR getting OMSA info: %s',
-# $snmp_session->error;
-# report('other', $msg, $E_UNKNOWN);
-# }
-
# systemManagementSoftwareGlobalVersionName
my $oid = '1.3.6.1.4.1.674.10892.1.100.10.0';
my $result = $snmp_session->get_request(-varbindlist => [$oid]);
- if (defined $result && exists $result->{$oid} && $result->{$oid} ne q{}) {
- $sysinfo{om} = $result->{$oid};
+ if (defined $result) {
+ $sysinfo{om} = exists $result->{$oid} && $result->{$oid} ne q{}
+ ? $result->{$oid} : 'unknown';
}
else {
- $sysinfo{om} = 'unknown';
+ my $msg = sprintf 'SNMP ERROR: Getting OMSA version failed: %s', $snmp_session->error;
+ report('other', $msg, $E_UNKNOWN);
}
return;
}