#!/bin/bash NODES_FILE="/slc/csd/adm/root/NODECHECK/nodeCheck.txt" CMDS_FILE="/slc/csd/adm/root/NODECHECK/nodeCheck.txt" HOSTNAME=`hostname` CHECKS=`grep "${HOSTNAME}:" $NODES_FILE | grep -v "#" | awk -F: '{print $2}'` CHECK_TYPE_BASE="#NodeCheck" CHECK_TYPE_CMD='Cmd' CHECK_TYPE_SCRIPT='Script' TIMESTAMP=`date +%s` OVERALL_RESULT="Pass" FAILED_TESTS="" function trim_whitespace { var=$1 var="${var#"${var%%[![:space:]]*}"}" # remove leading whitespace characters var="${var%"${var##*[![:space:]]}"}" # remove trailing whitespace characters echo $var } if [ -z "$CHECKS" ] then echo "Node $HOSTNAME not listed in $NODES_FILE" exit 1 fi for CHECK in $CHECKS do CHECK_NAME=`echo $CHECK | awk -F= '{print $1}'` CHECK_TYPE=`grep $CHECK_TYPE_BASE $CMDS_FILE | grep $CHECK_NAME | awk -F, '{print $1}'` CHECK_CMD=`grep $CHECK_TYPE_BASE $CMDS_FILE | grep $CHECK_NAME | awk -F, '{print $3}'` if [ $CHECK_TYPE = ${CHECK_TYPE_BASE}${CHECK_TYPE_CMD} ] then CHECK_VALUE=`eval echo $CHECK | awk -F= '{print $2}'` RAW_ACTUAL_VALUE=`eval $CHECK_CMD` ACTUAL_VALUE=`eval trim_whitespace "${RAW_ACTUAL_VALUE}"` if [ "$ACTUAL_VALUE" = "$CHECK_VALUE" ] then RESULT="Pass" else RESULT="Fail" OVERALL_RESULT="Fail" FAILED_TESTS="${FAILED_TESTS} $CHECK_NAME" fi echo "Check name: $CHECK_NAME -> $RESULT" echo " Check type is: Command" echo " Expected value is: $CHECK_VALUE" echo " Check command is: $CHECK_CMD" echo " Actual value is: $ACTUAL_VALUE" fi if [ $CHECK_TYPE = ${CHECK_TYPE_BASE}${CHECK_TYPE_SCRIPT} ] then CHECK_VALUE=`eval echo $CHECK | awk -F= '{print $2}'` ACTUAL_VALUE=`$CHECK_CMD` if [ "$ACTUAL_VALUE" = "$CHECK_VALUE" ] then RESULT="Pass" else RESULT="Fail" OVERALL_RESULT="Fail" FAILED_TESTS="${FAILED_TESTS} $CHECK_NAME" fi echo "Check name: $CHECK_NAME -> $RESULT" echo " Check type is: Script" echo " Expected value is: $CHECK_VALUE" echo " Check script is: $CHECK_CMD" echo " Actual value is: $ACTUAL_VALUE" fi done if [ $OVERALL_RESULT = "Pass" ]; then echo "Summary: (PASS) Node $HOSTNAME passed all tests" else echo "ERROR Summary: (FAIL) Node $HOSTNAME failed tests: $FAILED_TESTS" fi