
#!/bin/sh
# File	: chk_linux_servers.sh
# By	: Maarten.deBoer@atos.net, 240516
# Subject	: Script to check Linux systems (disk usage, etc. Also remote)
PGM=`basename $0|cut -d\. -f1`
VER="0.1"
TMP="/tmp/${PGM}.$$"
LOG="${HOME}/log/${PGM}.log"
ASC="/tmp/${PGM}.asc"
SSH="/usr/bin/ssh -n"
FILTER="[?]*"

MAILTO="maarten.deboer@atos.net"
SYSTEMS="${HOME}/etc/system.hosts"
MAX_PERC=85

echo "`date` ${PGM} v${VER} started."|tee -a ${LOG}
echo "  FILTER=${FILTER}"
echo "  MAILTO=${MAILTO}"
echo "  SYSTEMS=${SYSTEMS}"
sleep 1

if [ ! -f ${SYSTEMS} ]; then
  echo "  NO SYSTEMS (${SYSTEMS}) found. Exiting ..."|tee -a ${LOG}
  exit 4
fi

touch ${TMP}
cat ${SYSTEMS}|grep -v ^#|grep "${FILTER}"|while read LINE
do
  echo "-----"
  IP_ADDR=`echo ${LINE}|awk '{print $1}'`
  HOST=`echo ${LINE}|awk '{print $2}'`
  echo "  IP_ADDR=${IP_ADDR} HOST=${HOST}"

# Check hostname
  HOST_NAME=`${SSH} ${IP_ADDR} "hostname"|cut -d\. -f1 2>/dev/null`
  echo "  HOST_NAME(${HOST_NAME}) HOST(${HOST}) "
  if [ "${HOST_NAME}" != "${HOST}" ]; then
    echo "  ERR: HOST_NAME(${HOST_NAME}) <> HOST(${HOST}) "|tee -a ${LOG} ${TMP}
  fi  # !=

# Check disk
 ${SSH} ${IP_ADDR} "mount"|grep ^/dev|awk '{print $1}'|while read REM_DEV
  do
#    echo "REM_DEV=${REM_DEV}"
# Remove "Filesystem", select on % and remove /dev/sd...
    DF_LINE=`${SSH} ${IP_ADDR} "df ${REM_DEV}"|grep -v "Filesystem"|grep '%'|sed 's|^/dev/sd[a-z][0-9]||g' 2>/dev/null `

    PERC=`echo "${DF_LINE}"|awk '{print $5}'|grep '%'|sed 's/%//g' `
    MNT_ON=`echo "${DF_LINE}"|awk '{print $6}'`
# Some older layout has shifted col's
    if [ "${MNT_ON}" = "" ]; then
      PERC=`echo "${DF_LINE}"|awk '{print $4}'|grep '%'|sed 's/%//g' `
      MNT_ON=`echo "${DF_LINE}"|awk '{print $5}'`
    fi

    if [ ${PERC} -ge ${MAX_PERC} ]; then
      echo "  At ${HOST}(${IP_ADDR}) ERR: PERC=${PERC}(>${MAX_PERC}) MNT_ON=${MNT_ON}"|tee -a ${LOG} ${TMP}
#      echo "DF_LINE=${DF_LINE}" >> ${TMP}
    fi  # > MAX_PERC    

  done  # DEVICE

done  # LINE

if [ "${MAILTO}" != "" ] && [ -s ${TMP} ]; then
  cp ${TMP} ${ASC}
  echo "`date` ----- ${PGM} v${VER} @${HOSTNAME} -----" >> ${ASC}
  ERR_CNT=`cat ${ASC}|grep -c "ERR:"`
  echo "${ERR_CNT} ERR's. See attachement for details" | mailx -a ${ASC} -s ":${HOSTNAME}: Check of Linux systems [${PGM} v${VER}]" "${MAILTO}"
  echo "  Mailed to ${MAILTO}"|tee -a ${LOG}
fi  # MAILTO

rm ${TMP}
echo "`date` ${PGM} v${VER} finished."|tee -a ${LOG}
exit 0

