
#!/bin/sh
# File	: linux-server_chk.sh
# By	: Maarten.deBoer@Atos.net, 250915
# Subject	: Scripot to check access to Linux-servers
#(0.2),250915	: Add OS-release
#(0.3),260216	: Renamed from linux-access_chk.sh, Add uptime (for checking load)
#(0.4),260216	: Added IP_ADDR, FILTER
PGM=`basename $0|cut -d\. -f1`
VER="0.4"
TMP="/tmp/${PGM}.$$"
LOG="${HOME}/log/${PGM}.log"
SSH="/usr/bin/ssh -o ConnectTimeout=10 -n"
CSV="${HOME}/data/${PGM}.csv"
MAILTO="maarten.deboer@atos.net"
HOSTNAME=`hostname |cut -d\. -f1`
FILTER="[?]*"

SERVERS="${HOME}/etc/servers"

if [ "${1}" != "" ]; then
  FILTER="${1}"
fi 

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

touch ${TMP}
echo "# SERVER;IP_ADDR;COMMENT;ExitCode;RedHat-release;Uptime;" > ${CSV}
cat ${SERVERS}|grep -v ^#|grep "${FILTER}"|while read LINE
do
#  echo "${LINE}"
  SERVER=`echo ${LINE} | cut -d\# -f1`
  COMMENT=`echo ${LINE} | cut -d\# -f2-`
  /usr/bin/ping -c 2 ${SERVER} > ${TMP}
  EC=${?}
  if [ ${EC} -eq 0 ]; then
      IP_ADDR=`grep PING ${TMP}|egrep -v '127'|egrep '10|161'|cut -d\( -f2 |cut -d\) -f1`
    echo "  SERVER=${SERVER} (${IP_ADDR}) COMMENT=${COMMENT}"
sleep 1
    if [ "${IP_ADDR}" != "" ]; then
      ${SSH} ${IP_ADDR} "hostname"
      EC=${?}
#  VERSION_ID=`${SSH} ${SERVER} "cat /etc/os-release"|grep ^VERSION_ID|cut -d\= -f2`
      RHEL=`${SSH} ${IP_ADDR} "cat /etc/redhat-release"`
      UPTIME=`${SSH} ${IP_ADDR} "/usr/bin/uptime"`
      echo "    EC=${EC} RHEL=${RHEL} UPTIME=${UPTIME}|"
      echo "${SERVER};${IP_ADDR};${COMMENT};${EC};${RHEL};${UPTIME};" >> ${CSV}
      sleep 1
    fi  # IP_ADDR
  fi  # EC=0
done  # SERVER

if [ "${MAILTO}" != "" ]; then
  date | mailx -a ${CSV} -s ":${HOSTNAME}: CSV report of server check [${PGM} v${VER}]" "${MAILTO}"
  EC=${?}
  echo "  Mailed(${EC}) to ${MAILTO}"|tee -a ${LOG}
fi  # MAILTO

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

