Build precise queries to find exactly what you need
Press ESC to close
Some customizing für usage with a Windows Server 2008 R2 (SNMP feature installed):
if [ $# -lt 2 ]; then echo “check_dhcp_all_pools” echo “Usage: $0 ” echo “Example: WARN at 50 & CRIT at 30 will WARN you when the percentage of free DHCP addresses” echo “is less than or equal to 50% of available addresses and alarm CRITICAL whe the percentage” echo “of free addresses is less than or equal to 30% of available addresses.” exit 3 fi
IP=”$1″ COMMUNITY=”$2″ WARN=”$3″ CRIT=”$4″ RET=0 RETW=0 RETC=0 Z=0 STAT=( ) i=0 RESULT=””
if [ ${#WARN} -lt 1 ] then WARN=20 fi
if [ ${#CRIT} -lt 1 ] then CRIT=10 fi
#Get the list of all scopes/subnets from the server: TEMP=($( snmpwalk -v2c -c $COMMUNITY $IP .1.3.6.1.4.1.311.1.3.2.1.1.1 | cut -d ” ” -f4 ))
#Traverse array and get usage information per scope: for i in ${!TEMP[*]};do POOL=${TEMP[$i]} FREEOID=”.1.3.6.1.4.1.311.1.3.2.1.1.3.$POOL” USEDOID=”.1.3.6.1.4.1.311.1.3.2.1.1.2.$POOL” SNMP_RESULT=`snmpget -v 2c -c $COMMUNITY $IP $FREEOID` FREE=`echo $SNMP_RESULT|cut -d ” ” -f4` SNMP_RESULT=`snmpget -v 2c -c $COMMUNITY $IP $USEDOID` USED=`echo $SNMP_RESULT|cut -d ” ” -f4` MAX=`echo “$FREE+$USED” |bc` if [ “$MAX” -ne 0 ]; then PERCFREE=`echo “$FREE*100/$MAX” |bc` PERCUSED=`echo “$USED*100/$MAX” |bc` #Debug: echo “FREE: $FREE USED: $USED MAX: $MAX PERC: $PERCFREE,$PERCUSED” if [ “$PERCFREE” -le “$WARN” -a “$PERCFREE” -gt “$CRIT” ]; then let “RETW += 1” STAT=( “${STAT[@]}” “Warning: $POOL – $PERCFREE% free – $PERCUSED% used – $USED/$MAX – Threshold is $WARN% freen” ) elif [ “$PERCFREE” -le “$CRIT” ]; then let “RETC += 1” STAT=( “${STAT[@]}” “Critical: $POOL – $PERCFREE% free – $PERCUSED% used – $USED/$MAX – Threshold is $CRIT% freen” ) else STAT=( “${STAT[@]}” “OK: $POOL – $PERCUSED% used – $USED/$MAXn” ) fi # elif [ “$MAX” -eq 0 ]; then #Debug for detecting 100% excluded ranges (reservations only): # STAT=( “${STAT[@]}” “OK: $POOL Nothing used, could be excluded” ) fi
# Performance-Data PERFDATA=”${PERFDATA} | ‘Scope Usage’ $POOL=$PERCUSED%;$WARN;$CRIT;0;$MAX” # PERFDATA=”${PERFDATA} | $POOL OK – Usage: $PERCUSED% ($FREE Addresses of $MAX in pool free) n”
done
#Evaluate return code:
if [ “$RETC” -eq 0 -a “$RETW” -eq 0 ]; then RET=0 RESULT=”${RESULT} OK: All scopes finenn” elif [ “$RETW” -ne 0 -a “$RETC” -eq 0 ]; then RET=1 RESULT=”${RESULT} Warning: One or more scopes is nearing capacitynn” elif [ “$RETC” -ne 0 ]; then RET=2 RESULT=”${RESULT} Critical: One or more scopes is nearing capacitynn” fi
###### Second loop for long service output:
for i in ${!STAT[*]};do RESULT=”${RESULT} ${STAT[$i]}” done
#Echo the total amount of scopes available vs those shown: RESULT=”${RESULT} nShowing ${#STAT[@]} of ${#TEMP[@]} configured scopes”
echo “$RESULT|$PERFDATA”
exit $RET
We’ve completely redesigned the world’s largest repository of Nagios plugins and monitoring tools. Join thousands of users sharing monitoring solutions for servers, applications, and everything in between.
Due to our redesign, all existing accounts require a password reset to access your account again.
Ready to explore 6,100+ projects and contribute to the community?
Reset Password Create Account
Happy Monitoring!