File: //usr/lib64/nagios/plugins/check_a2_fsstate.sh.all
#!/bin/bash
nagios_cache_file="/var/tmp/$(basename $0)"
nagios_cache_age=900
# cacheage function
nagios_cacheage() {
file=$1
now=$(date +%s)
mtime=$(stat -c %Y "$file")
delta=$(( now - mtime ))
echo $delta
}
nagios_generate_cache() {
if pgrep -f /usr/local/cpanel/scripts/cpbackup >/dev/null; then
for filesystem in $(mount|grep ext|awk '{print $1}'|sort|uniq); do
echo "Filesystem_state_${filesystem} - Check delayed due to backups"
done
exit
fi
# check ext3 file systems
for filesystem in $(mount|grep ext3|awk '{print $1}'|sort|uniq);do
if [ "$(tune2fs -l ${filesystem} | grep "Filesystem state" | awk -F ':' '{print $2}' | tr -d ' ')" == "clean" ]; then
echo "Filesystem_state_${filesystem} - file system is clean"
else
echo "Filesystem_state_${filesystem} - file system has errors"
fi
done
# check ext4 file systems with both tune2fs and tune4fs
if type tune4fs > /dev/null 2>&1; then
for filesystem in $(mount|grep ext4|grep -v deleted|awk '{print $1}'|sort|uniq);do
if [ "$(tune4fs -l ${filesystem} | grep "Filesystem state" | awk -F ':' '{print $2}' | tr -d ' ')" == "clean" ]; then
echo "Filesystem_state_${filesystem} - file system is clean"
else
echo "Filesystem_state_${filesystem} - file system has errors"
fi
done
else
for filesystem in $(mount|grep ext4|grep -v deleted|awk '{print $1}'|sort|uniq);do
if [ "$(tune2fs -l ${filesystem} | grep "Filesystem state" | awk -F ':' '{print $2}' | tr -d ' ')" == "clean" ]; then
echo "Filesystem_state_${filesystem} - file system has clean"
else
echo "Filesystem_state_${filesystem} - file system has errors"
fi
done
fi
}
if [ ! -e "${nagios_cache_file}" ]; then
touch ${nagios_cache_file}
nagios_generate_cache > "${nagios_cache_file}"
else
cache_age=$(nagios_cacheage ${nagios_cache_file})
if [ "${cache_age}" -ge "${nagios_cache_age}" ]; then
nagios_generate_cache > "${nagios_cache_file}"
fi
fi
if [ -f "${nagios_cache_file}" ]; then
if grep -q "file system has errors" "${nagios_cache_file}"; then
echo "Filesystem_state - Filesystems have errors: $(cat ${nagios_cache_file} | sed ':a;N;$!ba;s/\n/ /g')"
exit 2
else
echo "Filesystem_state - Filesystems are clean"
exit 0
fi
fi