HEX
Server: LiteSpeed
System: Linux s3604.bom1.stableserver.net 4.18.0-513.11.1.lve.el8.x86_64 #1 SMP Thu Jan 18 16:21:02 UTC 2024 x86_64
User: dmstechonline (1480)
PHP: 7.4.33
Disabled: NONE
Upload Files
File: //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