-if [ `uname` = "Darwin" ]; then
- SERVICE="Disks_p"
- offset=`LC_ALL=C grep -b "BOOT_TIME:" /var/log/system.log \
- | tail -n 1 | cut -d':' -f1`
- if [ -n "$offset" ]; then
- # reboot detected in system.log
- error=`LC_ALL=C tail -c "+$offset" /var/log/system.log \
- | grep -i "I/O" | grep -i error | grep -v nagcollect | tail -n 1`
- else
- # no reboot detected in system.log
- error=`LC_ALL=C grep -i "I/O" /var/log/system.log \
- | grep -i error | grep -v nagcollect | tail -n 1`
- fi
- if [ -n "$error" ]; then
- msg=`echo $error | cut -d' ' -f6-`
- STATUS=2
- TEXT="ERROR - $msg"
- else
- STATUS=0
- TEXT="OK - No I/O errors detected."
- fi
+# Check free space on local filesystems
+
+SERVICE="DiskUsage_p"
+STATUS=4
+
+error=
+warning=
+
+TEMP="/tmp/$$.tmp"
+
+df -l -P -m | grep "^/" >"$TEMP"
+
+while read x; do
+ fs=`echo $x | cut -d' ' -f1`
+ blocks=`echo $x | cut -d' ' -f2`
+ used=`echo $x | cut -d' ' -f3`
+ free=`echo $x | cut -d' ' -f4`
+ capacity=`echo $x | cut -d' ' -f5 | sed 's/%//'`
+ declare -i capacity2=100-$capacity
+ fs=`echo $x | cut -d' ' -f6`
+ [ -n "$TEXT" ] && TEXT="$TEXT "
+ TEXT="${TEXT}${fs} ${free} MB (${capacity2}%);"
+ [ "$free" -lt 2000 -a $capacity2 -lt 5 ] && error=1
+ [ "$free" -lt 5000 -a $capacity2 -lt 10 ] && warning=1
+done < "$TEMP"
+
+if [ -n "$error" ]; then
+ STATUS=2
+ TEXT="Disk usage is CRITICAL, free space: $TEXT"
+elif [ -n "$warning" ]; then
+ STATUS=1
+ TEXT="Disk usage is WARNING, free space: $TEXT"
+else
+ STATUS=0
+ TEXT="Disk usage is OK, free space: $TEXT"