From 1d8f17bbea733d268b9945fc5ef5604439287ce9 Mon Sep 17 00:00:00 2001 From: David Schroeder Date: Fri, 12 Jan 2024 09:12:44 -0600 Subject: [PATCH] Update power.inc.sh --- inc/power.inc.sh | 106 +++++++++++++++++++++++------------------------ 1 file changed, 52 insertions(+), 54 deletions(-) diff --git a/inc/power.inc.sh b/inc/power.inc.sh index a76f9c82..66c67a40 100644 --- a/inc/power.inc.sh +++ b/inc/power.inc.sh @@ -1,17 +1,33 @@ AVERAGEPOWER(){ - total=0 sensorid=${1} daysback=${2} - [ "${3}" != "" ] && ptype=${3} || ptype=watt logsfound=0; - while IFS=$'\t' read date ${ptype} ;do - total=$(bc <<< "scale=2; ${total}+${!ptype}") - ((logsfound++)) - done < <(${mysql_conn} -se "USE servermonitor; SELECT date,${ptype} from power_data WHERE sensorid=${sensorid} AND date BETWEEN DATE_SUB(DATE(NOW()), INTERVAL ${daysback} DAY) AND NOW() ORDER BY id DESC;") - [ "${logsfound}" != "0" ] && average=$(bc <<< "scale=2; ${total}/${logsfound}/1") || average=0 - # echo "$total-$logsfound=${average}" - # echo "${average}-(${logsfound})" - echo ${average} + if [ "${3}" == "both" ]; then + total_amp=0 + total_watt=0 + while IFS=$'\t' read date amp watt ;do + total_amp=$(bc <<< "scale=2; ${total_amp}+${amp}") + total_watt=$(bc <<< "scale=2; ${total_watt}+${watt}") + ((logsfound++)) + done < <(${mysql_conn} -se "USE servermonitor; SELECT date,amp,watt from power_data WHERE sensorid=${sensorid} AND date BETWEEN DATE_SUB(DATE(NOW()), INTERVAL ${daysback} DAY) AND NOW() ORDER BY id DESC;") + if [ "${logsfound}" != "0" ]; then + average_amp=$(bc <<< "scale=2; ${total_amp}/${logsfound}") + average_watt=$(bc <<< "scale=2; ${total_watt}/${logsfound}") + else + average_amp=0 + average_watt=0 + fi + echo "${average_amp}~${average_watt}" + else + total=0 + [ "${3}" != "" ] && ptype=${3} || ptype=watt + while IFS=$'\t' read date ${ptype} ;do + total=$(bc <<< "scale=2; ${total}+${!ptype}") + ((logsfound++)) + done < <(${mysql_conn} -se "USE servermonitor; SELECT date,${ptype} from power_data WHERE sensorid=${sensorid} AND date BETWEEN DATE_SUB(DATE(NOW()), INTERVAL ${daysback} DAY) AND NOW() ORDER BY id DESC;") + [ "${logsfound}" != "0" ] && average=$(bc <<< "scale=2; ${total}/${logsfound}") || average=0 + echo ${average} + fi } CHECKPOWER(){ @@ -105,7 +121,9 @@ CHECKPOWER(){ # echo DIVIDER . lightCyan 75 - [ ${REPORT} -eq 0 ] && echo -en "${idsCL[Yellow]}Pulling data from 'ServerRoom' ... " + if [ ${REPORT} -eq 0 ]; then + [ "${avgdays}" == "" ] && echo -en "${idsCL[Yellow]}Pulling data from 'ServerRoom' ... " || echo -en "${idsCL[Yellow]}Pulling data from 'ServerRoom' and calculating averages ... " + fi # if [ "$(CHECK_HOST ${PW_UPS_IP})" != "false" ]; then SVRRM_VOLTIN=$(snmpwalk -t 1 -r 0 -v 1 -c public ${PW_UPS_IP} iso.3.6.1.4.1.850.1.1.3.1.3.2.2.1.3.1.1 | sed 's/.*: //') @@ -134,62 +152,42 @@ CHECKPOWER(){ VOLT_DROP=`echo "scale=1; ${OUTPUTV2}-${SVRRM_VOLTIN}" | bc` fi + if [ "${avgdays}" != "" ]; then + APCPDU_AMP_avg=$(AVERAGEPOWER ${PW_POWERSENSOR_ID['server-rack']} ${avgdays} amp) + APCPDU_WATT_avg=$(AVERAGEPOWER ${PW_POWERSENSOR_ID['server-rack']} ${avgdays}) + NETRK_AMP_avg=$(AVERAGEPOWER ${PW_POWERSENSOR_ID['network-rack']} ${avgdays} amp) + NETRK_WATT_avg=$(AVERAGEPOWER ${PW_POWERSENSOR_ID['network-rack']} ${avgdays}) + SVRRM_AMP_avg=$(AVERAGEPOWER ${PW_POWERSENSOR_ID['total']} ${avgdays} amp) + SVRRM_WATT_avg=$(AVERAGEPOWER ${PW_POWERSENSOR_ID['total']} ${avgdays}) + fi + if [ ${REPORT} -eq 0 ]; then echo -en "\r\033[K" - # echo -e "${idsCL[White]}ServerRack Amps ${idsCL[Default]}: ${idsCL[Green]}`IDS_NUMBER_FORMAT ${APCPDU_AMP}`'amps${idsCL[Default]}" - MSG="${idsCL[White]}ServerRack Amps ${idsCL[Default]}: ${idsCL[Green]}`IDS_NUMBER_FORMAT ${APCPDU_AMP}`'amps${idsCL[Default]}" - echo -en "${MSG}" - if [ "${avgdays}" != "" ]; then - echo -en "${idsCL[LightYellow]} Calculating average ...${idsCL[Default]}" - average=$(AVERAGEPOWER ${PW_POWERSENSOR_ID['server-rack']} ${avgdays} amp); average_disp="${idsCL[LightYellow]} `IDS_NUMBER_FORMAT ${average}`'amps" - echo -en "\r\033[K"; echo -en "${MSG}${idsCL[LightYellow]}${average_disp}" - fi - echo -e "${idsCL[Default]}" + echo -en "${idsCL[White]}ServerRack Amps ${idsCL[Default]}: ${idsCL[Green]}`IDS_NUMBER_FORMAT ${APCPDU_AMP}`'amps" + [ "${avgdays}" != "" ] && echo -e "${idsCL[LightYellow]} `IDS_NUMBER_FORMAT ${APCPDU_AMP_avg}`'amps${idsCL[Default]}" || echo -e "${idsCL[Default]}" - MSG="${idsCL[White]}ServerRack Wattage ${idsCL[Default]}: ${idsCL[Green]}`IDS_NUMBER_FORMAT ${APCPDU_WATT} 0`'watts ${idsCL[Default]}~ est" - echo -en "${MSG}" - if [ "${avgdays}" != "" ]; then - echo -en "${idsCL[LightYellow]} Calculating average ...${idsCL[Default]}" - average=$(AVERAGEPOWER ${PW_POWERSENSOR_ID['server-rack']} ${avgdays}); average_disp="${idsCL[LightYellow]} `IDS_NUMBER_FORMAT ${average} 0`'watts" - echo -en "\r\033[K"; echo -en "${MSG}${idsCL[LightYellow]}${average_disp}" - else - echo -en " ${idsCL[LightCyan]}(`IDS_NUMBER_FORMAT ${APCPDU_WATT2}` watts)" - fi - echo -e "${idsCL[Default]}" + echo -en "${idsCL[White]}ServerRack Wattage ${idsCL[Default]}: ${idsCL[Green]}`IDS_NUMBER_FORMAT ${APCPDU_WATT} 0`'watts ${idsCL[Default]}~ est" + [ "${avgdays}" != "" ] && echo -e "${idsCL[LightYellow]} `IDS_NUMBER_FORMAT ${APCPDU_WATT_avg} 0`'watts${idsCL[Default]}" || echo -e " ${idsCL[LightCyan]}(`IDS_NUMBER_FORMAT ${APCPDU_WATT2}` watts)${idsCL[Default]}" DIVIDER . lightCyan 75 + + echo -en "${idsCL[White]}NetworkRack Amps ${idsCL[Default]}: ${idsCL[Green]}`IDS_NUMBER_FORMAT ${NETRK_AMP}`'amps ${idsCL[Default]}~ est" + [ "${avgdays}" != "" ] && echo -e "${idsCL[LightYellow]} `IDS_NUMBER_FORMAT ${NETRK_AMP_avg}`'amps${idsCL[Default]}" || echo -e "${idsCL[Default]}" + + echo -en "${idsCL[White]}NetworkRack Wattage ${idsCL[Default]}: ${idsCL[Green]}`IDS_NUMBER_FORMAT ${NETRK_WATT} 0`'watts ${idsCL[Default]}~ est" + [ "${avgdays}" != "" ] && echo -e "${idsCL[LightYellow]} `IDS_NUMBER_FORMAT ${NETRK_WATT_avg} 0`'watts${idsCL[Default]}" || echo -e " ${idsCL[LightCyan]}(`IDS_NUMBER_FORMAT ${NETRK_WATT2} 0` watts) ${idsCL[Default]}~ est${idsCL[Default]}" - echo -e "${idsCL[White]}NetworkRack Amps ${idsCL[Default]}: ${idsCL[Green]}`IDS_NUMBER_FORMAT ${NETRK_AMP}`'amps ${idsCL[Default]}~ est${idsCL[Green]}${idsCL[Default]}" - MSG="${idsCL[White]}NetworkRack Wattage ${idsCL[Default]}: ${idsCL[Green]}`IDS_NUMBER_FORMAT ${NETRK_WATT} 0`'watts ${idsCL[Default]}~ est" - echo -en "${MSG}" - if [ "${avgdays}" != "" ]; then - echo -en "${idsCL[LightYellow]} Calculating average ...${idsCL[Default]}" - average=$(AVERAGEPOWER ${PW_POWERSENSOR_ID['network-rack']} ${avgdays}); average_disp="${idsCL[LightYellow]} `IDS_NUMBER_FORMAT ${average} 0`'watts" - echo -en "\r\033[K"; echo -en "${MSG}${idsCL[LightYellow]}${average_disp}" - else - echo -en " ${idsCL[LightCyan]}(`IDS_NUMBER_FORMAT ${NETRK_WATT2} 0` watts) ${idsCL[Default]}~ est" - fi - echo -e "${idsCL[Default]}" - - # echo DIVIDER . lightCyan 75 fi echo -e "${idsCL[White]}Server Room Voltage IN ${idsCL[Default]}: ${idsCL[Green]}${SVRRM_VOLTIN}'volts${idsCL[Default]}" echo -e "${idsCL[White]}Server Room Voltage OUT ${idsCL[Default]}: ${idsCL[Green]}${SVRRM_VOLTOUT}'volts${idsCL[Default]}" [ ${REPORT} -eq 0 ] && echo -e "${idsCL[LightCyan]}Voltage Drop ${idsCL[Default]}: ${idsCL[LightRed]}${VOLT_DROP}'volts${idsCL[Default]}" - echo -e "${idsCL[White]}Server Room Amps ${idsCL[Default]}: ${idsCL[Green]}${SVRRM_AMP}'amps${idsCL[Default]}" - - MSG="${idsCL[White]}Server Room Wattage ${idsCL[Default]}: ${idsCL[Green]}`IDS_NUMBER_FORMAT ${SVRRM_WATT} 0`'watts" - echo -en "${MSG}" - if [ "${avgdays}" != "" ]; then - echo -en "${idsCL[LightYellow]} Calculating average ...${idsCL[Default]}" - average=$(AVERAGEPOWER ${PW_POWERSENSOR_ID['total']} ${avgdays}); average_disp="${idsCL[LightYellow]} `IDS_NUMBER_FORMAT ${average} 0`'watts" - echo -en "\r\033[K"; echo -e "${MSG}${idsCL[LightYellow]}${average_disp}${idsCL[Default]}" - else - echo -e "${idsCL[Default]}" - fi + echo -en "${idsCL[White]}Server Room Amps ${idsCL[Default]}: ${idsCL[Green]}${SVRRM_AMP}'amps" + [ "${avgdays}" != "" ] && echo -e "${idsCL[LightYellow]} `IDS_NUMBER_FORMAT ${SVRRM_AMP_avg}`'amps${idsCL[Default]}" || echo -e "${idsCL[Default]}" + echo -en "${idsCL[White]}Server Room Wattage ${idsCL[Default]}: ${idsCL[Green]}`IDS_NUMBER_FORMAT ${SVRRM_WATT} 0`'watts" + [ "${avgdays}" != "" ] && echo -e "${idsCL[LightYellow]} `IDS_NUMBER_FORMAT ${average} 0`'watts${idsCL[Default]}" || echo -e "${idsCL[Default]}" [ ${REPORT} -eq 0 ] && echo fi