mpt-status returns non-zero exit code when it found degraded raid arrays. Handle...
authorPeter Palfrader <peter@palfrader.org>
Fri, 7 Aug 2009 10:17:37 +0000 (12:17 +0200)
committerPeter Palfrader <peter@palfrader.org>
Fri, 7 Aug 2009 10:17:37 +0000 (12:17 +0200)
dsa-nagios-checks/checks/dsa-check-raid-mpt
dsa-nagios-checks/debian/changelog

index f4f3407..9f9dc52 100755 (executable)
@@ -32,21 +32,19 @@ unless (-e $MPT_STATUS) {
        exit $UNKNOWN;
 };
 
-my $command = "sudo $MPT_STATUS -s";
+my $command = "$MPT_STATUS -s";
 open (MPT, "$command|") or die ("Cannot run $command: $!\n");
 my @tw=<MPT>;
 close MPT;
-if ($CHILD_ERROR) { # program failed
-       die("$command returned with non-zero exit code: ".($CHILD_ERROR / 256)."\n");
-};
 
+my $command_exitcode = $CHILD_ERROR;
 
 my $exit = $UNKNOWN;
 my $msg = '';
 for my $line (@tw)  {
        chomp $line;
        next if $line =~ /^$/;
-       my ($device, $num, $status) = $line =~ m#^(log_id|vol_id|phys_id)\s+([0-9]+)\s+(.*)$#;
+       my ($device, $num, $status) = $line =~ m/^(log_id|vol_id|phys_id)\s+([0-9]+)\s+(.*)$/;
        unless (defined($device) && defined($num) && defined($status)) {
                print "Cannot parse line '$line'\n";
                exit $UNKNOWN;
@@ -66,5 +64,10 @@ if ($msg eq '') {
        die ("exit is not UNKNOWN but $exit") if ($exit != $UNKNOWN);
 }
 
+if ($command_exitcode && ($exit == $OK || $exit == $UNKNOWN)) {
+       $exit = $UNKNOWN;
+       $msg .= ($msg eq '' ? '' : '; '). "$command returned with non-zero exit code: ".($command_exitcode / 256);
+}
+
 print $msg,"\n";
 exit $exit;
index ab4a08e..ff4fe53 100644 (file)
@@ -1,3 +1,10 @@
+dsa-nagios-checks (81) stable; urgency=low
+
+  * dsa-check-raid-mpt: mpt-status returns non-zero exit code when
+    it found degraded raid arrays.  Handle this correctly.
+
+ -- Peter Palfrader <weasel@debian.org>  Fri, 07 Aug 2009 12:17:22 +0200
+
 dsa-nagios-checks (80) stable; urgency=low
 
   * dsa-check-packages: In the short overview say "obs/loc" instead of