#! /bin/bash PROGNAME="$(basename "$0")" REVISION="0.1" . "$(dirname "$0")/utils.sh" print_usage() { echo "Usage: $PROGNAME -w -c [] " } print_help() { print_revision $PROGNAME $REVISION echo "" print_usage echo "" cat < /dev/null \ && ! [ "${CRITICAL/\%/}" -ge 0 ] 2> /dev/null; then echo "Critical threshold (${CRITICAL}) is neither number nor percentage!" print_help exit $STATE_UNKNOWN fi if ! [ "${WARNING}" -ge 0 ] 2> /dev/null \ && ! [ "${WARNING/\%/}" -ge 0 ] 2> /dev/null; then echo "Warning threshold (${WARNING}) is neither number nor percentage!" print_help exit $STATE_UNKNOWN fi if [ -n "${ICRITICAL}" ] \ && ! [ "${ICRITICAL}" -ge 0 ] 2> /dev/null \ && ! [ "${ICRITICAL/\%/}" -ge 0 ] 2> /dev/null; then echo "ICritical threshold (${ICRITICAL}) is neither number nor percentage!" print_help exit $STATE_UNKNOWN fi if [ -n "${IWARNING}" ] \ && ! [ "${IWARNING}" -ge 0 ] 2> /dev/null \ && ! [ "${IWARNING/\%/}" -ge 0 ] 2> /dev/null; then echo "IWarning threshold (${IWARNING}) is neither number nor percentage!" print_help exit $STATE_UNKNOWN fi HOST="$1" if [ -n "${REMOTEPATH}" ] ; then CMD="cd ${REMOTEPATH}\ndf\ndf -i" else CMD="df\ndf -i" fi if ! rawout="$(echo -e "${CMD}" | sftp $IDENTITY -b- "${LOGIN}${HOST}" 2>&1)"; then echo "$rawout" exit $STATE_UNKNOWN fi rawout="$(echo "$rawout" | grep -v '^sftp> df' | sed -e 's/[[:space:]]\+/ /g')" || exit $STATE_UNKNOWN # TODO: if one failes, just set UNKNOWN as worst state, not yet exit iout="$(echo "$rawout" | grep -A1 '^\s*Inodes' | tail -n 1)" #|| { [ -n "${IWARNING}" -o -n "${ICIRITCAL}" ] && exit $STATE_UNKNOWN } out="$(echo "$rawout" | grep -A1 '^\s*Size' | tail -n 1)" || exit $STATE_UNKNOWN percentage="$(echo "$out" | cut -d " " -f 6)" percentage=$((100 - ${percentage/\%/})) free="$(($(echo "$out" | cut -d " " -f 4) * 1024))" ifree="$(echo "$iout" | cut -d " " -f 6)" ifree=$((100 - ${ifree/\%/})) details="free space: ${HOST} $((${free} / ${UNITDIV})) ${UNIT} (${percentage}% inode=${ifree}%)" if ( [ "${CRITICAL/\%/}" != "${CRITICAL}" ] && [ "${percentage}" -lt "${CRITICAL/\%/}" ] ) || \ ( [ "${CRITICAL/\%/}" = "${CRITICAL}" ] && [ "${free}" -lt "${CRITICAL}" ] ) || \ ( [ -n "$ICRITICAL" ] && [ "${ifree}" -lt "${ICRITICAL/\%/}" ] ); then echo "DISK CRITICAL - $details" exit $STATE_CRITICAL fi if ( [ "${WARNING/\%/}" != "${WARNING}" ] && [ "${percentage}" -lt "${WARNING/\%/}" ] ) || \ ( [ "${WARNING/\%/}" = "${WARNING}" ] && [ "${free}" -lt "${WARNING}" ] ) || \ ( [ -n "$IWARNING" ] && [ "${ifree}" -lt "${IWARNING/\%/}" ] ); then echo "DISK WARNING - $details" exit $STATE_WARNING fi echo "DISK OK - $details" exit $STATE_OK