This commit is contained in:
2024-02-06 08:17:28 -06:00
parent e0f3a6a60c
commit 6329317325
3 changed files with 31 additions and 31 deletions

View File

@@ -1,6 +1,6 @@
#!/usr/bin/env bash
VERS='2.5.255-02052024'
VERS='2.5.257-02062024'
noheader=' update service dailytemp confsync -r -report '

View File

@@ -1,7 +1,7 @@
AVERAGEPOWER(){
sensorid=${1}
daysback=${2}
if [ "${3}" == "both" ]; then
if [ "${3}" = "both" ]; then
logsfound_amp=0;
logsfound_watt=0;
total_amp=0
@@ -60,10 +60,10 @@ CHECKPOWER(){
esac
shift 1
done
[ "${avgdays}" == "0" ] && unset avgdays
[ "${avgdays}" = "0" ] && unset avgdays
[ "${avgdays}" != "" ] && avgdayshdr="${avgdays}-Day-Avg" || avgdayshdr=""
if ([ "${STYPE}" == "" ] || [ "${STYPE}" == "mainsite" ]) && [ "${PTYPE}" != "esxi" ]; then
if ([ "${STYPE}" = "" ] || [ "${STYPE}" = "mainsite" ]) && [ "${PTYPE}" != "esxi" ]; then
[ ${REPORT} -eq 0 ] && echo
[ ${REPORT} -eq 0 ] && DIVIDER . yellow ${PRI_WIDTH}
echo -e "${idsCL[Yellow]}Mainsite Power Information ${idsCL[LightYellow]}${avgdayshdr}"
@@ -76,9 +76,9 @@ CHECKPOWER(){
[ "${TEST_INPUTACV}" != "" ] && INPUTV=${TEST_INPUTACV} || INPUTV=$(echo ${INVSTATSINFO} | jq '.inputs .inV')
INPUTA=`echo ${INVSTATSINFO} | jq '.inputs .inA'`
INV_ALARM=`echo ${INVSTATSINFO} | jq '.errors .Alms'`
[ "${INV_ALARM}" == "0" ] && INV_ALARM_disp="${idsCL[Green]}No Alarms (${INV_ALARM})" || INV_ALARM_disp="${idsCL[LightRed]}${PW_INVERTER_ALARMS[${INV_ALARM}]}"
[ "${INV_ALARM}" = "0" ] && INV_ALARM_disp="${idsCL[Green]}No Alarms (${INV_ALARM})" || INV_ALARM_disp="${idsCL[LightRed]}${PW_INVERTER_ALARMS[${INV_ALARM}]}"
INV_ERROR=`echo ${INVSTATSINFO} | jq '.errors .Err'`
[ "${INV_ERROR}" == "0" ] && INV_ERROR_disp="${idsCL[Green]}No Errors (${INV_ERROR})" || INV_ERROR_disp="${idsCL[LightRed]}${PW_INVERTER_ERRORS[${INV_ERROR}]}"
[ "${INV_ERROR}" = "0" ] && INV_ERROR_disp="${idsCL[Green]}No Errors (${INV_ERROR})" || INV_ERROR_disp="${idsCL[LightRed]}${PW_INVERTER_ERRORS[${INV_ERROR}]}"
INV_STATE=`echo ${INVSTATSINFO} | jq '.stats .invSTATES'`
[ "${INV_STATE}" != "0" ] && INV_STATE_disp="${idsCL[Green]}${PW_INVERTER_STATES[${INV_STATE}]}" || INV_STATE_disp="${idsCL[LightRed]}${PW_INVERTER_STATES[${INV_STATE}]}"
INV_MODE=`echo ${INVSTATSINFO} | jq '.stats .power'`
@@ -97,7 +97,7 @@ CHECKPOWER(){
else
BATTA_disp="${idsCL[Green]}`IDS_NUMBER_FORMAT ${BATTA}`'amps ${idsCL[LightCyan]}- Float Charging"
fi
elif [ "${BATTA}" == "-0.1" ] || [ "${BATTA}" == "-0.2" ] || [ "${BATTA}" == "-0.3" ]; then
elif [ "${BATTA}" = "-0.1" ] || [ "${BATTA}" = "-0.2" ] || [ "${BATTA}" = "-0.3" ]; then
BATTA_disp="${idsCL[LightCyan]}`IDS_NUMBER_FORMAT ${BATTA}`'amps ${idsCL[LightCyan]}- Standby"
else
BATTA_disp="${idsCL[LightRed]}`IDS_NUMBER_FORMAT ${BATTA}`'amps ${idsCL[LightCyan]}- Discharging"
@@ -206,7 +206,7 @@ CHECKPOWER(){
fi
if ([ "${STYPE}" == "" ] || [ "${STYPE}" == "offsite" ]) && [ "${PTYPE}" != "esxi" ]; then
if ([ "${STYPE}" = "" ] || [ "${STYPE}" = "offsite" ]) && [ "${PTYPE}" != "esxi" ]; then
DIVIDER . yellow ${PRI_WIDTH}
echo -e "${idsCL[Yellow]}Offsite Power Information ${idsCL[LightYellow]}${avgdayshdr}"
@@ -215,7 +215,7 @@ CHECKPOWER(){
[ ${REPORT} -eq 0 ] && echo -en "${idsCL[Yellow]}Pulling data from 'Offsite' ... "
# upsinfo=$(ssh -q -o ConnectTimeout=3 -o ConnectionAttempts=1 admin@10.2.1.1 'upsc CP1500PFCLCD')
upsinfo=$(ssh -q -o ConnectTimeout=3 -o ConnectionAttempts=1 root@${PW_OFFSITE_MONITOR} 'upsc offsite-ups')
upsinfo=$(ssh -q -o ConnectTimeout=3 -o ConnectionAttempts=1 root@${PW_OFFSITE_MONITOR} 'upsc CP1500PFCLCD')
if [ "$(echo "${upsinfo}" | grep 'input.voltage:')" != "" ]; then
OFFSITE_VOLTIN=$(echo "${upsinfo}" | grep 'input.voltage:' | sed 's/.*: //')
OFFSITE_VOLTOUT=$(echo "${upsinfo}" | grep 'output.voltage:' | sed 's/.*: //')
@@ -270,7 +270,7 @@ CHECKPOWER(){
fi
for SENSOR in ${PW_SENSOR_ORD[@]}; do
if [ "${PW_HOST_IDRACS[${SENSOR}]}" != "" ]; then
if [ "${STYPE}" == "" ] || ([ "${STYPE}" == "mainsite" ] && [[ "${PW_HOST_IDRACS[${SENSOR}]}" = *"10.10."* ]]) || ([ "${STYPE}" == "offsite" ] && [[ "${PW_HOST_IDRACS[${SENSOR}]}" = *"10.2.1."* ]]); then
if [ "${STYPE}" = "" ] || ([ "${STYPE}" = "mainsite" ] && [[ "${PW_HOST_IDRACS[${SENSOR}]}" = *"10.10."* ]]) || ([ "${STYPE}" = "offsite" ] && [[ "${PW_HOST_IDRACS[${SENSOR}]}" = *"10.2.1."* ]]); then
[ ${REPORT} -eq 0 ] && echo -en "${idsCL[Yellow]}Pulling data for '${SENSOR}' ... "
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 2> /dev/null | sed -e 's/"//g')
@@ -304,14 +304,14 @@ CHECKPOWER(){
elif [ "$(ipmitool -I lanplus -H ${PW_HOST_IDRACS[${SENSOR}]} -U ${PW_ESXI_USER} -P "${PW_ESXI_PASS}" chassis power status | grep off)" != "" ]; then
HOST_WATTS_disp="${idsCL[LightRed]}Host powered down"
HOST_WATTS=-1
elif [ "${HOST_WATTS}" == "0" ]; then
elif [ "${HOST_WATTS}" = "0" ]; then
HOST_WATTS_disp="${idsCL[Yellow]}Host PSU not capable"
HOST_WATTS=-2
else
HOST_WATTS_disp="${idsCL[LightRed]}Could not pull data"
fi
[ "${HOST_WATTS}" == "" ] && HOST_WATTS=0
[ "${HOST_WATTS}" = "" ] && HOST_WATTS=0
else
HOST_WATTS_disp="${idsCL[LightRed]}Host offline"
@@ -338,7 +338,7 @@ CHECKPOWER(){
average_watt=$(echo ${average} | cut -d'~' -f 2)
average_disp="${idsCL[LightYellow]} ${average_amp}'amps - `IDS_NUMBER_FORMAT ${average_watt} 0`'watts"
echo -en "\r\033[K"; echo -en "${MSG}${idsCL[LightYellow]}${average_disp}"
if [[ "${PW_MAINSITE_HOSTS}" == *"${PW_HOST_ADDRESSES[${SENSOR}]}"* ]]; then
if [[ "${PW_MAINSITE_HOSTS}" = *"${PW_HOST_ADDRESSES[${SENSOR}]}"* ]]; then
AVERAGE_WATTS_MAINSITE=`echo "scale=2; ${AVERAGE_WATTS_MAINSITE}+${average_watt}" | bc`
AVERAGE_AMPS_MAINSITE=`echo "scale=2; ${AVERAGE_AMPS_MAINSITE}+${average_amp}" | bc`
else
@@ -355,11 +355,11 @@ CHECKPOWER(){
fi
done
DIVIDER . lightCyan ${PRI_WIDTH}
if [ "${STYPE}" == "" ] || [ "${STYPE}" == "mainsite" ]; then
if [ "${STYPE}" = "" ] || [ "${STYPE}" = "mainsite" ]; then
echo -en "${idsCL[LightCyan]}Mainsite Total ${idsCL[Default]}: ${idsCL[LightGreen]}${SENSOR_TOTAL_AMPS_MAINSITE}'amps - `IDS_NUMBER_FORMAT ${SENSOR_TOTAL_WATTS_MAINSITE} 0`'watts"
[ "${avgdays}" != "" ] && echo -e "${idsCL[LightYellow]} ${AVERAGE_AMPS_MAINSITE}'amps - `IDS_NUMBER_FORMAT ${AVERAGE_WATTS_MAINSITE} 0`'watts" || echo
fi
if [ "${STYPE}" == "" ] || [ "${STYPE}" == "offsite" ]; then
if [ "${STYPE}" = "" ] || [ "${STYPE}" = "offsite" ]; then
echo -en "${idsCL[LightCyan]}Offsite Total ${idsCL[Default]}: ${idsCL[LightGreen]}${SENSOR_TOTAL_AMPS_OFFSITE}'amps - `IDS_NUMBER_FORMAT ${SENSOR_TOTAL_WATTS_OFFSITE} 0`'watts"
[ "${avgdays}" != "" ] && echo -e "${idsCL[LightYellow]} ${AVERAGE_AMPS_OFFSITE}'amps - `IDS_NUMBER_FORMAT ${AVERAGE_WATTS_OFFSITE} 0`'watts" || echo
fi
@@ -563,7 +563,7 @@ OFFSITE_CHECKPOWER_SERVICE(){
PW_OFFSITEHOSTS=$(echo ${PW_OFFSITE_HOSTS} | tr ',' ' ')
# TEST=true
# TEST=full
TEST=full
if [ "${TEST}" != "" ]; then
PW_OFFSITE_SHUTDOWNSERVERS_AT_LOAD=95 #percent
PW_OFFSITE_SHUTDOWNSERVERS_AFTER=1 #minutes
@@ -576,7 +576,7 @@ OFFSITE_CHECKPOWER_SERVICE(){
fi
# upsinfo=$(upsc CP1500PFCLCD)
upsinfo=$(upsc offsite-ups 2>&1)
upsinfo=$(upsc CP1500PFCLCD 2>&1)
if [ "$(echo "${upsinfo}" | grep 'input.voltage:' | sed 's/.*: //')" != "" ]; then
rm -f ${PW_TMPFOLDER}/power.ups.losscomm
OFFSITE_VOLTIN=$(echo "${upsinfo}" | grep 'input.voltage:' | sed 's/.*: //')
@@ -631,7 +631,7 @@ $(date)"
echo "($(date +'%Y-%m-%d %H:%M:%S')) - ${OFFSITE_VOLTIN}'volts - ${OFFSITE_BATT_CAP}'% Battery - Powering Hosts ON After Power Outage" >> ${PW_LOGFILE}
SENDNOTICE "OFFSITE HOST POWER" "Powering offsite host(s) back ONLINE after power outage"
for host in ${PW_OFFSITEHOSTS_IDRAC}; do
if [ "${TEST}" == "" ] || [ "${TEST}" == "full" ]; then
if [ "${TEST}" = "" ] || [ "${TEST}" = "full" ]; then
ipmitool -I lanplus -H ${host} -U ${PW_ESXI_USER} -P "${PW_ESXI_PASS}" chassis power on &
else
echo "TESTMODE: Powering up '${host}'"
@@ -748,7 +748,7 @@ POWERLOGGER_SERVICE(){
fi
# upsinfo=$(ssh -q -o ConnectTimeout=3 -o ConnectionAttempts=1 admin@10.2.1.1 'upsc CP1500PFCLCD')
upsinfo=$(ssh -q -o ConnectTimeout=3 -o ConnectionAttempts=1 root@${PW_OFFSITE_MONITOR} 'upsc offsite-ups')
upsinfo=$(ssh -q -o ConnectTimeout=3 -o ConnectionAttempts=1 root@${PW_OFFSITE_MONITOR} 'upsc CP1500PFCLCD')
if [ "$(echo "${upsinfo}" | grep 'input.voltage:')" != "" ]; then
OFFSITE_VOLTOUT=$(echo "${upsinfo}" | grep 'output.voltage:' | sed 's/.*: //')
OFFSITE_LOAD=$(echo "${upsinfo}" | grep 'ups.load:' | sed 's/.*: //')
@@ -818,7 +818,7 @@ HOSTPOWER(){
idracip=${PW_HOST_IDRACS[${tmp}]}
elif [ "${PW_HOST_IDRACS[iDS-vMS-Host${1}]}" != "" ]; then
idracip=${PW_HOST_IDRACS[iDS-vMS-Host${1}]}
elif ([ "${1::1}" == "o" ] || [ "${1::1}" == "O" ]) && [ "${PW_HOST_ADDRESSES[OFF-vMS-Host${1: -1}]}" != "" ]; then
elif ([ "${1::1}" = "o" ] || [ "${1::1}" = "O" ]) && [ "${PW_HOST_ADDRESSES[OFF-vMS-Host${1: -1}]}" != "" ]; then
idracip=${PW_HOST_IDRACS[OFF-vMS-Host${1: -1}]}
elif [ "${PW_HOST_IDRACS[${1}]}" != "" ]; then
idracip=${PW_HOST_IDRACS[${1}]}
@@ -832,8 +832,8 @@ HOSTPOWER(){
if [ "${idracip}" != "" ]; then
if [ "${2^^}" == "ON" ] || [ "${2^^}" == "OFF" ] || [ "${2^^}" == "STATUS" ]; then
if [ "${idracip}" == "10.10.2.20" ] && [ "${2^^}" == "ON" ]; then
if [ "${2^^}" = "ON" ] || [ "${2^^}" = "OFF" ] || [ "${2^^}" = "STATUS" ]; then
if [ "${idracip}" = "10.10.2.20" ] && [ "${2^^}" = "ON" ]; then
MSG="Powering ON the SAS Enclosure"
c=0; MSG_SPC=''; spc1=`expr ${HC_CW} - ${#MSG}`; until [ ${c} = ${spc1} ]; do MSG_SPC="${MSG_SPC} "; ((c++)); done
echo -en "\n${idsCL[LightCyan]}${MSG}${MSG_SPC}: "
@@ -843,7 +843,7 @@ HOSTPOWER(){
run=$(snmpset -v 1 -c private ${PW_APCPDU_IP} .1.3.6.1.4.1.318.1.1.12.3.3.1.1.4.14 i 1 >/dev/null 2>&1)
sleep 3s
echo -e "${idsCL[Green]}Done${idsCL[Default]}\n"
elif [ "${current_status}" == "1" ]; then
elif [ "${current_status}" = "1" ]; then
echo -e "${idsCL[Green]}SAS Enclosure Already Powered ON${idsCL[Default]}\n"
fi
else
@@ -853,7 +853,7 @@ HOSTPOWER(){
if [ "${TEST}" != "true" ]; then
current_status=$(ipmitool -I lanplus -H ${idracip} -U ${PW_ESXI_USER} -P "${PW_ESXI_PASS}" chassis power status | grep "Power is ${2,,}")
if [ "${current_status}" == "" ]; then
if [ "${current_status}" = "" ]; then
echo -e "${idsCL[Green]}"
ipmitool -I lanplus -H ${idracip} -U ${PW_ESXI_USER} -P "${PW_ESXI_PASS}" chassis power ${2,,}
else
@@ -865,12 +865,12 @@ HOSTPOWER(){
fi
echo -e "${idsCL[Default]}"
if [ "${idracip}" == "10.10.2.20" ] && [ "${2^^}" == "OFF" ]; then
if [ "${idracip}" = "10.10.2.20" ] && [ "${2^^}" = "OFF" ]; then
MSG="Powering OFF the SAS Enclosure"
c=0; MSG_SPC=''; spc1=`expr ${HC_CW} - ${#MSG}`; until [ ${c} = ${spc1} ]; do MSG_SPC="${MSG_SPC} "; ((c++)); done
echo -en "${idsCL[LightCyan]}${MSG}${MSG_SPC}: "
if [ "${TEST}" != "true" ]; then
if [ "$(CHECK_HOST 10.10.2.10)" == "false" ]; then
if [ "$(CHECK_HOST 10.10.2.10)" = "false" ]; then
run=$(snmpset -v 1 -c private ${PW_APCPDU_IP} .1.3.6.1.4.1.318.1.1.12.3.3.1.1.4.14 i 2 >/dev/null 2>&1)
sleep 3s
echo -e "${idsCL[Green]}Done${idsCL[Default]}\n"
@@ -907,9 +907,9 @@ PDUCONTROL(){
DIVIDER . yellow ${PRI_WIDTH}
echo -e "${idsCL[Yellow]}APC-PDU Power Control"
DIVIDER true yellow ${PRI_WIDTH}
until [ "${PORTSEL^^}" == "E" ]; do
until [ "${PORTSEL^^}" = "E" ]; do
[ "${PORT_SEL}" != "" ] && PORTSEL=${PORT_SEL}
if [ "${PORTSEL}" == "" ]; then
if [ "${PORTSEL}" = "" ]; then
PORT_DESC=$(snmpwalk -t 1 -r 0 -v 1 -c public ${PW_APCPDU_IP} .1.3.6.1.4.1.318.1.1.12.3.3.1.1.2 -O vq 2> /dev/null | sed -e 's/"//g')
PORT_POWER=$(snmpwalk -t 1 -r 0 -v 1 -c public ${PW_APCPDU_IP} .1.3.6.1.4.1.318.1.1.12.3.3.1.1.4 -O vq 2> /dev/null | sed -e 's/"//g')
IFS=$'\n'
@@ -935,7 +935,7 @@ PDUCONTROL(){
# done
fi
[ "${PORTSEL^^}" == "E" ] && exit 0
[ "${PORTSEL^^}" = "E" ] && exit 0
[ "${PORTSEL}" != "" ] && tp=$(expr ${PORTSEL} - 1)
if [ "${PORTSEL}" != "" ] && [[ "${PORTSEL}" =~ ^[0-9]+$ ]] && [ "${PORT_DESC[${tp}]}" != "" ] && [ ${PORTSEL} -ne 0 ]; then
@@ -959,7 +959,7 @@ PDUCONTROL(){
;;
esac
[ "${PORT_SEL}" == "" ] && unset PORTSEL
[ "${PORT_SEL}" = "" ] && unset PORTSEL
else
echo -e "\n${idsCL[LightRed]}Not a valid port number${idsCL[Default]}"
unset PORTSEL

View File

@@ -32,7 +32,7 @@ PWO_START(){
fi
# upsinfo=$(upsc CP1500PFCLCD)
upsinfo=$(upsc offsite-ups 2>&1)
upsinfo=$(upsc CP1500PFCLCD 2>&1)
if [ "$(echo "${upsinfo}" | grep 'input.voltage:' | sed 's/.*: //')" != "" ]; then
rm -f ${PW_TMPFOLDER}/power.ups.losscomm
OFFSITE_VOLTIN=$(echo "${upsinfo}" | grep 'input.voltage:' | sed 's/.*: //')