First commit

This commit is contained in:
2018-03-13 08:04:28 +01:00
commit 196a7d2af6
32 changed files with 33836 additions and 0 deletions

219
syno/script.sh Executable file
View File

@@ -0,0 +1,219 @@
#!/bin/bash
# check_snmp_disksize
# Description : Check the disk size of Windows server and Unix server
# Version : 1.6
# Author : Yoann LAMY
# Licence : GPLv2
# MacBook-Pro:syno bruno$ ./script.sh -H localhost -d /BOOTCAMP
# Commands
CMD_BASENAME="/usr/bin/basename"
CMD_SNMPGET="/usr/bin/snmpget"
CMD_SNMPWALK="/usr/bin/snmpwalk"
CMD_BC="/usr/bin/bc"
CMD_AWK="/usr/bin/awk"
CMD_GREP="/usr/bin/grep"
CMD_EXPR="/bin/expr"
# Script name
SCRIPTNAME=`$CMD_BASENAME $0`
# Version
VERSION="1.6"
# Plugin return codes
STATE_OK=0
STATE_WARNING=1
STATE_CRITICAL=2
STATE_UNKNOWN=3
# 'hrStorageDescr', HOST-RESOURCES-MIB
OID_DESC=".1.3.6.1.2.1.25.2.3.1.3"
# 'hrStorageAllocationUnits', HOST-RESOURCES-MIB
OID_UNIT=".1.3.6.1.2.1.25.2.3.1.4"
# 'hrStorageSize', HOST-RESOURCES-MIB
OID_TOTAL=".1.3.6.1.2.1.25.2.3.1.5"
# 'hrStorageUsed', HOST-RESOURCES-MIB
OID_USED=".1.3.6.1.2.1.25.2.3.1.6"
# Default variables
DESCRIPTION="Unknown"
STATE=$STATE_UNKNOWN
CODE=0
# Default options
COMMUNITY="public"
HOSTNAME="127.0.0.1"
DISK=""
WARNING=20
CRITICAL=10
# Option processing
print_usage() {
echo "Usage: ./check_snmp_disksize -H 127.0.0.1 -C public -d C: -w 80 -c 90"
echo " $SCRIPTNAME -H ADDRESS"
echo " $SCRIPTNAME -C STRING"
echo " $SCRIPTNAME -d STRING"
echo " $SCRIPTNAME -w INTEGER"
echo " $SCRIPTNAME -c INTEGER"
echo " $SCRIPTNAME -h"
echo " $SCRIPTNAME -V"
}
print_version() {
echo $SCRIPTNAME version $VERSION
echo ""
echo "This nagios plugins comes with ABSOLUTELY NO WARRANTY."
echo "You may redistribute copies of the plugins under the terms of the GNU General Public License v2."
}
print_help() {
print_version
echo ""
print_usage
echo ""
echo "Check the disk size of Windows server and Unix server"
echo ""
echo "-H ADDRESS"
echo " Name or IP address of host (default: 127.0.0.1)"
echo "-C STRING"
echo " Community name for the host's SNMP agent (default: public)"
echo "-d STRING"
echo " Drive letter (C:) or mount point (/home)"
echo "-w INTEGER"
echo " Warning level for size in percent (default: 0)"
echo "-c INTEGER"
echo " Critical level for size in percent (default: 0)"
echo "-h"
echo " Print this help screen"
echo "-V"
echo " Print version and license information"
echo ""
echo ""
echo "This plugin uses the 'snmpget' command and the 'snmpwalk' command included with the NET-SNMP package."
echo "This plugin support performance data output."
echo "If the percentage of the warning and critical levels are set 0, then the script returns a OK state."
}
while getopts H:C:d:w:c:hV OPT
do
case $OPT in
H) HOSTNAME="$OPTARG" ;;
C) COMMUNITY="$OPTARG" ;;
d) DISK="$OPTARG" ;;
w) WARNING=$OPTARG ;;
c) CRITICAL=$OPTARG ;;
h)
print_help
exit $STATE_UNKNOWN
;;
V)
print_version
exit $STATE_UNKNOWN
;;
esac
done
# Plugin processing
if [ "${DISK: 0:1}" != "/" ]; then
if [ "${DISK: -1}" != ":" ]; then
DISK="${DISK}:"
fi
fi
size_convert() {
if [ $VALUE -ge 1099511627776 ]; then
VALUE=`echo "scale=2 ; ( ( ( $VALUE / 1024 ) / 1024 ) / 1024 ) / 1024" | $CMD_BC`
VALUE="$VALUE To"
elif [ $VALUE -ge 1073741824 ]; then
VALUE=`echo "scale=2 ; ( ( $VALUE / 1024 ) / 1024 ) / 1024" | $CMD_BC`
VALUE="$VALUE Go"
elif [ $VALUE -ge 1048576 ]; then
VALUE=`echo "scale=2 ; ( $VALUE / 1024 ) / 1024" | $CMD_BC`
VALUE="$VALUE Mo"
else
VALUE=`echo "scale=2 ; $VALUE / 1024" | $CMD_BC`
VALUE="$VALUE Octets"
fi
}
size_fix() {
if [ ${VALUE: 0:1} = "-" ]; then
VALUE=`$CMD_EXPR 4294967294 - \( 0 - $VALUE \)`
fi
}
DISK_DESC=`$CMD_SNMPWALK -t 2 -r 2 -v 1 -c $COMMUNITY $HOSTNAME "$OID_DESC" | $CMD_GREP "$DISK"`
#DISK_DESC=`$CMD_SNMPWALK -t 2 -r 2 -v 1 -c $COMMUNITY $HOSTNAME "$OID_DESC" | $CMD_GREP "DRIVE : $DISK"`
#DISK_DESC=`$CMD_SNMPWALK -t 2 -r 2 -v 1 -c $COMMUNITY $HOSTNAME "$OID_DESC"`
echo $DISK_DESC
if [ -n "$DISK_DESC" ]; then
DISK_ID=`echo $DISK_DESC | $CMD_AWK '{print $1}' | $CMD_AWK -F "." '{print $NF}'`
if [ ${DISK: 0:1} != "/" ]; then
DISK_LABEL=`echo $DISK_DESC | $CMD_AWK '{ print $5 }' | $CMD_AWK -F ':' '{ print $2 }'`
fi
DISK_UNIT=`$CMD_SNMPGET -t 2 -r 2 -v 1 -c $COMMUNITY -OvqU $HOSTNAME "${OID_UNIT}.${DISK_ID}"`
DISK_TOTAL=`$CMD_SNMPGET -t 2 -r 2 -v 1 -c $COMMUNITY -OvqU $HOSTNAME "${OID_TOTAL}.${DISK_ID}"`
DISK_USED=`$CMD_SNMPGET -t 2 -r 2 -v 1 -c $COMMUNITY -OvqU $HOSTNAME "${OID_USED}.${DISK_ID}"`
if [ $DISK_TOTAL != 0 ]; then
VALUE=$DISK_TOTAL
echo "VALUE (DISK_TOTAL): $VALUE"
size_fix
DISK_TOTAL=$VALUE
echo "DISK_TOTAL: $DISK_TOTAL"
VALUE=$DISK_USED
echo "VALUE (DISK_USED): $VALUE"
size_fix
DISK_USED=$VALUE
echo "DISK_USED: $DISK_USED"
echo "DISK_UNIT: $DISK_UNIT"
DISK_TOTAL=`$CMD_EXPR $DISK_TOTAL \* \( $DISK_UNIT \)`
DISK_USED=`$CMD_EXPR $DISK_USED \* \( $DISK_UNIT \)`
echo "DISK_TOTAL: $DISK_TOTAL"
echo "DISK_USED: $DISK_USED"
PERFDATA_WARNING=0
PERFDATA_CRITICAL=0
if [ $WARNING != 0 ] || [ $CRITICAL != 0 ]; then
DISK_USED_POURCENT=`$CMD_EXPR \( $DISK_USED \* 100 \) / $DISK_TOTAL`
PERFDATA_WARNING=`$CMD_EXPR \( $DISK_TOTAL \* $WARNING \) / 100`
PERFDATA_CRITICAL=`$CMD_EXPR \( $DISK_TOTAL \* $CRITICAL \) / 100`
if [ $DISK_USED_POURCENT -gt $CRITICAL ] && [ $CRITICAL != 0 ]; then
STATE=$STATE_CRITICAL
elif [ $DISK_USED_POURCENT -gt $WARNING ] && [ $WARNING != 0 ]; then
STATE=$STATE_WARNING
else
STATE=$STATE_OK
fi
else
STATE=$STATE_OK
fi
VALUE=$DISK_TOTAL
echo "VALUE (DISK_TOTAL): $VALUE"
size_convert
DISK_TOTAL_FORMAT=$VALUE
echo "DISK_TOTAL_FORMAT: $DISK_TOTAL_FORMAT"
VALUE=$DISK_USED
size_convert
DISK_USED_FORMAT=$VALUE
DESCRIPTION="Disk/partition usage '$DISK' $DISK_LABEL : $DISK_USED_FORMAT utilise sur $DISK_TOTAL_FORMAT (${DISK_USED_POURCENT}%) | total=${DISK_TOTAL}B;$PERFDATA_WARNING;$PERFDATA_CRITICAL;0 used=${DISK_USED}B;0;0;0"
fi
fi
echo $DESCRIPTION
exit $STATE