Fixes
This commit is contained in:
parent
75bad78233
commit
d97b8623eb
1 changed files with 23 additions and 11 deletions
|
@ -13,12 +13,19 @@ if [ $# -lt 1 -o -z "$1" ]; then
|
|||
echo "ERROR: pass raid name as argument"
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
INPUT="/proc/mdstat"
|
||||
DEBUG=false
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case $1 in
|
||||
-r|--raid) TARGET_RAID_NAME="$2";;
|
||||
-i|--input) INPUT="$2";;
|
||||
-d|--debug) DEBUG=true;;
|
||||
-?|--help)
|
||||
echo "Check /proc/mdstat. Arguments:"
|
||||
echo "--raid NAME: Raid name, e.g. md0"
|
||||
echo "--input FILE: Read from this file. Default: /proc/mdstat"
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
|
@ -30,8 +37,14 @@ if [ -z "$TARGET_RAID_NAME" ]; then
|
|||
fi
|
||||
|
||||
function log {
|
||||
local x=
|
||||
#echo " > $@"
|
||||
if $DEBUG; then
|
||||
echo " > $@"
|
||||
fi
|
||||
}
|
||||
function logLine {
|
||||
if $DEBUG; then
|
||||
echo " : $@"
|
||||
fi
|
||||
}
|
||||
|
||||
CURRENT_RAID= # string
|
||||
|
@ -82,7 +95,7 @@ function parseConfigStatusLine {
|
|||
# This function is called for 1st line after the raid definition line
|
||||
# It parses the SIZE_IN_BLOCKS
|
||||
local line="$1"
|
||||
line="${line:6}" # trim left
|
||||
line=$(echo $line) # trim left
|
||||
SIZE_IN_BLOCKS=${line%% *}
|
||||
|
||||
local lastWord=${line##* } # Get the last word
|
||||
|
@ -141,7 +154,7 @@ function printOutputAndExit {
|
|||
if [ -n "$RECOVERY_PROGRESS" ]; then
|
||||
result="WARNING"
|
||||
if [ -n "$info" ]; then info="$info. "; fi
|
||||
info="${info}Recovering: $RECOVERY_PROGRESS $RECOVERY_INFO"
|
||||
info="${info}Recovering: progress=$RECOVERY_PROGRESS% $RECOVERY_INFO"
|
||||
fi
|
||||
|
||||
if [ "$STATE" != "active" -a "$STATE" != "started" ]; then
|
||||
|
@ -153,7 +166,7 @@ function printOutputAndExit {
|
|||
if [ $BAD_DEVICES -gt 0 ]; then
|
||||
result="CRITICAL"
|
||||
if [ -n "$info" ]; then info="$info. "; fi
|
||||
info="${info}Missing $NUM_DEVICES devices"
|
||||
info="${info}Missing $BAD_DEVICES of $NUM_DEVICES devices"
|
||||
fi
|
||||
|
||||
echo -n "$result"
|
||||
|
@ -167,7 +180,7 @@ function printOutputAndExit {
|
|||
echo -n " 'num devices'=$NUM_DEVICES"
|
||||
echo -n " 'num bad devices'=$BAD_DEVICES;;1;0;$NUM_DEVICES"
|
||||
if [ -n "$RECOVERY_PROGRESS" ]; then
|
||||
echo -n " 'recovery progress'=$RECOVERY_PROGRESS%;0.1;;0;100"
|
||||
echo -n " 'recovery progress'=$RECOVERY_PROGRESS%;0;;0;100"
|
||||
fi
|
||||
echo
|
||||
|
||||
|
@ -182,7 +195,7 @@ function printOutputAndExit {
|
|||
HAD_TARGET_RAID=0
|
||||
|
||||
while IFS= read -r line; do
|
||||
#echo " : $line"
|
||||
logLine "$line"
|
||||
|
||||
setCurrentRaid "$line"
|
||||
|
||||
|
@ -190,15 +203,14 @@ while IFS= read -r line; do
|
|||
case $HAD_TARGET_RAID in
|
||||
0) setStateAndDevicesAndLevel "$line";;
|
||||
1) parseConfigStatusLine "$line";;
|
||||
2) parseBitmapOrRecoveryLine "$line";;
|
||||
3) parseRecoveryLine "$line";;
|
||||
*) parseBitmapOrRecoveryLine "$line";;
|
||||
esac
|
||||
HAD_TARGET_RAID=$(($HAD_TARGET_RAID+1))
|
||||
elif [ $HAD_TARGET_RAID -gt 0 ]; then
|
||||
printOutputAndExit
|
||||
fi
|
||||
done < /proc/mdstat
|
||||
done < $INPUT
|
||||
|
||||
echo "CRITICAL: RAID $TARGET_RAID_NAME not found in mdstat"
|
||||
echo "CRITICAL: RAID $TARGET_RAID_NAME not found in $(basename $INPUT)"
|
||||
exit 2
|
||||
|
||||
|
|
Loading…
Reference in a new issue