From 7777d224dfa9500cd33c5ef5f288ddc1fdfa23cd Mon Sep 17 00:00:00 2001 From: David Schroeder Date: Mon, 14 Aug 2023 18:30:28 -0500 Subject: [PATCH] Update powerwall.sh --- powerwall.sh | 92 +++++++++++++++++++++++----------------------------- 1 file changed, 40 insertions(+), 52 deletions(-) diff --git a/powerwall.sh b/powerwall.sh index cda5829b..a10a35f0 100755 --- a/powerwall.sh +++ b/powerwall.sh @@ -21,60 +21,48 @@ CHECKTEMP(){ # echo -e "${idsCL[Yellow]}Sensor Temperature(s) ${idsCL[Green]}normal${idsCL[Default]} /${idsCL[Yellow]}warning${idsCL[Default]}/ ${idsCL[Red]}critical${idsCL[Default]}" echo -e "${idsCL[Cyan]}Sensor Temperature(s) Current / 3DayAVG ${idsCL[Green]}normal${idsCL[Default]} /${idsCL[Yellow]}warning${idsCL[Default]}/ ${idsCL[Red]}critical${idsCL[Default]}" DIVIDER . yellow 85 - if [ "${1}" != "" ]; then - # reading=$(CHECKTEMPSENSOR ${1}) - # c=0; spc=''; spc1=`expr ${cw} - ${#1}`; until [ $c = ${spc1} ]; do spc="${spc} "; c=`expr $c + 1`; done - # echo -e "${idsCL[LightCyan]}${1}${spc}${idsCL[Default]}: ${reading}" - for SENSOR in ${!PW_SENSOR_ID[@]}; do - if [[ "${SENSOR}" = *"${1}"* ]]; then - echo -en "${idsCL[Yellow]}Pulling data and calculating averages for '${SENSOR}' ..." - - if [ "${PW_SENSOR_TYPE[${SENSOR}]}" == "esxi" ]; then - vHOSTIP=${PW_ESXI_MON_HOSTS[${SENSOR}]} - vHOSTNAME=${PW_ESXI_HOST_NAMES[${vHOSTIP}]} - if [ "$(CHECK_HOST ${vHOSTIP})" != "false" ]; then - vHOSTDATA=$(ssh root@${PW_RACADM_ACCESS} racadm -r ${vHOSTIP} -u ${PW_ESXI_USER} -p "'${PW_ESXI_PASS}'" getsensorinfo | grep " Temp" 2>&1) - IFS=$'\n' read -rd '' -a vHOSTDATA <<<"${vHOSTDATA}"; unset IFS - - for sensordata in "${vHOSTDATA[@]}"; do - vSENSOR=$(echo ${sensordata} | cut -d'T' -f1 | xargs) - temp_c=$(echo ${sensordata} | cut -d'p' -f2 | awk '/ / {print $2}' | sed -e 's/C//g'); temp_c=${temp_c/ /} - temp_warn=$(echo ${sensordata} | cut -d'p' -f2 | awk '/ / {print $7}' | sed -e 's/C//g'); temp_warn=${temp_warn/ /} - temp_crit=$(echo ${sensordata} | cut -d'p' -f2 | awk '/ / {print $4}' | sed -e 's/C//g'); temp_crit=${temp_crit/ /} - - reading=$(CHECKTEMPSENSOR ${SENSOR} ${temp_c} ${temp_warn} ${temp_crit}) - c=0; spc=''; spc1=`expr ${cw} - ${#vSENSOR}`; until [ $c = ${spc1} ]; do spc="${spc} "; c=`expr $c + 1`; done - echo -e "\r\033[K${idsCL[LightCyan]}${vSENSOR}${spc}${idsCL[Default]}: ${reading}" - - done - - else #host down - echo -e "\r\033[K${idsCL[Red]}${SENSOR} Host is down" - - # if [ ! -f ${PW_TMPFOLDER}/${SENSOR}.down ] || [ $(expr `date +%s` - $(stat -c %Y ${PW_TMPFOLDER}/${SENSOR}.down)) -ge 1800 ]; then - # SENDNOTICE "${vHOSTIP} ERROR" "${vHOSTNAME} Host is down" 1 - # echo "($datetime) - ${vHOSTIP} - ${vHOSTNAME} Host is down" >> ${logtemp} - # touch ${PW_TMPFOLDER}/${EHOST}.down - # fi - fi - - else - reading=$(CHECKTEMPSENSOR ${SENSOR}) - c=0; spc=''; spc1=`expr ${cw} - ${#SENSOR}`; until [ $c = ${spc1} ]; do spc="${spc} "; c=`expr $c + 1`; done - echo -e "\r\033[K${idsCL[LightCyan]}${SENSOR}${spc}${idsCL[Default]}: ${reading}" - fi - fi - done - - else - for SENSOR in ${!PW_SENSOR_ID[@]}; do + for SENSOR in ${!PW_SENSOR_ID[@]}; do + if [ "${1}" == "" ] || [[ "${SENSOR}" = *"${1}"* ]]; then echo -en "${idsCL[Yellow]}Pulling data and calculating averages for '${SENSOR}' ..." - reading=$(CHECKTEMPSENSOR ${SENSOR}) - c=0; spc=''; spc1=`expr ${cw} - ${#SENSOR}`; until [ $c = ${spc1} ]; do spc="${spc} "; c=`expr $c + 1`; done - echo -e "\r\033[K${idsCL[LightCyan]}${SENSOR}${spc}${idsCL[Default]}: ${reading}" - done - fi + + if [ "${PW_SENSOR_TYPE[${SENSOR}]}" == "esxi" ]; then + vHOSTIP=${PW_ESXI_MON_HOSTS[${SENSOR}]} + vHOSTNAME=${PW_ESXI_HOST_NAMES[${vHOSTIP}]} + if [ "$(CHECK_HOST ${vHOSTIP})" != "false" ]; then + vHOSTDATA=$(ssh root@${PW_RACADM_ACCESS} racadm -r ${vHOSTIP} -u ${PW_ESXI_USER} -p "'${PW_ESXI_PASS}'" getsensorinfo | grep " Temp" 2>&1) + IFS=$'\n' read -rd '' -a vHOSTDATA <<<"${vHOSTDATA}"; unset IFS + + for sensordata in "${vHOSTDATA[@]}"; do + vSENSOR=$(echo ${sensordata} | cut -d'T' -f1 | xargs) + temp_c=$(echo ${sensordata} | cut -d'p' -f2 | awk '/ / {print $2}' | sed -e 's/C//g'); temp_c=${temp_c/ /} + temp_warn=$(echo ${sensordata} | cut -d'p' -f2 | awk '/ / {print $7}' | sed -e 's/C//g'); temp_warn=${temp_warn/ /} + temp_crit=$(echo ${sensordata} | cut -d'p' -f2 | awk '/ / {print $4}' | sed -e 's/C//g'); temp_crit=${temp_crit/ /} + + reading=$(CHECKTEMPSENSOR ${SENSOR} ${temp_c} ${temp_warn} ${temp_crit}) + c=0; spc=''; spc1=`expr ${cw} - ${#vSENSOR}`; until [ $c = ${spc1} ]; do spc="${spc} "; c=`expr $c + 1`; done + echo -e "\r\033[K${idsCL[LightCyan]}${vSENSOR}${spc}${idsCL[Default]}: ${reading}" + + done + + else #host down + echo -e "\r\033[K${idsCL[Red]}${SENSOR} Host is down" + + # if [ ! -f ${PW_TMPFOLDER}/${SENSOR}.down ] || [ $(expr `date +%s` - $(stat -c %Y ${PW_TMPFOLDER}/${SENSOR}.down)) -ge 1800 ]; then + # SENDNOTICE "${vHOSTIP} ERROR" "${vHOSTNAME} Host is down" 1 + # echo "($datetime) - ${vHOSTIP} - ${vHOSTNAME} Host is down" >> ${logtemp} + # touch ${PW_TMPFOLDER}/${EHOST}.down + # fi + fi + + else + reading=$(CHECKTEMPSENSOR ${SENSOR}) + c=0; spc=''; spc1=`expr ${cw} - ${#SENSOR}`; until [ $c = ${spc1} ]; do spc="${spc} "; c=`expr $c + 1`; done + echo -e "\r\033[K${idsCL[LightCyan]}${SENSOR}${spc}${idsCL[Default]}: ${reading}" + fi + fi + done + [ "${action}" != "" ] && echo }