X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=dsa-nagios-checks%2Fchecks%2Fdsa-check-raid-mpt;h=6cf926143b1439071ffee107ef9af94f8114efa9;hb=05d5f02559ac58df0dcea59590183cf23ef004ce;hp=f4f34078679b15b0d3e774eb48ee820eccd4af62;hpb=42e99da9d896a33803e763c746e9a103183b6b34;p=mirror%2Fdsa-nagios.git diff --git a/dsa-nagios-checks/checks/dsa-check-raid-mpt b/dsa-nagios-checks/checks/dsa-check-raid-mpt index f4f3407..6cf9261 100755 --- a/dsa-nagios-checks/checks/dsa-check-raid-mpt +++ b/dsa-nagios-checks/checks/dsa-check-raid-mpt @@ -1,6 +1,25 @@ #!/usr/bin/perl -Tw # Copyright (C) 2008 Peter Palfrader +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to +# the following conditions: +# +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # Need to allow /usr/local/bin/tw_cli info c0 u0 status in sudoers: # @@ -36,17 +55,15 @@ my $command = "sudo $MPT_STATUS -s"; open (MPT, "$command|") or die ("Cannot run $command: $!\n"); my @tw=; 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 +83,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;