
#!/bin/sh
# File	: chk_oci-status.sh
# subject	: Script to check/test OCI status for FireWall config's. By using nmap
#(0.1)	: From chk_rau-s.sh
PGM=`basename $0|cut -d\. -f1`
VER="0.1"
TMP="/tmp/${TMP}.$$"
LOG="${HOME}/log/${PGM}.log"
RAUCSV="${HOME}/data/oci_rau-s.csv"
OCICSV="${HOME}/data/oci_srv-s.csv"
MAILTO="maarten.deboer@atos.net maarten@agrarix.it"
#MAILTO=""
OCISRV="161.89.56.24"
FILTER="oci"
OUTCSV="${HOME}/data/oci-status.csv"

if [ ! -f ${OCICSV} ]; then
  echo "  NO OCICSV (${OCICSV}) found. Exiting ..."
  exit 2
fi
if [ ! -f ${RAUCSV} ]; then
  echo "  NO RAUCSV (${RAUCSV}) found. Exiting ..."
  exit 3
fi
touch ${TMP}
echo "`date` ${PGM} v${VER} at `hostname` started."|tee -a ${LOG} ${TMP}

# Empty status-file 1st
cp /dev/null ${OUTCSV}

# Check OCI
cat ${OCICSV}|grep -v ^#|grep ${FILTER}| while read LINE
do
  OCISTATUS="No be able to check"
  IPADDR=`echo ${LINE}|awk -F\; '{print $1}'`
  HOSTNAME=`echo ${LINE}|awk -F\; '{print $2}'`
  ENV=`echo ${LINE}|awk -F\; '{print $3}'`
  echo "  + ${ENV}"|tee -a ${TMP} ${LOG}
  echo -n "    - To ${HOSTNAME}(${IPADDR}): "|tee -a ${TMP} ${LOG}
  ping -c 2 -W 3 ${IPADDR} 1> /dev/null 2>&1
  EC=${?}
  if [ ${EC} -eq 0 ]; then
# ping OK. Check SSH
    PINGSTATUS="ping = OK"
  else
    PINGSTATUS="ping NOTok"
  fi  # ping
  echo -n "${PINGSTATUS}, " |tee -a ${TMP} ${LOG}

# Check SSH connection to
  NMAPTO=`nmap -Pn --host-timeout 10s -p 22 ${IPADDR}| grep ssh`
  echo " ${NMAPTO}"|tee -a ${TMP} ${LOG}

  ANSW=`nmap -Pn --host-timeout 10s -p 22 ${IPADDR}| grep ssh|grep open`
  if [ "${ANSW}" != "" ]; then
# When SSH-access, check for OCI-proc's
    OCISTATUS="NO oci proc's found"
    ANSW=`ssh -n ${IPADDR} "ps -ef"|grep ocisys`
    if [ "${ANSW}" != "" ]; then
      OCISTATUS="OCI-proc's active"
      ANSW=`ssh -n ${IPADDR} "sudo oci-service.sh status"|grep acquisition`
      if [ "${ANSW}" != "" ]; then
        OCISTATUS="RAU-acquisition"
      fi  # oci-service.sh
    fi  # OCIANSW

  fi  # ANSW

# Update OUTCSV-file for WEB-status
  echo "${ENV};${HOSTNAME};${IPADDR};${PINGSTATUS};${NMAPTO};${NMAPBACK};${OCISRV};${OCISTATUS};" >> ${OUTCSV}
done  # cat ${OCICSV}

# Check RAU's
cat ${RAUCSV}|grep -v ^#|grep ${FILTER}| while read LINE
do
  IPADDR=`echo ${LINE}|awk -F\; '{print $1}'`
  HOSTNAME=`echo ${LINE}|awk -F\; '{print $2}'`
  ENV=`echo ${LINE}|awk -F\; '{print $3}'`
  echo "  + ${ENV}"|tee -a ${TMP} ${LOG}
  echo -n "    - To ${HOSTNAME}(${IPADDR}): "|tee -a ${TMP} ${LOG}
  ping -c 2 -W 3 ${IPADDR} 1> /dev/null 2>&1
  EC=${?}
  if [ ${EC} -eq 0 ]; then
# ping OK. Check SSH
    PINGSTATUS="ping = OK"
  else
    PINGSTATUS="ping NOTok"
  fi  # ping
  echo -n "${PINGSTATUS}, " |tee -a ${TMP} ${LOG}

  NMAPTO=`nmap -Pn --host-timeout 10s -p 22 ${IPADDR}| grep ssh`
  echo " ${NMAPTO}"|tee -a ${TMP} ${LOG}
# Check for open SSH 
  NMAPBACK="??"
  OCISTATUS="NO oci proc's found"
  ANSW=`nmap -Pn --host-timeout 10s -p 22 ${IPADDR}| grep ssh|grep open`
  if [ "${ANSW}" != "" ]; then
# Open SSH; Check if p41004 (back to OCI-srv is open)
    NMAPBACK=`ssh -n ${IPADDR} "nmap -Pn --host-timeout 10s -p 41004 ${OCISRV}"|grep tcp`
    echo -n "    - Back from RAU-${HOSTNAME} (${IPADDR}) to OCI-srv(${OCISRV}):"|tee -a ${TMP} ${LOG}
    echo "${NMAPBACK}"|tee -a ${TMP} ${LOG}

# Check OCI-status
# When empty NO OIC is active
    ANSW=`ssh -n ${IPADDR} "ps -ef"|grep ocisys`
    if [ "${ANSW}" != "" ]; then
      OCISTATUS="OCI-proc's active"
      ANSW=`ssh -n ${IPADDR} "sudo oci-service.sh status"|grep acquisition`
      if [ "${ANSW}" != "" ]; then
        OCISTATUS="RAU-acquisition"
      fi  # oci-service.sh
    fi  # OCIANSW
  fi  # ANSW
  echo "    - ${OCISTATUS}"|tee -a ${TMP} ${LOG}

# Update OUTCSV-file for WEB-status
  echo "${ENV};${HOSTNAME};${IPADDR};${PINGSTATUS};${NMAPTO};${NMAPBACK};${OCISRV};${OCISTATUS};" >> ${OUTCSV}

done  # cat ${RAUCSV}

if [ "${MAILTO}" != "" ] && [ -s ${TMP} ]; then
  cat ${TMP}|mailx -s "Check NL-OCI-RAU connections [${PGM} v${VER}]" ${MAILTO}
  echo "  Mailed to ${MAILTO}."|tee -a ${LOG}
fi

if [ -f ${HOME}/bin/upd_oci-status.sh ]; then
  echo "  Upd Web-page ..."|tee -a ${LOG}
  ./upd_oci-status.sh
fi  # -f

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

