#!/bin/sh # # check_solaris_freemem.sh - Check free physical memory for Solaris # # Free memory counted as # pagesize * (system_pages.freemem - system_pages.lotsfree) # # $Id: check_solaris_freemem.sh 63 2010-06-22 12:09:14Z mit $ # (C) Andrey Mitroshin # Released under the GNU General Public License (GPL) # STATE_OK=0 STATE_WARNING=1 STATE_CRITICAL=2 STATE_UNKNOWN=3 STATE_DEPENDENT=4 usage () { printf "\n%s - Check free physical memory in Solaris\n" $0 printf "$Id: check_solaris_freemem.sh 63 2010-06-22 12:09:14Z mit $" printf "\nUsage: %s: -w warn_threshold -c crit_threshold" $0 printf "where warn_threshold and crit_threshold measured in megabytes\n" } if [ x`uname -s` != xSunOS ]; then printf "\n$0: must be run under SunOS\n\n" $0 exit ${STATE_UNKNOWN} fi warn= crit= while getopts w:c: o do case $o in w) warn="$OPTARG" ;; c) crit="$OPTARG" ;; ?) usage exit ${STATE_UNKNOWN} ;; esac done if [ x$warn = x -o x$crit = x ]; then usage exit ${STATE_UNKNOWN} fi lotsfree=`kstat -p unix:0:system_pages:lotsfree | awk '{print $NF}'` freemem=`kstat -p unix:0:system_pages:freemem | awk '{print $NF}'` pagesize=`pagesize` freephys=`echo "$pagesize * ( $freemem - $lotsfree ) / 1024 / 1024" | bc` if [ $freephys -lt $crit ]; then echo "CRITICAL: free $freephys MB" exit ${STATE_CRITICAL} fi if [ $freephys -lt $warn ]; then echo "WARNING: free $freephys MB" exit ${STATE_WARNING} fi echo "OK: free $freephys MB" exit ${STATE_OK}