From 4493334866b2cc897b2c11d89c2387375809db03 Mon Sep 17 00:00:00 2001 From: David Schroeder Date: Sun, 1 Jun 2025 15:54:25 -0500 Subject: [PATCH] update --- defaults.inc | 4 ++-- inc/power.inc.sh | 18 ++++++++---------- powerwall.sh | 35 ++++++++++++++++++----------------- 3 files changed, 28 insertions(+), 29 deletions(-) diff --git a/defaults.inc b/defaults.inc index f6a3d9de..b2f81842 100755 --- a/defaults.inc +++ b/defaults.inc @@ -1,6 +1,6 @@ #!/usr/bin/env bash -PW_VERS='2.10.t-05312025' +PW_VERS='2.10.2-06012025' noheader=' update service dailytemp confsync -r -report test ' @@ -107,7 +107,7 @@ SENDNOTICE(){ if [ "${PUSHOVER_APP_TOKEN}" != "" ]; then SN_TIT="$(echo -e "${1}" | sed "s/\%/\%25 /g")" SN_MSG="$(echo -e "${2}" | sed "s/\%/\%25 /g")" - if [ "${TEST_INPUTACV}" != "" ] || [ "${TEST_BATTVOLT}" != "" ]; then + if [ ${TESTMODE} -eq 1 ]; then PUSH_TO_MOBILE "***TEST MODE*** ${SN_MSG} diff --git a/inc/power.inc.sh b/inc/power.inc.sh index b21b0518..e8cba26f 100644 --- a/inc/power.inc.sh +++ b/inc/power.inc.sh @@ -182,7 +182,7 @@ CHECKPOWER(){ echo fi echo -en "${idsCL[White]}Inverter Input Volts ${idsCL[Default]}: ${idsCL[Green]}`IDS_NUMBER_FORMAT ${INPUTV}`'V" - [ "${TEST_INPUTACV}" != "" ] && echo -e " ${idsCL[Yellow]}***TEST MODE***" || echo "" + [ ${TESTMODE} -eq 1 ] && echo -e " ${idsCL[Yellow]}***TEST MODE***" || echo "" echo -e "${idsCL[White]}Inverter Input Amps ${idsCL[Default]}: ${idsCL[Green]}`IDS_NUMBER_FORMAT ${INPUTA}`'A" if [ ${REPORT} -eq 0 ]; then echo @@ -790,9 +790,7 @@ CHECKPOWER_SERVICE(){ start=$(date +%s) log_start=$(date "+%Y-%m-%d %H:%M:%S") source ${PW_FOLDER}/defaults.inc - - ([ "${TEST_INPUTACV}" != "" ] || [ "${TEST_BATTVOLT}" != "" ]) && TESTMODE=1 || TESTMODE=0 - + if [[ "${IP}" != "10.6.1"* ]]; then INVSTATSINFO=$(curl -m 3 -s "http://${PW_INVERTER_IP}/stats.json") @@ -1003,11 +1001,11 @@ OFFSITE_CHECKPOWER_SERVICE(){ PW_OFFSITE_SHUTDOWNSERVERS_AT_BATTCAP=98 #percent PW_OFFSITE_SHUTDOWNSERVERS_AFTER=1 #minutes PW_OFFSITE_WAIT_TO_POWER_SERVERS=1 #minutes - TESTMODE="### TEST MODE ACTIVE ### + TESTMSG="### TEST MODE ACTIVE ### " else - TESTMODE="" + TESTMSG="" fi # upsinfo=$(upsc offsite-ups) @@ -1043,7 +1041,7 @@ OFFSITE_CHECKPOWER_SERVICE(){ fi SENDNOTICE2(){ - MESSAGE="${TESTMODE}${2} + MESSAGE="${TESTMSG}${2} BATTERY CHARGE: ${OFFSITE_BATT_CAP}'% BATT RUNTIME: ${OFFSITE_BATT_RUNTIME}'mins @@ -1484,7 +1482,7 @@ HOSTPOWER(){ 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}: " - if [ "${TEST}" != "true" ]; then + if [ ${TESTMODE} -eq 0 ]; then current_status=$(snmpwalk -t 3 -r 0 -v 1 -c public ${PW_APCPDU_IP} .1.3.6.1.4.1.318.1.1.12.3.3.1.1.4.14 | sed 's/.*: //') if [ "${current_status}" != "" ] && [ "${current_status}" != "1" ]; 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 1 >/dev/null 2>&1) @@ -1498,7 +1496,7 @@ HOSTPOWER(){ fi fi - if [ "${TEST}" != "true" ]; then + if [ ${TESTMODE} -eq 0 ]; then current_status=$(ipmitool -I lanplus -H ${idracip} -U ${PW_ESXI_USER} -P "${ESXI_PASS}" chassis power status | grep "Power is ${2,,}") if [ "${current_status}" = "" ]; then echo -e "${idsCL[Green]}" @@ -1516,7 +1514,7 @@ HOSTPOWER(){ 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 [ ${TESTMODE} -eq 0 ]; then if [ "$(CHECK_HOST ${PW_ISCSI_PRI_HOST})" = "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 diff --git a/powerwall.sh b/powerwall.sh index 75e418c0..27c43a16 100755 --- a/powerwall.sh +++ b/powerwall.sh @@ -11,7 +11,8 @@ source /opt/idssys/powerwall/inc/power.inc.sh source /opt/idssys/powerwall/inc/temp.inc.sh -[ "${TESTMODE_ENABLE}" == "true" ] && TEST=true +[ "${TESTMODE_ENABLE^^}" == "TRUE" ] && TESTMODE=1 || TESTMODE=0 + shopt -s lastpipe @@ -280,7 +281,7 @@ SHUTDOWN_SERVER(){ MSG="Increasing DRS CPU-Overcommit to 4" c=0; MSG_SPC=''; spc1=`expr ${HC_CW} - ${#MSG}`; until [ ${c} = ${spc1} ]; do MSG_SPC="${MSG_SPC} "; ((c++)); done echo -en "${idsCL[White]}${MSG}${MSG_SPC}: " - if [ "${TEST}" != "true" ]; then + if [ ${TESTMODE} -eq 0 ]; then ${PW_FOLDER}/esxi-scripts/set-drs.ps1 4 >/dev/null 2>&1 & echo -e "${idsCL[Green]}Command Sent${idsCL[Default]}\n" else @@ -298,7 +299,7 @@ SHUTDOWN_SERVER(){ fi c=0; MSG_SPC=''; spc1=`expr ${HC_CW} - ${#MSG}`; until [ ${c} = ${spc1} ]; do MSG_SPC="${MSG_SPC} "; ((c++)); done echo -en "${idsCL[White]}${MSG}${idsCL[White]}${MSG_SPC}: " - if [ "${TEST}" != "true" ]; then + if [ ${TESTMODE} -eq 0 ]; then if [ "${ESXI_HOST}" == "${PW_ISCSI_PRI_HOST}" ] || [ "${ESXI_HOST}" == "MAIN" ] || [ "${ESXI_HOST}" == "CONSERVE" ]; then ${PW_FOLDER}/esxi-scripts/iscsi-vm-shutdown.ps1 >/dev/null 2>&1 & elif [ "${ESXI_HOST}" == "${PW_ISCSI_SYS_HOST}" ] || [ "${ESXI_HOST}" == "SYS" ]; then @@ -319,7 +320,7 @@ SHUTDOWN_SERVER(){ # MSG="Disabling CLS for the Offsite Cluster in vCenter" # c=0; MSG_SPC=''; spc1=`expr ${HC_CW} - ${#MSG}`; until [ ${c} = ${spc1} ]; do MSG_SPC="${MSG_SPC} "; ((c++)); done # echo -en "${idsCL[White]}${MSG}${MSG_SPC}: " - # if [ "${TEST}" != "true" ]; then + # if [ ${TESTMODE} -eq 0 ]; then # run=$(ssh -q -o ConnectTimeout=3 -o ConnectionAttempts=1 root@${PW_VCENTERHOST} "sed -i '//{n;s/.*<\/enabled>/False<\/enabled>/}' /etc/vmware-vpx/vpxd.cfg >/dev/null 2>&1" >/dev/null 2>&1) # echo -e "${idsCL[Green]}Done${idsCL[Default]}" # touch ${PW_TMPFOLDER}/shutdown.cls.offsite @@ -331,7 +332,7 @@ SHUTDOWN_SERVER(){ MSG="Disabling CLS for the Primary Cluster in vCenter" c=0; MSG_SPC=''; spc1=`expr ${HC_CW} - ${#MSG}`; until [ ${c} = ${spc1} ]; do MSG_SPC="${MSG_SPC} "; ((c++)); done echo -en "${idsCL[White]}${MSG}${MSG_SPC}: " - if [ "${TEST}" != "true" ]; then + if [ ${TESTMODE} -eq 0 ]; then run=$(ssh -q -o ConnectTimeout=3 -o ConnectionAttempts=1 root@${PW_VCENTERHOST} "sed -i '//{n;s/.*<\/enabled>/False<\/enabled>/}' /etc/vmware-vpx/vpxd.cfg >/dev/null 2>&1" >/dev/null 2>&1) echo -e "${idsCL[Green]}Done${idsCL[Default]}" touch ${PW_TMPFOLDER}/shutdown.cls.mainsite @@ -342,7 +343,7 @@ SHUTDOWN_SERVER(){ MSG="Restarting vCenter CLS Services" c=0; MSG_SPC=''; spc1=`expr ${HC_CW} - ${#MSG}`; until [ ${c} = ${spc1} ]; do MSG_SPC="${MSG_SPC} "; ((c++)); done echo -en "${idsCL[White]}${MSG}${MSG_SPC}: " - if [ "${TEST}" != "true" ]; then + if [ ${TESTMODE} -eq 0 ]; then ssh -q -o ConnectTimeout=3 -o ConnectionAttempts=1 root@${PW_VCENTERHOST} "service-control --stop vmware-vpxd >/dev/null 2>&1 && service-control --start vmware-vpxd >/dev/null 2>&1" >/dev/null & 2>&1 & echo -e "${idsCL[Green]}Continuing in background${idsCL[Default]}" else @@ -356,7 +357,7 @@ SHUTDOWN_SERVER(){ c=0; MSG_SPC=''; spc1=`expr ${HC_CW} - ${#MSG}`; until [ ${c} = ${spc1} ]; do MSG_SPC="${MSG_SPC} "; ((c++)); done echo -en "${idsCL[White]}${MSG//${PW_ESXI_HOST_NAMES[${ESXIHOST}]}/${idsCL[LightCyan]}${PW_ESXI_HOST_NAMES[${ESXIHOST}]}}${idsCL[White]}${MSG_SPC}: " [[ "${PW_HOST_IDRACS[${PW_ESXI_HOST_NAMES[${ESXIHOST}]}]}" = "10.6."* ]] && ESXI_PASS=${PW_ESXI_PASS_KP} || ESXI_PASS=${PW_ESXI_PASS} - if [ "${TEST}" != "true" ]; then + if [ ${TESTMODE} -eq 0 ]; then if [ "$(ipmitool -I lanplus -H ${PW_HOST_IDRACS[${PW_ESXI_HOST_NAMES[${ESXIHOST}]}]} -U ${PW_ESXI_USER} -P "${ESXI_PASS}" chassis power status | grep 'Power is on')" != "" ]; then ${PW_FOLDER}/esxi-scripts/host-maintenance_mode.ps1 ${PW_VCENTER_HOST_NAMES[${ESXIHOST}]} >/dev/null 2>&1 & sleep 10s @@ -377,7 +378,7 @@ SHUTDOWN_SERVER(){ MSG="Starting iSCSI migrations" c=0; MSG_SPC=''; spc1=`expr ${HC_CW} - ${#MSG}`; until [ ${c} = ${spc1} ]; do MSG_SPC="${MSG_SPC} "; ((c++)); done echo -en "${idsCL[White]}${MSG}${MSG_SPC}: " - if [ "${TEST}" != "true" ]; then + if [ ${TESTMODE} -eq 0 ]; then sleep 80s # up from 45s, then 60... echo -e "${idsCL[Green]}Done${idsCL[Default]}" else @@ -391,7 +392,7 @@ SHUTDOWN_SERVER(){ c=0; MSG_SPC=''; spc1=`expr ${HC_CW} - ${#MSG}`; until [ ${c} = ${spc1} ]; do MSG_SPC="${MSG_SPC} "; ((c++)); done echo -en "${idsCL[White]}${MSG}${idsCL[White]}${MSG_SPC}: " # for ESXIHOST in "${PW_MAINSITEHOSTS[@]}"; do - if [ "${TEST}" != "true" ]; then + if [ ${TESTMODE} -eq 0 ]; then if [ "${1}" == "${PW_ISCSI_PRI_HOST}" ] || [ "${1}" == "MAIN" ]; then ${PW_FOLDER}/esxi-scripts/iscsi-vm-shutdown-verify.ps1 >/dev/null 2>&1 elif [ "${1}" == "${PW_ISCSI_SYS_HOST}" ] || [ "${1}" == "SYS" ]; then @@ -410,7 +411,7 @@ SHUTDOWN_SERVER(){ fi # done - # if [ "${TEST}" != "true" ]; then + # if [ ${TESTMODE} -eq 0 ]; then # nc_count=0 # until [ -f ${PW_TMPFOLDER}/verify.iscsi.done ]; do # sleep 1s @@ -429,7 +430,7 @@ SHUTDOWN_SERVER(){ fi c=0; MSG_SPC=''; spc1=`expr ${HC_CW} - ${#MSG}`; until [ ${c} = ${spc1} ]; do MSG_SPC="${MSG_SPC} "; ((c++)); done echo -en "${idsCL[White]}${MSG}${MSG_SPC}: " - if [ "${TEST}" != "true" ]; then + if [ ${TESTMODE} -eq 0 ]; then if [ "${ESXI_HOST}" == "${PW_ISCSI_PRI_HOST}" ] || [ "${ESXI_HOST}" == "MAIN" ] || [ "${ESXI_HOST}" == "CONSERVE" ]; then ${PW_FOLDER}/esxi-scripts/iscsi-server-shutdown.ps1 ${PW_ISCSI_PRI_HOST} >/dev/null 2>&1 & elif [ "${ESXI_HOST}" == "${PW_ISCSI_SYS_HOST}" ] || [ "${ESXI_HOST}" == "SYS" ]; then @@ -448,7 +449,7 @@ SHUTDOWN_SERVER(){ MSG="Shutting down any remaining VM's" c=0; MSG_SPC=''; spc1=`expr ${HC_CW} - ${#MSG}`; until [ ${c} = ${spc1} ]; do MSG_SPC="${MSG_SPC} "; ((c++)); done echo -en "${idsCL[White]}${MSG//${PW_ESXI_HOST_NAMES[${ESXIHOST}]}/${idsCL[LightCyan]}${PW_ESXI_HOST_NAMES[${ESXIHOST}]}}${idsCL[White]}${MSG_SPC}: " - if [ "${TEST}" != "true" ]; then + if [ ${TESTMODE} -eq 0 ]; then for ESXIHOST in "${ESXI_HOSTS[@]}"; do varvms="${PW_VCENTER_HOST_NAMES[${ESXIHOST}]},${varvms}" done @@ -483,7 +484,7 @@ SHUTDOWN_SERVER(){ MSG="Waiting for ${PW_VCENTER_HOST_NAMES[${PW_MAIN_ISCSI}]} to shutdown" c=0; MSG_SPC=''; spc1=`expr ${HC_CW} - ${#MSG}`; until [ ${c} = ${spc1} ]; do MSG_SPC="${MSG_SPC} "; ((c++)); done echo -en "${idsCL[White]}${MSG//${PW_VCENTER_HOST_NAMES[${PW_MAIN_ISCSI}]}/${idsCL[LightCyan]}${PW_VCENTER_HOST_NAMES[${PW_MAIN_ISCSI}]}${idsCL[White]}}${MSG_SPC}: " - if [ "${TEST}" != "true" ]; then + if [ ${TESTMODE} -eq 0 ]; then while ping -qw 10 -c3 "${PW_MAIN_ISCSI}">/dev/null 2>&1; do sleep 1; done sleep 5s echo -e "${idsCL[Green]}Done${idsCL[Default]}" @@ -494,7 +495,7 @@ SHUTDOWN_SERVER(){ MSG="Powering off SAS Enclosure" c=0; MSG_SPC=''; spc1=`expr ${HC_CW} - ${#MSG}`; until [ ${c} = ${spc1} ]; do MSG_SPC="${MSG_SPC} "; ((c++)); done echo -en "${idsCL[White]}${MSG}${MSG_SPC}: " - if [ "${TEST}" != "true" ] && [ "$(CHECK_HOST ${PW_MAIN_ISCSI})" == "false" ]; then + if [ ${TESTMODE} -eq 0 ] && [ "$(CHECK_HOST ${PW_MAIN_ISCSI})" == "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) echo -e "${idsCL[Green]}Done${idsCL[Default]}" else @@ -515,7 +516,7 @@ SHUTDOWN_SERVER(){ MSG="Decreasing DRS CPU-Overcommit back down to 2" c=0; MSG_SPC=''; spc1=`expr ${HC_CW} - ${#MSG}`; until [ ${c} = ${spc1} ]; do MSG_SPC="${MSG_SPC} "; ((c++)); done echo -en "${idsCL[White]}${MSG}${MSG_SPC}: " - if [ "${TEST}" != "true" ]; then + if [ ${TESTMODE} -eq 0 ]; then { sleep 60s; ${PW_FOLDER}/esxi-scripts/set-drs.ps1 2 >/dev/null 2>&1; } & echo -e "${idsCL[Green]}Command Sent${idsCL[Default]}\n" else @@ -634,7 +635,7 @@ HOSTMGMT(){ ([ "${HOST}" == "" ] || ([ "${POWER}" == "" ] && [ "${ESXI}" == "" ])) && echo -e "Invalid command arguments\n" && exit 1 - if [ "${TEST}" != "true" ] && [ "${FORCE}" != "true" ] && ([ "${POWER^^}" == "OFF" ] || [ "${ESXI^^}" == "OFF" ] || [ ${MM} -eq 1 ]); then + if [ ${TESTMODE} -eq 0 ] && [ "${FORCE}" != "true" ] && ([ "${POWER^^}" == "OFF" ] || [ "${ESXI^^}" == "OFF" ] || [ ${MM} -eq 1 ]); then if [ ${MM} -eq 1 ]; then read -n 1 -p "Are you sure you wish to put '${ESXI_HOST}' into maintenance mode ? (y/N): " choice else @@ -687,7 +688,7 @@ HOSTMGMT(){ # MSG="Decreasing DRS CPU-Overcommit back down to 2" # c=0; MSG_SPC=''; spc1=`expr ${HC_CW} - ${#MSG}`; until [ ${c} = ${spc1} ]; do MSG_SPC="${MSG_SPC} "; ((c++)); done # echo -en "${idsCL[White]}${MSG}${MSG_SPC}: " - # if [ "${TEST}" != "true" ]; then + # if [ ${TESTMODE} -eq 0 ]; then # ${PW_FOLDER}/esxi-scripts/set-drs.ps1 2 >/dev/null 2>&1 & # echo -e "${idsCL[Green]}Command Sent${idsCL[Default]}\n" # else