Update power.inc.sh

This commit is contained in:
2024-01-12 09:12:44 -06:00
parent d53d9764a1
commit 1d8f17bbea

View File

@@ -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