Monitor free disk space on a Linux machine using SSH | ActiveXperts Network Monitor
The following script can be used in ActiveXperts Network Monitor to check disk free space on a remote LINUX machine:
#!/bin/bash
#################################################################################
# ActiveXperts Network Monitor - Shell script checks
#
# For more information about ActiveXperts Network Monitor and SSH, please
# visit the online ActiveXperts Network Monitor Shell Script Guidelines at:
# https://www.activexperts.com/support/network-monitor/online/linux/
#################################################################################
# Script
# disk-free-mb.sh
# Description
# Checks the available free space on a disk
# Declare Parameters
# 1) sDrive (string) - Mounted drive
# 2) nMinFreeMB (number) - Minimum free space
# Usage
# disk-free-mb.sh sDrive nMinFreeMB
# Sample
# bash ./disk-free-mb.sh /dev/sda1 1000
#################################################################################
# This script is based on the 'df' command
# df -T output is like this:
# Filesystem Type 1K-blocks Used Available Use% Mounted on
# udev devtmpfs 2001860 0 2001860 0% /dev
# tmpfs tmpfs 403844 26368 377476 7% /run
# /dev/sda1 ext4 126820132 3797080 116557928 4% /
# tmpfs tmpfs 2019208 156 2019052 1% /dev/shm
# tmpfs tmpfs 5120 0 5120 0% /run/lock
# tmpfs tmpfs 2019208 0 2019208 0% /sys/fs/cgroup
# cgmfs tmpfs 100 0 100 0% /run/cgmanager/fs
# tmpfs tmpfs 403844 64 403780 1% /run/user/1000
sDrive=$1
nMinFreeMB=$2
# Validate number of arguments
if [ $# -ne 2 ] ; then
echo "UNCERTAIN: Invalid number of arguments - Usage: disk-free-mb sDrive nMinFreeMB"
exit 1
fi
# Validate numeric parameter nMinFreeMB
regExpNumber='^[0-9]+$'
if ! [[ $2 =~ $regExpNumber ]] ; then
echo "UNCERTAIN: Invalid argument: nMinFreeMB (number expected)"
exit 1
fi
# Execute a command like this (assuming /dev/sda1). Note that slashes need to be escaped in AWK:
# df -T | awk '/\/dev\/sda1/ { print $5; }'
sDriveEsc=`echo $sDrive | sed 's/\//\\\\\//g'` # e.g.: "\/dev\/sda1" <- "/dev/sda1"
sCommand="df -T | awk '/$sDriveEsc/ { print \$5; }'" # e.g.: df -T | awk '/\/dev\/sda1/ { print $5; }'
# Get number of free blocks (1K)
nBlocksFree=`eval $sCommand`
if [ -z "$nBlocksFree" ]; then
echo "UNCERTAIN: Drive [$sDrive] does not exist"
exit 1
fi
# Get number of free MB (assuming a block is 1K)
let nMBFree="nBlocksFree/1024"
# Print final result. ActiveXperts will interpret the line, expected format is like this:
# [SUCCESS|ERROR|UNCERTAIN] DATA:[]
if [ $nMBFree -ge $nMinFreeMB ] ; then
echo "SUCCESS: Free disk space on drive $sDrive=[$nMBFree MB], minimum required=[$nMinFreeMB MB] DATA:$nMBFree"
else
echo "ERROR: Free disk space on drive $sDrive=[$nMBFree MB], minimum required=[$nMinFreeMB MB] DATA:$nMBFree"
fi
# Exit script
exit 0
