From f430cc09e143718805e6144274c6e7780eac6b92 Mon Sep 17 00:00:00 2001 From: David Schroeder Date: Sun, 3 Dec 2023 11:20:04 -0600 Subject: [PATCH] Update powerwall.sh --- powerwall.sh | 121 ++++++++++++++++++++++++++------------------------- 1 file changed, 61 insertions(+), 60 deletions(-) diff --git a/powerwall.sh b/powerwall.sh index 5281c99d..83e3374d 100755 --- a/powerwall.sh +++ b/powerwall.sh @@ -531,16 +531,17 @@ CHECKPOWER(){ while [ $# -gt 0 ]; do case "$1" in -avg) avgdays=${2};; - -offsite) PTYPE=offsite;; - -mainsite) PTYPE=mainsite;; + -offsite) STYPE=offsite;; + -mainsite) STYPE=mainsite;; -hosts) PTYPE=hosts;; + -power) PTYPE=power;; esac shift 1 done [ "${avgdays}" = "0" ] && unset avgdays [ "${avgdays}" != "" ] && avgdayshdr="${avgdays}-Day-Avg" || avgdayshdr="" - if [ "${PTYPE}" == "" ] || [ "${PTYPE}" == "all" ] || [ "${PTYPE}" == "mainsite" ]; then + if ([ "${STYPE}" == "" ] || [ "${STYPE}" == "mainsite" ]) && [ "${PTYPE}" != "hosts" ]; then echo DIVIDER . yellow 75 echo -e "${idsCL[Yellow]}Mainsite Power Information ${avgdayshdr}" @@ -665,8 +666,7 @@ CHECKPOWER(){ fi - - if [ "${PTYPE}" == "" ] || [ "${PTYPE}" == "all" ] || [ "${PTYPE}" == "offsite" ]; then + if ([ "${STYPE}" == "" ] || [ "${STYPE}" == "offsite" ]) && [ "${PTYPE}" != "hosts" ]; then DIVIDER . yellow 75 echo -e "${idsCL[Yellow]}Offsite Power Information ${avgdayshdr}" @@ -726,67 +726,68 @@ CHECKPOWER(){ # echo fi - - DIVIDER . yellow 75 - echo -e "${idsCL[Yellow]}ESXi Host Power Information ${avgdayshdr}" - DIVIDER . yellow 75 + if [ "${PTYPE}" != "power" ]; then + DIVIDER . yellow 75 + echo -e "${idsCL[Yellow]}ESXi Host Power Information ${avgdayshdr}" + DIVIDER . yellow 75 - for SENSOR in ${PW_SENSOR_ORD[@]}; do - if [ "${PW_HOST_IDRACS[${SENSOR}]}" != "" ]; then - gochk=0 - if [ "${PTYPE}" == "" ] || [ "${PTYPE}" == "hosts" ] || ([ "${PTYPE}" == "mainsite" ] && [[ "${PW_HOST_IDRACS[${SENSOR}]}" = *"10.10."* ]]) || ([ "${PTYPE}" == "offsite" ] && [[ "${PW_HOST_IDRACS[${SENSOR}]}" = *"10.2.1."* ]]); then - gochk=1 - fi - if [ ${gochk} -eq 1 ]; then - echo -en "${idsCL[Yellow]}Pulling data for '${SENSOR}' ... " + for SENSOR in ${PW_SENSOR_ORD[@]}; do + if [ "${PW_HOST_IDRACS[${SENSOR}]}" != "" ]; then + gochk=0 + if ([ "${STYPE}" == "mainsite" ] && [[ "${PW_HOST_IDRACS[${SENSOR}]}" = *"10.10."* ]]) || ([ "${STYPE}" == "offsite" ] && [[ "${PW_HOST_IDRACS[${SENSOR}]}" = *"10.2.1."* ]]); then + gochk=1 + fi + if [ ${gochk} -eq 1 ]; then + echo -en "${idsCL[Yellow]}Pulling data for '${SENSOR}' ... " - # HOST_WATTS=$(snmpwalk -t 1 -r 0 -v 1 -c public ${PW_HOST_IDRACS[${SENSOR}]} iso.3.6.1.4.1.674.10892.5.4.600.30.1.6.1.3 | sed 's/.*: //') - # if [ "${HOST_WATTS}" = "" ]; then - HOST_WATT_SENSORS=$(snmpwalk -t 1 -r 0 -v 1 -c public ${PW_HOST_IDRACS[${SENSOR}]} iso.3.6.1.4.1.674.10892.5.4.600.30.1.8.1 -O vq | sed -e 's/"//g') - IFS=$'\n' - read -rd '' -a HOST_WATT_SENSORS <<<"${HOST_WATT_SENSORS}" - unset IFS - found=0 - for s in {1..5}; do - DP=$(snmpwalk -t 1 -r 0 -v 1 -c public ${PW_HOST_IDRACS[${SENSOR}]} iso.3.6.1.4.1.674.10892.5.4.600.30.1.8.1.${s} | sed 's/.*: //') - if [[ "${DP}" = *"System Board"* ]]; then - found=1 - HOST_WATTS=$(snmpwalk -t 1 -r 0 -v 1 -c public ${PW_HOST_IDRACS[${SENSOR}]} iso.3.6.1.4.1.674.10892.5.4.600.30.1.6.1.${s} | sed 's/.*: //') - # break + # HOST_WATTS=$(snmpwalk -t 1 -r 0 -v 1 -c public ${PW_HOST_IDRACS[${SENSOR}]} iso.3.6.1.4.1.674.10892.5.4.600.30.1.6.1.3 | sed 's/.*: //') + # if [ "${HOST_WATTS}" = "" ]; then + HOST_WATT_SENSORS=$(snmpwalk -t 1 -r 0 -v 1 -c public ${PW_HOST_IDRACS[${SENSOR}]} iso.3.6.1.4.1.674.10892.5.4.600.30.1.8.1 -O vq | sed -e 's/"//g') + IFS=$'\n' + read -rd '' -a HOST_WATT_SENSORS <<<"${HOST_WATT_SENSORS}" + unset IFS + found=0 + for s in {1..5}; do + DP=$(snmpwalk -t 1 -r 0 -v 1 -c public ${PW_HOST_IDRACS[${SENSOR}]} iso.3.6.1.4.1.674.10892.5.4.600.30.1.8.1.${s} | sed 's/.*: //') + if [[ "${DP}" = *"System Board"* ]]; then + found=1 + HOST_WATTS=$(snmpwalk -t 1 -r 0 -v 1 -c public ${PW_HOST_IDRACS[${SENSOR}]} iso.3.6.1.4.1.674.10892.5.4.600.30.1.6.1.${s} | sed 's/.*: //') + # break - elif [[ "${DP}" = *"PS1"* ]]; then - PS1=$(snmpwalk -t 1 -r 0 -v 1 -c public ${PW_HOST_IDRACS[${SENSOR}]} iso.3.6.1.4.1.674.10892.5.4.600.30.1.6.1.${s} | sed 's/.*: //') - elif [[ "${DP}" = *"PS2"* ]]; then - PS2=$(snmpwalk -t 1 -r 0 -v 1 -c public ${PW_HOST_IDRACS[${SENSOR}]} iso.3.6.1.4.1.674.10892.5.4.600.30.1.6.1.${s} | sed 's/.*: //') + elif [[ "${DP}" = *"PS1"* ]]; then + PS1=$(snmpwalk -t 1 -r 0 -v 1 -c public ${PW_HOST_IDRACS[${SENSOR}]} iso.3.6.1.4.1.674.10892.5.4.600.30.1.6.1.${s} | sed 's/.*: //') + elif [[ "${DP}" = *"PS2"* ]]; then + PS2=$(snmpwalk -t 1 -r 0 -v 1 -c public ${PW_HOST_IDRACS[${SENSOR}]} iso.3.6.1.4.1.674.10892.5.4.600.30.1.6.1.${s} | sed 's/.*: //') + fi + done + if [ ${found} -eq 1 ]; then + [[ "${HOST_WATTS}" = *"Timeout"* ]] && HOST_WATTS_disp="${idsCL[LightRed]}Host Offline" || HOST_WATTS_disp="${idsCL[Green]}`IDS_NUMBER_FORMAT ${HOST_WATTS}`'watts" + else + HOST_WATTS_disp="${idsCL[LightRed]}Could not pull data" fi - done - if [ ${found} -eq 1 ]; then - [[ "${HOST_WATTS}" = *"Timeout"* ]] && HOST_WATTS_disp="${idsCL[LightRed]}Host Offline" || HOST_WATTS_disp="${idsCL[Green]}`IDS_NUMBER_FORMAT ${HOST_WATTS}`'watts" - else - HOST_WATTS_disp="${idsCL[LightRed]}Could not pull data" - fi - # fi - MSG="${idsCL[White]}${SENSOR} ${idsCL[Default]}: ${HOST_WATTS_disp}" - echo -en "\r\033[K${MSG}" + # fi + MSG="${idsCL[White]}${SENSOR} ${idsCL[Default]}: ${HOST_WATTS_disp}" + echo -en "\r\033[K${MSG}" - if [ "${avgdays}" != "" ] && [ "${HOST_WATTS}" != "0" ]; then - echo -en "${idsCL[LightYellow]} Calculating average ...${idsCL[Default]}" - average=$(AVERAGEPOWER ${PW_POWERSENSOR_ID[${SENSOR}]} ${avgdays}); average_disp="${idsCL[LightYellow]} `IDS_NUMBER_FORMAT ${average}`'watts" - echo -en "\r\033[K"; echo -en "${MSG}${idsCL[LightYellow]}${average_disp}" - elif [ "${HOST_WATTS}" != "0" ]; then - [ "${PS1}" == "" ] && PS1="0.0" || PS1=`echo "scale=1; ${PS1}/10" | bc`; (( $(bc <<<"${PS1} < 1") )) && [[ "${PS1}" = *"."* ]] && PS1="0${PS1}" - if [ "${PS2}" == "" ]; then - PS2='0.0' - else - PS2=`echo "scale=1; ${PS2}/10" | bc` - (( $(bc <<<"${PS2} < 1") )) && [[ "${PS2}" = *"."* ]] && PS2="0${PS2}" - fi - echo -en "${idsCL[LightCyan]} [PS1=${PS1}'A, PS2=${PS2}'A]" - fi - echo -e "${idsCL[Default]}" + if [ "${avgdays}" != "" ] && [ "${HOST_WATTS}" != "0" ]; then + echo -en "${idsCL[LightYellow]} Calculating average ...${idsCL[Default]}" + average=$(AVERAGEPOWER ${PW_POWERSENSOR_ID[${SENSOR}]} ${avgdays}); average_disp="${idsCL[LightYellow]} `IDS_NUMBER_FORMAT ${average}`'watts" + echo -en "\r\033[K"; echo -en "${MSG}${idsCL[LightYellow]}${average_disp}" + elif [ "${HOST_WATTS}" != "0" ]; then + [ "${PS1}" == "" ] && PS1="0.0" || PS1=`echo "scale=1; ${PS1}/10" | bc`; (( $(bc <<<"${PS1} < 1") )) && [[ "${PS1}" = *"."* ]] && PS1="0${PS1}" + if [ "${PS2}" == "" ]; then + PS2='0.0' + else + PS2=`echo "scale=1; ${PS2}/10" | bc` + (( $(bc <<<"${PS2} < 1") )) && [[ "${PS2}" = *"."* ]] && PS2="0${PS2}" + fi + echo -en "${idsCL[LightCyan]} [PS1=${PS1}'A, PS2=${PS2}'A]" + fi + echo -e "${idsCL[Default]}" + fi fi - fi - done + done + fi end=`date +%s`; runtime=$((end-start)); echo -e "\nruntime: ${runtime}"