aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Thomas Guyot-Sionnest <dermoth@aei.ca> 2010-10-05 23:19:03 -0400
committerGravatar Thomas Guyot-Sionnest <dermoth@aei.ca> 2010-10-05 23:19:03 -0400
commite30f77864054e54f3c777aee0315f9c13b10957d (patch)
tree8f87eb27734546534135816e270c67116557c293
parentbfe20df4a54f9b173e87cf2b13db0998a6303335 (diff)
downloadmonitoring-plugins-e30f77864054e54f3c777aee0315f9c13b10957d.tar.gz
Patch for check_linux_raid with on linear/raid0 arrays
Fixes bug #3049988, Debian bug #579049
-rw-r--r--contrib/check_linux_raid.pl12
1 files changed, 9 insertions, 3 deletions
diff --git a/contrib/check_linux_raid.pl b/contrib/check_linux_raid.pl
index d2e5b463..77e75f6d 100644
--- a/contrib/check_linux_raid.pl
+++ b/contrib/check_linux_raid.pl
@@ -71,7 +71,8 @@ while(defined $nextdev){
} elsif (/^($nextdev)\s*:/) {
$device=$1;
$devices{$device}=$device;
- if (/active/) {
+ if (/\sactive/) {
+ $status{$device} = ''; # Shall be filled later if available
$active{$device} = 1;
}
}
@@ -80,7 +81,11 @@ while(defined $nextdev){
}
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};
@@ -94,10 +99,11 @@ foreach my $k (sort keys %devices){
$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");
}