X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=contrib%2Fcheck_linux_raid.pl;h=77e75f6d0aa787890944d0a6a1bc19b219689c0b;hb=1a5a83bb82c35d888229fe9f815fbc663c0f4d3c;hp=11bc3cdcacc9cd7c5629b63fa90bcbedc5b09863;hpb=3987202794f5b34c78aad3b4213c715ed76004eb;p=nagiosplug.git diff --git a/contrib/check_linux_raid.pl b/contrib/check_linux_raid.pl index 11bc3cd..77e75f6 100644 --- a/contrib/check_linux_raid.pl +++ b/contrib/check_linux_raid.pl @@ -23,7 +23,7 @@ # 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 @@ -44,7 +44,7 @@ sub max_state($$){ my $nextdev; if(defined $ARGV[0]) { $nextdev = shift; } -else { $nextdev = "md[0-9]"; } +else { $nextdev = "md[0-9]+"; } my $code = "UNKNOWN"; my $msg = ""; @@ -64,13 +64,15 @@ while(defined $nextdev){ } 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; } } @@ -79,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}; @@ -93,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"); }