packages: nagios-plugin-check_raid/check_raid - blindly implement afacli

glen glen at pld-linux.org
Thu Sep 10 11:10:58 CEST 2009


Author: glen                         Date: Thu Sep 10 09:10:58 2009 GMT
Module: packages                      Tag: HEAD
---- Log message:
- blindly implement afacli

---- Files affected:
packages/nagios-plugin-check_raid:
   check_raid (1.26 -> 1.27) 

---- Diffs:

================================================================
Index: packages/nagios-plugin-check_raid/check_raid
diff -u packages/nagios-plugin-check_raid/check_raid:1.26 packages/nagios-plugin-check_raid/check_raid:1.27
--- packages/nagios-plugin-check_raid/check_raid:1.26	Thu Sep 10 09:50:10 2009
+++ packages/nagios-plugin-check_raid/check_raid	Thu Sep 10 11:10:53 2009
@@ -30,11 +30,11 @@
 # various raids
 my $mpt_status = find_prog('mpt-status');     # LSILogic MPT ServeRAID
 my $aaccli = find_prog('aaccli');             # Adaptec ServeRAID
+my $afacli = find_prog('afacli');             # Adaptec AACRAID
 my $lsraid = find_prog('lsraid');             # Linux, software RAID
 my $metastat = find_prog('metastat');         # Solaris, software RAID
 my $lsvg = find_prog('lsvg');                 # AIX LVM
 my $ipssend = find_prog('ipssend');           # Serveraid IPS
-my $afacli = find_prog('afacli');             # Adaptec RAID
 
 #####################################################################
 sub print_usage () {
@@ -259,7 +259,33 @@
 }
 
 sub check_afacli {
-	$message .= "afacli:not_supported ";
+	my @CMD = $afacli;
+	unshift(@CMD, $sudo) if $> and $sudo;
+
+	use IPC::Open2;
+
+	my ($read, $write);
+	my $pid = open2($read, $write, @CMD) or return;
+	print $write "open afa0\n";
+	print $write "container list /full\n";
+	print $write "exit\n";
+	close $write;
+
+	while (<$read>) {
+		if (my ($dsk, $stat) = /(\d:\d\d?:\d+)\s+\S+:\S+\s+(\S+)/) {
+			next unless valid($dsk);
+			$dsk =~ s/:/\//g;
+			next unless valid($dsk);
+			$message .= "aac:$dsk:$stat ";
+			$status = $ERRORS{CRITICAL} if ($stat eq "Broken");
+			$status = $ERRORS{WARNING} if (!$status and $stat eq "Rebuild");
+			$status = $ERRORS{WARNING} if (!$status and $stat eq "Bld/Vfy");
+			$status = $ERRORS{CRITICAL} if ($stat eq "Missing");
+			$status = $ERRORS{WARNING} if (!$status and $stat eq "Verify");
+			$status = $ERRORS{WARNING} if (!$status and $stat eq "VfyRepl");
+		}
+	}
+	close $read;
 }
 
 sub check_mpt {
@@ -449,17 +475,17 @@
 
 $status = $ERRORS{OK}; $message = '';
 
-check_gdth if -d "/proc/scsi/gdth";               # Linux Gdth RAID
-check_megaide if -d "/proc/megaide";              # MegaIDE RAID controller
-check_mdstat  if -f "/proc/mdstat";               # Linux LVM
-check_mpt     if $mpt_status and -d "/proc/mpt";  # LSILogic MPT ServeRAID
-check_megaraid if -d "/proc/megaraid";            # MegaRAID
-check_aaccli if $aaccli and -d "/proc/scsi/aacraid";         # Adaptec ServeRAID
-check_lsraid  if $lsraid;                         # Linux, software RAID
-check_metastat if $metastat;                      # Solaris, software RAID
-check_vg      if $lsvg;                           # AIX LVM
-check_ips     if $ipssend;                        # Serveraid IPS
-check_afacli  if $afacli;                         # Adaptec RAID
+check_gdth if -d "/proc/scsi/gdth";                     # Linux Gdth RAID
+check_megaide if -d "/proc/megaide";                    # MegaIDE RAID controller
+check_mdstat  if -f "/proc/mdstat";                     # Linux LVM
+check_mpt     if $mpt_status and -d "/proc/mpt";        # LSILogic MPT ServeRAID
+check_megaraid if -d "/proc/megaraid";                  # MegaRAID
+check_aaccli if $aaccli and -d "/proc/scsi/aacraid";    # Adaptec ServeRAID
+check_afacli  if $afacli;                               # Adaptec AACRAID
+check_lsraid  if $lsraid;                               # Linux, software RAID
+check_metastat if $metastat;                            # Solaris, software RAID
+check_vg      if $lsvg;                                 # AIX LVM
+check_ips     if $ipssend;                              # Serveraid IPS
 # Can't do megaRAID controller, it needs X and java (yuck)
 
 if( $message ) {
================================================================

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



More information about the pld-cvs-commit mailing list