#!/bin/bash

if [ "$1" == "-h" ]; then
        echo "Nagios check Disk Utility version 2!!!";
        echo " ----David Foust 2007";
        exit 0;
fi

if [ -n "$1" ]; then
        WARNING_SIZE=$1;
fi
if [ -n "$2" ]; then
        CRITICAL_SIZE=$2;
fi
if [ -n "$3" ]; then
        DIR_NAME=$3;
fi
if [ -n "$4" ]; then
        SAMPLE_TIME=$4;
else
        SAMPLE_TIME=10;
fi

# ---- GET DEVICE NAME -----
DEVICE_NAME=`df -h $DIR_NAME | sed -e 's/s6//g' | sed -e 's/s4//g' | sed -e 's/ptcset//g' | sed -e 's/s5//g' | sed -e 's/\/dev//g' | sed -e 's/\/md//g' | sed -e 's/\/dsk\///g' | sed -e 's/\/dbset//g' | sed -e 's/s0//g' | awk {'print $1'} | tail -1`

# ------ GET COUNTER VALUES ------
RESULT=`iostat -nxI | grep " $DEVICE_NAME"`

READS=`echo $RESULT | awk '{print $1}'`
READS=`echo "scale=0 ; $READS * 1000 / 1" | bc`

WRITES=`echo $RESULT | awk '{print $2}'`
WRITES=`echo "scale=0 ; $WRITES * 1000 / 1" | bc`

BRC=`echo $RESULT | awk '{print $3}'`
BRC=`echo "scale=0 ; $BRC * 1000 / 1" | bc`

BWC=`echo $RESULT | awk '{print $4}'`
BWC=`echo "scale=0 ; $BWC * 1000 / 1" | bc`

# ------ GET x SECOND SAMPLE FOR STATS ------
RESULT=`iostat -nxM $SAMPLE_TIME 2 | grep " $DEVICE_NAME" | tail -1`

WSVC_TR=`echo $RESULT | awk '{print $7}'`
ASVC_TR=`echo $RESULT | awk '{print $8}'`
W_PC=`echo $RESULT | awk '{print $9}'`
B_PC=`echo $RESULT | awk '{print $10}'`

# ----- GET DISK SPACE STATS -----
RESULT=`df -hb $DIR_NAME | tail -1`
USEDSPACEPER=`echo $RESULT | awk '{print substr($5,1,length($5)-1)}'`
FREESPACEPER=$((100-USEDSPACEPER));

TOTALSPACE=`echo $RESULT | awk '{print $2}'`
USEDSPACE=`echo $RESULT | awk '{print $3}'`
FREESPACE=`echo $RESULT | awk '{print $4}'`
MOUNT=`echo $RESULT | awk '{print $1}'`

RESULT="$DIR_NAME - total: $TOTALSPACE - used: $USEDSPACE ($USEDSPACEPER%) - free $FREESPACE ($FREESPACEPER%) - Statistics: AvgSvcTime: $ASVC_TR WaitTime: $WSVC_TR Wait: $W_PC% Busy: $B_PC% r/s: $READS w/s: $WRITES kr: $BRC kw: $BWC"

if [ -z "$TOTALSPACE" ]; then
        CRITICAL=`echo Mount Problem!`
fi
if [ $USEDSPACEPER -ge $CRITICAL_SIZE ]; then
        CRITICAL=`echo "$CRITICAL Disk Space"`
fi
if [ $USEDSPACEPER -ge $WARNING_SIZE ]; then
        WARNING=`echo "$WARNING Disk Space"`
fi


if [ -n "$CRITICAL" ]; then
        echo "Critical- $CRITICAL. $RESULT";
        exit 2;
fi
if [ -n "$WARNING" ]; then
        echo "Warning- $WARNING. $RESULT";
        exit 1;
fi

echo $RESULT
exit 0;
