Code

Patch for check_linux_raid with on linear/raid0 arrays
authorThomas Guyot-Sionnest <dermoth@aei.ca>
Wed, 6 Oct 2010 03:19:03 +0000 (23:19 -0400)
committerThomas Guyot-Sionnest <dermoth@aei.ca>
Wed, 6 Oct 2010 03:19:03 +0000 (23:19 -0400)
Fixes bug #3049988, Debian bug #579049

contrib/check_linux_raid.pl

index d2e5b4632d4b2b5631f38e45605388a74886efc1..77e75f6d0aa787890944d0a6a1bc19b219689c0b 100644 (file)
@@ -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");
                }