
#!/bin/sh
# File	: csc_cx-description_upd.sh
# By	: Maarten.deBoer@Atos.net, 240115
# Subject	: Script to update CX description (when empty)
PGM=`basename $0|cut -d\. -f1`
VER="0.1"
LOG="${HOME}/log/${PGM}.log"
SSH="/usr/bin/ssh -n"
#USER="admin"
USER="nl19471"
DATE=`date +%y%m%d`
RCFILE="${HOME}/etc/${PGM}.rc"

FILTER="[?]*"

CX_PWD="${HOME}/etc/${PGM}.pwd"
#CX_HOSTS="${HOME}/etc/${PGM}.hosts"
CX_HOSTS="${HOME}/etc/csc_cx-info_show.hosts"
CX_BASEDIR="/CX-info"

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

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

echo "`date` ${PGM} v${VER} started."|tee -a ${LOG}
echo "  CX_BASEDIR=${CX_BASEDIR}"
echo "  CX_HOSTS=${CX_HOSTS}"
echo "  CX_PWD=${CX_PWD}"
echo "  USER=${USER}"
echo "  FILTER=${FILTER}"
sleep 1

if [ ! -d ${CX_BASEDIR} ]; then
  echo "  NO CX_BASEDIR (${CX_BASEDIR}) found. Exiting ..."|tee -a ${LOG} 
  exit 3
fi
if [ ! -f ${CX_HOSTS} ]; then
  echo "  NO CX_HOSTS (${CX_HOSTS}) found. Exiting ..."|tee -a ${LOG} 
  exit 4
fi
if [ ! -f ${CX_PWD} ]; then
  echo "  NO CX_PWD (${CX_PWD}) found. Exiting ..."|tee -a ${LOG} 
  exit 5
fi

cat ${CX_HOSTS}|grep -v ^#|grep "${FILTER}"|while read LINE
do
#  echo "${LINE}"
  IP_ADDR=`echo ${LINE}|awk '{print $1}'`
  CX_NAME=`echo ${LINE}|awk '{print $2}'`
  CX_DIR="${CX_BASEDIR}/${CX_NAME}"
  echo "  CX_NAME=${CX_NAME} CX_DIR=${CX_DIR} IP_ADDR=${IP_ADDR}"

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

  if [ "${IP_ADDR}" != "" ] && [ "${CX_NAME}" != "" ]; then
    sshpass -f ${CX_PWD} ${SSH} ${USER}@${IP_ADDR} "show interface status" |grep -iv port|while read LINE
    do
      PORT=`echo ${LINE}|awk '{print $1}'`
      NAME=`echo ${LINE}|awk '{print $2}'`
      if [ "${NAME}" != "" ]; then
        DESCRIPTION=`sshpass -f ${CX_PWD} ${SSH} ${USER}@${IP_ADDR} "show interface ${PORT}" |grep -i description|awk -F\: '{print $2}'`

        echo "  ${CX_NAME}-${PORT}:${DESCRIPTION}|"
        SPACES=`echo "${DESCRIPTION}"|grep ' '`
        echo "    SPACES=${SPACES}|"
        if [ "${SPACES}" = "" ]; then
          NEW_DESC="--"
        else
          NEW_DESC=`echo "${DESCRIPTION}"|sed 's/^ //g'|sed 's/ /-/g'`
        fi
        echo "    NEW_DESC=${NEW_DESC}|"

        sshpass -f ${CX_PWD} ${SSH} ${USER}@${IP_ADDR} "conf t; interface ${PORT}; description ${NEW_DESC}; exit ;exit"
        

      fi  # NAME <> ""

    done  # LINE

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

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

