
#!/bin/sh
# File	: dsc_rac-info_collect.sh
# By	: Maarten.deBoer@Atos.net, 240115, 240330,250710
# Subject	: Script to collect (show) Dell-(poweredge-)Servers config via racadm
PGM=`basename $0|cut -d\. -f1`
VER="0.1"
LOG="${HOME}/log/${PGM}.log"
SSH="/usr/bin/ssh -n"
# Put StrictHostKeyChecking disable into .ssh/config
RAC_USER="readonly"
DATE=`date +%y%m%d`
RCFILE="${HOME}/etc/${PGM}.rc"
CMDFILE="${HOME}/etc/${PGM}.cmd"

FILTER="[?]*"

RAC_PWD="${HOME}/etc/${PGM}.pwd"
RAC_HOSTS="${HOME}/etc/${PGM}.hosts"
RAC_BASEDIR="/iDRAC-info"

if [ -f ${RCFILE} ]; then
  echo "  RCFILE (${RCFILE}) found. Using it ..."|tee -a ${LOG}
  . ${RCFILE}
fi
if [ "${1}" != "" ]; then
  FILTER="${1}"
fi

RAC_PASSWORD=`cat ${RAC_PWD}`

echo "`date` ${PGM} v${VER} started."|tee -a ${LOG}
echo "  RAC_BASEDIR=${RAC_BASEDIR}"
echo "  RAC_HOSTS=${RAC_HOSTS}"
echo "  RAC_PWD=${RAC_PWD}"
echo "  RAC_USER=${RAC_USER}"
echo "  RAC_PASSWORD=${RAC_PASSWORD}"
echo "  FILTER=${FILTER}"
sleep 1

if [ ! -d ${RAC_BASEDIR} ]; then
  echo "  NO RAC_BASEDIR (${RAC_BASEDIR}) found. Exiting ..."|tee -a ${LOG} 
  exit 3
fi
if [ ! -f ${RAC_HOSTS} ]; then
  echo "  NO RAC_HOSTS (${RAC_HOSTS}) found. Exiting ..."|tee -a ${LOG} 
  exit 4
fi
if [ ! -f ${RAC_PWD} ]; then
  echo "  NO RAC_PWD (${RAC_PWD}) found. Exiting ..."|tee -a ${LOG} 
  exit 5
fi
if [ ! -f ${CMDFILE} ]; then
  echo "  NO CMDFILE (${CMDFILE}) found. Exiting ..."|tee -a ${LOG} 
  exit 6
fi

cat ${RAC_HOSTS}|grep -v ^#|egrep -i "${FILTER}"|sort -k 2| while read LINE
do
#  echo "${LINE}"
  IP_ADDR=`echo ${LINE}|awk '{print $1}'`
  RAC_NAME=`echo ${LINE}|awk '{print $2}'`
  RAC_DIR="${RAC_BASEDIR}/${RAC_NAME}"
  echo "  RAC_NAME=${RAC_NAME} RAC_DIR=${RAC_DIR} IP_ADDR=${IP_ADDR}"|tee -a ${LOG}

  if [ ! -d ${RAC_DIR} ]; then
    mkdir -p ${RAC_DIR}
    EC=${?}
    echo "    RAC_DIR (${RAC_DIR}) created (${EC})."|tee -a ${LOG}
  fi

  ping -W 2 -c 1 -W 1 ${IP_ADDR} 1> /dev/null 2>&1
  ECP=${?}
  if [ ${ECP} -eq 0 ] && [ "${IP_ADDR}" != "" ] && [ "${RAC_NAME}" != "" ]; then
    cat ${CMDFILE}|grep -v ^#|egrep -i "${FILTER}"|while read LINE
    do
      CMD=`echo ${LINE}|awk -F\; '{print $1}'`
      FILENAME=`echo ${LINE}|awk -F\; '{print $2}'`
      if [ "${FILENAME}" = "" ]; then
# WHen no filename, used CMD and change " " <space>  info "-"
        FILENAME=`echo ${CMD}| sed 's/ /-/g'`
      fi  # ${FILENAME}" = ""
      FILENAME="${RAC_DIR}/${RAC_NAME}_${FILENAME}_${DATE}"
      echo "CMD=${CMD}| FILENAME=${FILENAME}|"

#      INFO=`sshpass -f ${VMW_PWD} ${SSH} ${CIPHER} ${USER}@${IP_ADDR} "uptime"`
      if [ ${ECP} -eq 0 ] && [ "${CMD}" != "" ] && [ "${FILENAME}" != "" ]; then
        racadm -r ${IP_ADDR} -u ${RAC_USER} -p ${RAC_PASSWORD} "${CMD}"  1> ${FILENAME} 2>&1
      fi  # CMD && FILENAME

    done  # CMDFILE
  fi  # IP_ADDR}" != ""

done  # LINE

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

