diff --git a/defaults.inc b/defaults.inc index 1c052077..0d26bec9 100755 --- a/defaults.inc +++ b/defaults.inc @@ -1,6 +1,6 @@ #!/usr/bin/env bash -VERS='2.2.2-08132023' +VERS='2.2.3-08142023' noheader=' update service dailytemp ' @@ -44,11 +44,11 @@ declare -A PW_SENSOR_TYPE PW_SENSOR_TYPE['ServerRoomTH']='mqtt' PW_SENSOR_TYPE['RaspberryPI-CPU']='system' PW_SENSOR_TYPE['OctoPI-CPU']='remotesystem' -PW_SENSOR_TYPE['esxi0']='esxi' -PW_SENSOR_TYPE['esxi1']='esxi' -PW_SENSOR_TYPE['esxi2']='esxi' -PW_SENSOR_TYPE['esxi7']='esxi' -PW_SENSOR_TYPE['esxi8']='esxi' +PW_SENSOR_TYPE['vMS-Host0']='esxi' +PW_SENSOR_TYPE['vMS-Host1']='esxi' +PW_SENSOR_TYPE['vMS-Host2']='esxi' +PW_SENSOR_TYPE['vMS-Host7']='esxi' +PW_SENSOR_TYPE['vMS-Host8']='esxi' declare -A PW_REMOTE_SENSORS PW_REMOTE_SENSORS['ServerRoomTH']='10.10.20.10' @@ -58,18 +58,18 @@ declare -A PW_SENSOR_ID PW_SENSOR_ID['ServerRoomTH']='2' PW_SENSOR_ID['RaspberryPI-CPU']='6' PW_SENSOR_ID['OctoPI-CPU']='7' -# PW_SENSOR_ID['esxi0']='8' -# PW_SENSOR_ID['esxi1']='9' -# PW_SENSOR_ID['esxi2']='10' -# PW_SENSOR_ID['esxi7']='11' -# PW_SENSOR_ID['esxi8']='12' +PW_SENSOR_ID['vMS-Host0']='8' +PW_SENSOR_ID['vMS-Host1']='9' +PW_SENSOR_ID['vMS-Host2']='10' +PW_SENSOR_ID['vMS-Host7']='11' +PW_SENSOR_ID['vMS-Host8']='12' declare -A PW_ESXI_MON_HOSTS -PW_ESXI_MON_HOSTS['esxi0']='10.10.2.10' -PW_ESXI_MON_HOSTS['esxi1']='10.10.2.11' -PW_ESXI_MON_HOSTS['esxi2']='10.10.2.12' -PW_ESXI_MON_HOSTS['esxi7']='10.10.2.17' -PW_ESXI_MON_HOSTS['esxi8']='10.2.1.18' +PW_ESXI_MON_HOSTS['vMS-Host0']='10.10.2.10' +PW_ESXI_MON_HOSTS['vMS-Host1']='10.10.2.11' +PW_ESXI_MON_HOSTS['vMS-Host2']='10.10.2.12' +PW_ESXI_MON_HOSTS['vMS-Host7']='10.10.2.17' +PW_ESXI_MON_HOSTS['vMS-Host8']='10.2.1.18' declare -A PW_ESXI_HOST_NAMES PW_ESXI_HOST_NAMES['10.10.2.10']='iDS-vMS-scsi.scity.us' diff --git a/powerwall.sh b/powerwall.sh index 3a4a2149..620b86a7 100755 --- a/powerwall.sh +++ b/powerwall.sh @@ -29,14 +29,47 @@ CHECKTEMP(){ for SENSOR in ${!PW_SENSOR_ID[@]}; do if [[ "${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}" + + 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 + if [[ "$"]] 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 @@ -49,7 +82,7 @@ CHECKTEMP(){ CHECKTEMPSENSOR(){ echo ${PW_TEMP_THRESHOLDS[${1}]} | cut -d',' -f 1 | read temp_warn echo ${PW_TEMP_THRESHOLDS[${1}]} | cut -d',' -f 2 | read temp_crit - average=$(AVERAGETEMP ${PW_SENSOR_ID[${1}]} 3) + [ "${PW_SENSOR_TYPE[${1}]}" != "esxi" ] && average=$(AVERAGETEMP ${PW_SENSOR_ID[${1}]} 3) || average=${2} if [ "${PW_SENSOR_TYPE[${1}]}" == "mqtt" ]; then mqtt_message=`${mqtt_conn} -t tele/${1}/SENSOR -C 1` @@ -66,35 +99,10 @@ CHECKTEMPSENSOR(){ fi elif [ "${PW_SENSOR_TYPE[${1}]}" == "esxi" ]; then - for e in ${!PW_ESXI_MON_HOSTS[@]}; do - vHOSTIP=${PW_ESXI_MON_HOSTS[${e}]} - 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 - sensor=$(echo ${sensordata} | cut -d'T' -f1 | xargs) - temp_c=$(echo ${sensordata} | cut -d'p' -f2 | awk '/ / {print $2}' | sed -e 's/C//g'); current=${current/ /} - temp_warn=$(echo ${sensordata} | cut -d'p' -f2 | awk '/ / {print $7}' | sed -e 's/C//g'); warn=${warn/ /} - temp_crit=$(echo ${sensordata} | cut -d'p' -f2 | awk '/ / {print $4}' | sed -e 's/C//g'); crit=${crit/ /} - - - - done - - - else #host down - if [ ! -f ${PW_TMPFOLDER}/${e}.down ] || [ $(expr `date +%s` - $(stat -c %Y ${PW_TMPFOLDER}/${e}.down)) -ge 1800 ]; then - SENDNOTICE "${vHOSTIP} ERROR" "${vHOSTNAME} Host is down" 1 - echo "($datetime) - ${vHOSTIP} - ${vHOSTNAME} Host is down" >> ${logtemp} - touch ${PW_TMPFOLDER}/${e}.down - - fi - - fi - done - + temp_c=${2} + temp_warn=${3} + temp_crit=${4} + fi if [ "$temp_c" != "null" ] && [ "$temp_c" != "" ]; then @@ -294,35 +302,35 @@ CHECKTEMP_SERVICE(){ fi ############################# - else #esxi hosts - for e in ${!PW_ESXI_MON_HOSTS[@]}; do - vHOSTIP=${PW_ESXI_MON_HOSTS[${e}]} - 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 - sensor=$(echo ${sensordata} | cut -d'T' -f1 | xargs) - temp=$(echo ${sensordata} | cut -d'p' -f2 | awk '/ / {print $2}' | sed -e 's/C//g'); current=${current/ /} - warn=$(echo ${sensordata} | cut -d'p' -f2 | awk '/ / {print $7}' | sed -e 's/C//g'); warn=${warn/ /} - crit=$(echo ${sensordata} | cut -d'p' -f2 | awk '/ / {print $4}' | sed -e 's/C//g'); crit=${crit/ /} - - - - done - - - else #host down - if [ ! -f ${PW_TMPFOLDER}/${e}.down ] || [ $(expr `date +%s` - $(stat -c %Y ${PW_TMPFOLDER}/${e}.down)) -ge 1800 ]; then - SENDNOTICE "${vHOSTIP} ERROR" "${vHOSTNAME} Host is down" 1 - echo "($datetime) - ${vHOSTIP} - ${vHOSTNAME} Host is down" >> ${logtemp} - touch ${PW_TMPFOLDER}/${e}.down - - fi - - fi - done + # else #esxi hosts + # for e in ${!PW_ESXI_MON_HOSTS[@]}; do + # vHOSTIP=${PW_ESXI_MON_HOSTS[${e}]} + # 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 + # sensor=$(echo ${sensordata} | cut -d'T' -f1 | xargs) + # temp=$(echo ${sensordata} | cut -d'p' -f2 | awk '/ / {print $2}' | sed -e 's/C//g'); current=${current/ /} + # warn=$(echo ${sensordata} | cut -d'p' -f2 | awk '/ / {print $7}' | sed -e 's/C//g'); warn=${warn/ /} + # crit=$(echo ${sensordata} | cut -d'p' -f2 | awk '/ / {print $4}' | sed -e 's/C//g'); crit=${crit/ /} + # + # + # + # done + # + # + # else #host down + # if [ ! -f ${PW_TMPFOLDER}/${e}.down ] || [ $(expr `date +%s` - $(stat -c %Y ${PW_TMPFOLDER}/${e}.down)) -ge 1800 ]; then + # SENDNOTICE "${vHOSTIP} ERROR" "${vHOSTNAME} Host is down" 1 + # echo "($datetime) - ${vHOSTIP} - ${vHOSTNAME} Host is down" >> ${logtemp} + # touch ${PW_TMPFOLDER}/${e}.down + # + # fi + # + # fi + # done fi