
#!/bin/sh
# File	: chk_status-atostechlab.sh
# By	: Maarten.deBoer@Atos.net, 210106
# Subject	: Script to check Atos TechLab env
#(0.2)	: Renamed from chk_atostechlab-status.sh
#(0.3),210126	: Mod. LOCAL usage (if no MAILTO, then save DATA)
#(0.4),210127	: Mod. to HOSTS
#(0.5),210128	: Add SSH check
PGM=`basename $0|cut -d\. -f1`
VER="0.5"
TMP="/tmp/${PGM}.$$"
BASEDIR="${HOME}/status"
LOG="${BASEDIR}/log/${PGM}.log"
SSH="/usr/bin/ssh -n"

#CONF="${BASEDIR}/etc/${PGM}.conf"
HOSTS="${BASEDIR}/etc/${PGM}.hosts"
DATADIR="${BASEDIR}/data/"
DATA_CSV="${DATADIR}/status-atostechlab.csv"
DATI_CSV="${DATADIR}/`date +%Y-%m-%d-%H-%H-%S`_status-atostechlab.csv"
#MAILTO="atos@agrarix.it"
MAILTO=""

echo "`date` ${PGM} v${VER} started."|tee -a ${LOG}
if [ ! -f ${HOSTS} ]; then
  echo "  HOSTS (${HOSTS}) NOT found. Exiting ..."|tee -a ${LOG}
  exit 3
fi

echo "# DATI ; NAME; IP ; STATUS ; CHECK ;" > ${DATA_CSV}
cat ${HOSTS}|grep -v ^#|while read LINE
do
  echo "  ${LINE}"
# Check if ping
  PING_IP=`echo ${LINE}|grep "#"|grep ping|awk '{print $1}'`
  SSH_IP=`echo ${LINE}|grep "#"|grep ssh|awk '{print $1}'`
  if [ "${PING_IP}" != "" ]; then
    NAME=`echo ${LINE}|awk '{print $2}'`
    echo "    PING ${PING_IP} ($NAME})"
    ping -W 2 -c 2 ${PING_IP} 1> /dev/null 2>&1
    EC=${?}
    if [ ${EC} -eq 0 ]; then
      echo "      OK"
      echo "`date +%Y-%m-%d-%H-%M-%S`;${NAME};${PING_IP};OK (green);ping;" >> ${DATA_CSV}
# When PING = OK, then SSH can be check if needed
    if [ "${SSH_IP}" != "" ]; then
      NAME=`echo ${LINE}|awk '{print $2}'`
      echo "      SSH ${SSH_IP} ($NAME})"
      ${SSH} ${SSH_IP} "hostname"
      EC=${?}
      if [ ${EC} -eq 0 ]; then
        echo "        OK"
        echo "`date +%Y-%m-%d-%H-%M-%S`;${NAME};${SSH_IP};OK (green);ssh;" >> ${DATA_CSV}
      else
        echo "        Nok"
        echo "`date +%Y-%m-%d-%H-%M-%S`;${NAME};${SSH_IP};NOT (red);ssh;" >> ${DATA_CSV}
      fi  # <> SSH 0
    fi # SSH
    else
      echo "      Nok"
      echo "`date +%Y-%m-%d-%H-%M-%S`;${NAME};${PING_IP};NOT (red);ping;" >> ${DATA_CSV}
    fi  # EC
  fi  # PING_IP}" != ""
done  # cat ${HOSTS}

# When MAILTO has address & is data in DATA_CSV
if [ "${MAILTO}" != "" ] && [ -s ${DATA_CSV} ]; then
  cat ${DATA_CSV} | mailx -s "status-atostechlab: [${PGM} v${VER}]" ${MAILTO}
  echo "  ${DATA_CSV} mailed to ${MAILTO}"|tee -a ${LOG}
fi
# When LOCAL-usage (MAILTO is <>)
if [ "${MAILTO}" = "" ] && [ -s ${DATA_CSV} ]; then
  cp ${DATA_CSV} ${DATI_CSV}
  echo "  ${DATA_CSV} copied to ${DATI_CSV}"|tee -a ${LOG}
fi

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

