packages: nagios-plugin-check_raid/check_raid - without /bin/sh lsraid, meg...

glen glen at pld-linux.org
Wed Sep 9 18:19:06 CEST 2009


Author: glen                         Date: Wed Sep  9 16:19:06 2009 GMT
Module: packages                      Tag: HEAD
---- Log message:
- without /bin/sh lsraid, megaide (unchecked)

---- Files affected:
packages/nagios-plugin-check_raid:
   check_raid (1.13 -> 1.14) 

---- Diffs:

================================================================
Index: packages/nagios-plugin-check_raid/check_raid
diff -u packages/nagios-plugin-check_raid/check_raid:1.13 packages/nagios-plugin-check_raid/check_raid:1.14
--- packages/nagios-plugin-check_raid/check_raid:1.13	Wed Sep  9 18:15:36 2009
+++ packages/nagios-plugin-check_raid/check_raid	Wed Sep  9 18:19:01 2009
@@ -89,19 +89,19 @@
 	close METASTAT;
 }
 sub check_megaide {
-	my($f,$l);
-	my($s,$n);
-	my($CMD);
-
-	foreach $f ( glob('/proc/megaide/*/status') ) {
-		if( -r $f ) { $CMD = "<$f"; }
-		else { $CMD = "$sudo cat $f |"; }
-		open MEGAIDE,$CMD or next;
-		while( $l = <MEGAIDE> ) {
-			if( $l =~ /Status\s*:\s*(\S+).*Logical Drive.*:\s*(\d+)/i ) {
-				($s,$n)=($1,$2);
-				next if(!valid($n));
-				if($s ne 'ONLINE') {
+	my $fh;
+	foreach my $f (glob('/proc/megaide/*/status')) {
+		if (-r $f) {
+			open $fh, '<', $f or next;
+	   	} else {
+		   	my @CMD = ('cat', $f);
+			unshift(@CMD, $sudo) if $> and $sudo;
+			open($fh , '-|', @CMD) or next;
+	   	}
+		while (<$fh>) {
+			if (my($s, $n) = /Status\s*:\s*(\S+).*Logical Drive.*:\s*(\d+)/i) {
+				next unless valid($n);
+				if ($s ne 'ONLINE') {
 					$status = $ERRORS{CRITICAL};
 					$message .= "Megaide:$n:$s ";
 				} else {
@@ -110,7 +110,7 @@
 				last;
 			}
 		}
-		close MEGAIDE;
+		close $fh;
 	}
 }
 sub check_mdstat {
@@ -136,24 +136,27 @@
 	my($l);
 	my($s,$n,$f);
 
-	my $CMD = "$lsraid -A -p";
-	$CMD = "$sudo $CMD" if $> and $sudo;
+	my @CMD = ($lsraid, '-A', '-p');
+	unshift(@CMD, $sudo) if $> and $sudo;
 
-	open LSRAID,"$CMD 2>/dev/null |" or return;
-	while( $l = <LSRAID> ) {
-		chomp $l;
-		if( $l =~ /\/dev\/(\S+) \S+ (\S+)/ ) {
-			($n,$s) = ($1,$2);
-			next if(!valid($n));
-			if($s =~ /good|online/ ) { # no worries
-			} elsif($s =~ /sync/ ) {
-				$status = $ERRORS{WARNING} if(!$status);
-			} else { $status = $ERRORS{CRITICAL}; }
+	open(my $fh , '-|', @CMD) or return;
+	while (<$fh>) {
+		chomp;
+		if (my($n, $s) = m{/dev/(\S+) \S+ (\S+)}) {
+			next unless valid($n);
+			if ($s =~ /good|online/) {
+			   	# no worries
+			} elsif ($s =~ /sync/) {
+				$status = $ERRORS{WARNING} unless $status;
+			} else {
+			   	$status = $ERRORS{CRITICAL};
+		   	}
 			$message .= "md:$n:$s ";
 		}
 	}
-	close LSRAID;
+	close $fh;
 }
+
 sub check_vg {
 	my(@vg, $vg);
 	my($l, at f);
================================================================

---- CVS-web:
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/nagios-plugin-check_raid/check_raid?r1=1.13&r2=1.14&f=u



More information about the pld-cvs-commit mailing list