From eb9ce9a0ac072df0931dc9cec6f96a7f01d06a6f Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Thu, 12 Apr 2012 17:13:23 -0500
Subject: linhes-scripts: add diskspace.sh and cron job to warn user about low
 disk space on /.

---
 abs/core/linhes-scripts/PKGBUILD     | 10 ++++-
 abs/core/linhes-scripts/diskspace    |  2 +
 abs/core/linhes-scripts/diskspace.sh | 81 ++++++++++++++++++++++++++++++++++++
 3 files changed, 91 insertions(+), 2 deletions(-)
 create mode 100755 abs/core/linhes-scripts/diskspace
 create mode 100755 abs/core/linhes-scripts/diskspace.sh

diff --git a/abs/core/linhes-scripts/PKGBUILD b/abs/core/linhes-scripts/PKGBUILD
index 0be8d93..bc4052d 100644
--- a/abs/core/linhes-scripts/PKGBUILD
+++ b/abs/core/linhes-scripts/PKGBUILD
@@ -3,7 +3,7 @@
 
 pkgname=linhes-scripts
 pkgver=7
-pkgrel=31
+pkgrel=32
 pkgdesc="Various scripts that help to make LinHES, LinHES."
 arch=('i686' 'x86_64')
 license=('GPL2')
@@ -49,6 +49,8 @@ upgrade_linhes_script.sh
 find_orphans.py
 acl_fix_fstab.py 
 stop_xss.sh
+diskspace
+diskspace.sh
 )
 
 build() {
@@ -63,6 +65,8 @@ build() {
   cp run-limit-mythcommflag ${pkgdir}/etc/sv/limit-mythcommflag/run
   mkdir -p ${pkgdir}/etc/logrotate.d/
   cp pause_mythcommflag ${pkgdir}/etc/logrotate.d/
+  mkdir -p ${pkgdir}/etc/cron.tenminutes/
+  cp diskspace ${pkgdir}/etc/cron.tenminutes/
 }
 md5sums=('f56985b2d602e11dc1e10d3e7848b2a5'
          '10ad1a4da669adccd01e0be6e5e4a3ed'
@@ -101,4 +105,6 @@ md5sums=('f56985b2d602e11dc1e10d3e7848b2a5'
          '4b8671376fad6d76874508434d42fbfd'
          'd8838461af9d446a1fd7e7883fdc75d1'
          'cc9cdabcdfc969c2829b58c0e513488c'
-         'acb72dfeda6f957bfdf4113a04fb91c0')
+         'acb72dfeda6f957bfdf4113a04fb91c0'
+         '84492954db16740f949d795b74383189'
+         '68e3e87571f3b0fa4a48a10df50dc220')
diff --git a/abs/core/linhes-scripts/diskspace b/abs/core/linhes-scripts/diskspace
new file mode 100755
index 0000000..ab3c91b
--- /dev/null
+++ b/abs/core/linhes-scripts/diskspace
@@ -0,0 +1,2 @@
+#!/bin/bash
+/usr/bin/nice -n19 /usr/LH/bin/diskspace.sh -osd
diff --git a/abs/core/linhes-scripts/diskspace.sh b/abs/core/linhes-scripts/diskspace.sh
new file mode 100755
index 0000000..2173c6e
--- /dev/null
+++ b/abs/core/linhes-scripts/diskspace.sh
@@ -0,0 +1,81 @@
+#!/bin/sh
+### Monitor free disk space
+# Display alert if the free percentage of space is >= $ALERT
+
+#
+# Static Config Variables
+#
+ALERT=90                        # free space percentage to trigger an alert
+
+#
+# Static Binary Paths
+#
+DF='/bin/df'
+GREP='/bin/grep'
+AWK='/bin/awk'
+CUT='/bin/cut'
+HOSTNAME='/bin/hostname'
+DATE='/bin/date'
+OSD_CAT='/usr/bin/osd_cat'
+export DISPLAY=:0.0
+#
+# Static System Variables
+#
+THIS_HOST=`${HOSTNAME}`
+
+#
+# Check CLI Options
+#
+VERBOSE=false
+OSD=false
+for ARG in "$@" ; do
+        case $ARG in
+        "-v")
+                VERBOSE=true
+                ;;
+        "-osd")
+                OSD=true
+                ;;
+        esac
+done
+
+#----------------------------------------------------------------------------
+. /etc/osd_cat.cfg || {
+    color=yellow
+    outline=2
+    outlinecolour=black
+    shadow=0
+    shadowcolour=black
+    font="-adobe-helvetica-bold-*-*-*-34-*-*-*-*-*-*-*"
+}
+#----------------------------------------------------------------------------
+
+[ $VERBOSE = true ] && echo "Checking free disk space on ${THIS_HOST}"
+[ $VERBOSE = true ] && echo "Threshold for warning is ${ALERT}%"
+[ $VERBOSE = true ] && echo "------------------------------------------------------------------"
+
+# Dynamic Variables
+#DATE_STR=`${DATE} "+%d-%B-%y @ %H%Mhrs"`
+
+# Call df to find the used percentages. Grep for only local disks (not remote mounts like nfs or smb)
+# Pipe the output to awk to get the needed columns, then start a while loop to process each line.
+$DF -HPl | $GREP -E "^/dev/" | $AWK '{ print $5 " " $6 " " $1 }' | while read OUTPUT ; do
+    USED_PCENT=$(echo ${OUTPUT} | $AWK '{ print $1}' | $CUT -d'%' -f1  )    # Used space as a percentage
+    PARTITION=$(echo ${OUTPUT} | $AWK '{ print $2 }' )                      # Mount Point (eg, /home)
+    DEVICE=$(echo ${OUTPUT} | $AWK '{ print $3 }' )                         # Device (eg, /dev/sda1 or LABEL or UUID)
+    if [ $VERBOSE = true ] ; then
+        echo -e "Checking device ${DEVICE} which is mounted to ${PARTITION} \t${USED_PCENT}% used"
+    fi
+    if [ ${USED_PCENT} -ge $ALERT ]; then
+        if [ $VERBOSE = true ] ; then
+            echo "WARNING: ${PARTITION} (${DEVICE}) is ${USED_PCENT}% full on ${THIS_HOST}."
+        else
+            echo "WARNING: ${PARTITION} (${DEVICE}) is ${USED_PCENT}% full on ${THIS_HOST}." #|
+            if [ $OSD = true ] && [ ${PARTITION} = / ]; then
+                echo "WARNING: The root (${PARTITION}) partition is ${USED_PCENT}% full on ${THIS_HOST}." | $OSD_CAT --pos=top --offset=40 --align=center --delay=10 --color=$color --outline=$outline --outlinecolour=$outlinecolour --shadow=$shadow --shadowcolour=$shadowcolour --font=$font &
+            fi
+        fi
+    fi
+done
+
+exit 0
-- 
cgit v0.12

