index 11bc3cdcacc9cd7c5629b63fa90bcbedc5b09863..77e75f6d0aa787890944d0a6a1bc19b219689c0b 100644 (file)
# WARNING md0 status=[UUU_U], recovery=46.4%, finish=123.0min
use strict;
-use lib utils.pm;
+use lib "/usr/local/nagios/libexec";
use utils qw(%ERRORS);
# die with an error if we're not on Linux
my $nextdev;
if(defined $ARGV[0]) { $nextdev = shift; }
-else { $nextdev = "md[0-9]"; }
+else { $nextdev = "md[0-9]+"; }
my $code = "UNKNOWN";
my $msg = "";
} elsif (/recovery = (.*?)\s/) {
$recovery{$device} = $1;
($finish{$device}) = /finish=(.*?min)/;
+ $device=undef;
} elsif (/^\s*$/) {
$device=undef;
}
} elsif (/^($nextdev)\s*:/) {
$device=$1;
$devices{$device}=$device;
- if (/active/) {
+ if (/\sactive/) {
+ $status{$device} = ''; # Shall be filled later if available
$active{$device} = 1;
}
}
}
foreach my $k (sort keys %devices){
- if ($status{$k} =~ /_/) {
+ if (!exists($status{$k})) {
+ $msg .= sprintf " %s inactive with no status information.",
+ $devices{$k};
+ $code = max_state($code, "CRITICAL");
+ } elsif ($status{$k} =~ /_/) {
if (defined $recovery{$k}) {
$msg .= sprintf " %s status=%s, recovery=%s, finish=%s.",
$devices{$k}, $status{$k}, $recovery{$k}, $finish{$k};
$code = max_state($code, "OK");
} else {
if ($active{$k}) {
- $msg .= sprintf " %s active with no status information.\n",
+ $msg .= sprintf " %s active with no status information.",
$devices{$k};
$code = max_state($code, "OK");
} else {
+ # This should't run anymore, but is left as a catch-all
$msg .= sprintf " %s does not exist.\n", $devices{$k};
$code = max_state($code, "CRITICAL");
}