Compare commits
No commits in common. "a1cd78b7e5a9df339567ddf0d7402990c876731e" and "253e922f991754efb586759fd18ce6649f2cf2e9" have entirely different histories.
a1cd78b7e5
...
253e922f99
@ -50,7 +50,7 @@ GetOptions() {
|
|||||||
warn="$2"
|
warn="$2"
|
||||||
shift 2
|
shift 2
|
||||||
;;
|
;;
|
||||||
-c|--critical)
|
-c|--critital)
|
||||||
crit="$2"
|
crit="$2"
|
||||||
shift 2
|
shift 2
|
||||||
;;
|
;;
|
||||||
|
124
check-md.sh
124
check-md.sh
@ -1,124 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
#
|
|
||||||
#/
|
|
||||||
#/ Usage:
|
|
||||||
#/ check-md.sh --warning=<events> --critical=<events> <md-device>
|
|
||||||
#/
|
|
||||||
#/ Checks the raid-device status
|
|
||||||
#/
|
|
||||||
#/ Options:
|
|
||||||
#/ -w, --warning=<events> The events of when to trigger a warning (comma-separated)
|
|
||||||
#/ -c, --critical=<events> The events of when to trigger a critical warning (comma-separated)
|
|
||||||
#/
|
|
||||||
#/ Possible events
|
|
||||||
#/ - clean
|
|
||||||
#/ - write-pending
|
|
||||||
#/ - active
|
|
||||||
#/ - degraded
|
|
||||||
#/
|
|
||||||
#/ Exit Codes:
|
|
||||||
#/ 0 Everything OK
|
|
||||||
#/ 1 Warning events happened
|
|
||||||
#/ 2 Critical events happened
|
|
||||||
#/ 3 Unknown status
|
|
||||||
#/
|
|
||||||
|
|
||||||
|
|
||||||
Usage() {
|
|
||||||
grep '^#/' "${script_dir}/${script_name}" | sed 's/^#\/\w*//'
|
|
||||||
}
|
|
||||||
|
|
||||||
GetOptions() {
|
|
||||||
# https://stackoverflow.com/a/29754866
|
|
||||||
OPTIONS=w:c:
|
|
||||||
LONGOPTS=warning:,critical:
|
|
||||||
|
|
||||||
# -use ! and PIPESTATUS to get exit code with errexit set
|
|
||||||
# -temporarily store output to be able to check for errors
|
|
||||||
# -activate quoting/enhanced mode (e.g. by writing out “--options”)
|
|
||||||
# -pass arguments only via -- "$@" to separate them correctly
|
|
||||||
! PARSED=$(getopt --options=$OPTIONS --longoptions=$LONGOPTS --name "$0" -- "$@")
|
|
||||||
if [[ ${PIPESTATUS[0]} -ne 0 ]]; then
|
|
||||||
# e.g. return value is 1
|
|
||||||
# then getopt has complained about wrong arguments to stdout
|
|
||||||
Usage
|
|
||||||
exit 2
|
|
||||||
fi
|
|
||||||
|
|
||||||
# read getopt's output this way to handle the quoting right:
|
|
||||||
eval set -- "$PARSED"
|
|
||||||
OLDIFS=$IFS
|
|
||||||
|
|
||||||
# now enjoy the options in order and nicely split until we see --
|
|
||||||
while true; do
|
|
||||||
case "$1" in
|
|
||||||
-w|--warning)
|
|
||||||
IFS=","
|
|
||||||
warn=$(echo $2)
|
|
||||||
IFS=$OLDIFS
|
|
||||||
shift 2
|
|
||||||
;;
|
|
||||||
-c|--critical)
|
|
||||||
IFS=","
|
|
||||||
crit=$(echo $2)
|
|
||||||
IFS=$OLDIFS
|
|
||||||
shift 2
|
|
||||||
;;
|
|
||||||
--)
|
|
||||||
shift
|
|
||||||
break
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "MD UNKNOWN - ${1} is not a valid parameter"
|
|
||||||
exit 3
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
if [ -z ${1+x} ]; then
|
|
||||||
echo "MD UNKNOWN - MD-device not given"
|
|
||||||
exit 3
|
|
||||||
elif [ ! -d /sys/block/${1} ]; then
|
|
||||||
echo "MD UNKNOWN - MD-device is not valid"
|
|
||||||
exit 3
|
|
||||||
else
|
|
||||||
device=${1}
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
LC_NUMERIC="C"
|
|
||||||
warn='active'
|
|
||||||
crit='degraded'
|
|
||||||
device=''
|
|
||||||
script_name=$(basename "${0}")
|
|
||||||
script_dir=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
|
|
||||||
GetOptions "$@"
|
|
||||||
events=()
|
|
||||||
|
|
||||||
degradeddevs=$(cat /sys/block/${device}/md/degraded)
|
|
||||||
msg=()
|
|
||||||
if [[ $degradeddevs > 0 ]]; then
|
|
||||||
actevents+=('degraded')
|
|
||||||
msg+=("$degradeddevs devices degraded")
|
|
||||||
fi
|
|
||||||
state=$(cat /sys/block/${device}/md/array_state)
|
|
||||||
msg+=("Array ${device} is ${state}")
|
|
||||||
actevents+=($state)
|
|
||||||
|
|
||||||
rval=0
|
|
||||||
rmsg="OK"
|
|
||||||
for warnevent in $warn; do
|
|
||||||
if [[ " ${actevents[*]} " =~ " ${warnevent} " ]]; then
|
|
||||||
rval=1
|
|
||||||
rmsg="WARNING"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
for critevent in $crit; do
|
|
||||||
if [[ " ${actevents[*]} " =~ " ${critevent} " ]]; then
|
|
||||||
rval=2
|
|
||||||
rmsg="CRITICAL"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
msgprint=$( (IFS=$'\n'; echo "${msg[*]}") )
|
|
||||||
echo "MD ${rmsg} - ${msgprint}"
|
|
Loading…
Reference in New Issue
Block a user