Build precise queries to find exactly what you need
Press ESC to close
@Goldie2009
Favorites0
Views
Projects0
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
Reviewed 10 years ago