index 85d5dc4a8da5c6a697765ad9773bb8d76031e146..d2e5b4632d4b2b5631f38e45605388a74886efc1 100644 (file)
#
# Usage: check_raid [raid-name]
# Example: check_raid md0
-# WARNING md0 status=[UUU_U], recovery=46.4%, finish=123.0min
+# 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 = "";
if (defined $device) {
if (/(\[[_U]+\])/) {
$status{$device} = $1;
- $device = undef;
} elsif (/recovery = (.*?)\s/) {
$recovery{$device} = $1;
($finish{$device}) = /finish=(.*?min)/;
- $device = undef;
+ $device=undef;
+ } elsif (/^\s*$/) {
+ $device=undef;
}
- } else {
- if (/^($nextdev)\s*:/) {
- $device=$1;
- $devices{$device}=$device;
- if (/active/) {
- $active{$device} = 1;
- }
+ } elsif (/^($nextdev)\s*:/) {
+ $device=$1;
+ $devices{$device}=$device;
+ if (/active/) {
+ $active{$device} = 1;
}
}
}
foreach my $k (sort keys %devices){
if ($status{$k} =~ /_/) {
- if ($recovery{$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, "WARNING");