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