diff --git a/xymon/plugins/client/ext/sge.sh b/xymon/plugins/client/ext/sge.sh index c4a1986..6bfa3fe 100755 --- a/xymon/plugins/client/ext/sge.sh +++ b/xymon/plugins/client/ext/sge.sh @@ -53,6 +53,8 @@ readonly PLUGIN_NAME=$(basename "${0}") readonly TEST="sge" readonly PLUGIN_RESULT="${XYMONTMP}/${MACHINEDOTS}.${TEST}.plugin_result" +readonly PLUGIN_STATE="${XYMONTMP}/${MACHINEDOTS}.${TEST}.plugin_state" +true > "${PLUGIN_STATE}" readonly QSTAT=$(command -v qstat) readonly QHOST=$(command -v qhost) @@ -116,10 +118,6 @@ get_footer() ##### get_status() { - ##### - ##### Setup some variables for use later - ##### - COLOR="green" # Check defaults have been set if [ "${QSTAT}" = "" ]; then @@ -177,32 +175,36 @@ get_status() # qstate=$(${QHOST} -q -h "${MACHINEDOTS}" | tail +5 | grep " $Qset" | awk '{print $4}') qstate=$(grep " $Qset" "${PLUGIN_RESULT}.QSTATE" | awk '{print $4}') - # Order determines more significant color status + # Order determines more significant alert status if [ "$(echo "${qstate}" | grep -c d)" != "0" ]; then - COLOR="clear" + echo "4&clear $Qset@$HOST is DISABLED" >> "${PLUGIN_STATE}" queueMsg=$(echo "$queueMsg
$CLEAR_PIC $Qset@$HOST is DISABLED") queueTriggered=true; elif [ "$(echo "${qstate}" | grep -c E)" != "0" ]; then - COLOR="red" + echo "1&red $Qset@$HOST is in ERROR!" >> "${PLUGIN_STATE}" queueMsg=$(echo "$queueMsg
$RED_PIC $Qset@$HOST is in ERROR!") queueTriggered=true; elif [ "$(echo "${qstate}" | grep -c c)" != "0" ]; then - COLOR="yellow" + echo "2&yellow $Qset@$HOST has an ambigious configuration!" >> "${PLUGIN_STATE}" queueMsg=$(echo "$queueMsg
$YELLOW_PIC $Qset@$HOST has an ambigious configuration!") queueTriggered=true; elif [ "$(echo "${qstate}" | grep -c a)" != "0" ] || \ [ "$(echo "${qstate}" | grep -c A)" != "0" ]; then - queueMsg=$(echo "$queueMsg
$YELLOW_PIC $Qset@$HOST is in ALARM") + echo "2&yellow $Qset@$HOST is in ALARM" >> "${PLUGIN_STATE}" + queueMsg=$(echo "$queueMsg
$YELLOW_PIC $Qset@$HOST is in ALARM
$Qset") elif [ "$(echo "${qstate}" | grep -c s)" != "0" ] || \ [ "$(echo "${qstate}" | grep -c S)" != "0" ]; then + echo "2&yellow $Qset@$HOST is SUSPENDED" >> "${PLUGIN_STATE}" queueMsg=$(echo "$queueMsg
$YELLOW_PIC $Qset@$HOST is SUSPENDED") elif [ "$(echo "${qstate}" | grep -c u)" != "0" ]; then - COLOR="yellow" + echo "2&yellow $Qset@$HOST is UNAVAILABLE" >> "${PLUGIN_STATE}" queueMsg=$(echo "$queueMsg
$YELLOW_PIC $Qset@$HOST is UNAVAILABLE!") queueTriggered=true; elif [ "$qstate" = "" ]; then + echo "3&green $Qset@$HOST is OK" >> "${PLUGIN_STATE}" queueMsg=$(echo "$queueMsg
$GREEN_PIC $Qset@$HOST is OK") else + echo "5&purple $Qset@$HOST is UNKNOWN" >> "${PLUGIN_STATE}" queueMsg=$(echo "$queueMsg
$UNKNOWN_PIC $Qset@$HOST is UNKNOWN") queueTriggered=true; fi @@ -216,11 +218,6 @@ get_status() echo "$queueMsg" get_footer - ##### - ##### Make sure to export COLOR so that it gets back to "central" - ##### - export COLOR - ##### ##### End of get_status proc ##### @@ -231,6 +228,9 @@ get_status() ##### get_status > "${PLUGIN_RESULT}" +# Set the global color according to the highest alert +COLOR=$(< "${PLUGIN_STATE}" awk '{print $1}' | sort | uniq | head -1 | cut -c3-) + # NOW USE THE XYMON COMMAND TO SEND THE DATA ACROSS $XYMON "${XYMSRV}" "status ${MACHINE}.${TEST} ${COLOR} $($DATE) $(cat ${PLUGIN_RESULT})" #For testing only @@ -241,7 +241,7 @@ get_status > "${PLUGIN_RESULT}" # and may not actually run on every client # if [ -f "${PLUGIN_RESULT}" ]; then - rm -f -- "${PLUGIN_RESULT}" + rm -f -- "${PLUGIN_RESULT}" "${PLUGIN_STATE}" fi ############################################## # end of script