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