From eeb947493a351605ea81d709211341ef8d58ebf4 Mon Sep 17 00:00:00 2001 From: David Schroeder Date: Sun, 5 Nov 2023 20:34:41 -0600 Subject: [PATCH] Update offsite-power-check.sh --- offsite-power-check.sh | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/offsite-power-check.sh b/offsite-power-check.sh index c7e5bba9..60b6a48d 100755 --- a/offsite-power-check.sh +++ b/offsite-power-check.sh @@ -10,6 +10,19 @@ PW_TMPFOLDER=${PW_FOLDER}/.tmp . /opt/idssys/powerwall/settings.conf +SHUTDOWNSERVERS_AT_LOAD=70 #percent +WAIT_TO_POWER_SERVERS=5 #minutes +LOG_INTERVAL_NORMAL=60 #minutes +LOG_INTERVAL_ABNORMAL=5 #minutes + +TEST=true +if [ "$TEST" = "true" ]; then + SHUTDOWNSERVERS_AT_LOAD=95 #percent + WAIT_TO_POWER_SERVERS=1 #minutes + LOG_INTERVAL_NORMAL=1 #minutes + LOG_INTERVAL_ABNORMAL=1 #minutes +fi + SENDNOTICE2(){ TITLE=${1} @@ -57,14 +70,17 @@ VOLTAGE: ${OFFSITE_VOLTIN}'Volts" if [ ! -f ${PW_TMPFOLDER}/power.offsite.restored ]; then touch ${PW_TMPFOLDER}/power.offsite.restored - elif [ $(expr `date +%s` - $(stat -f %m ${PW_TMPFOLDER}/power.offsite.restored)) -gt 300 ]; then + elif [ $(expr `date +%s` - $(stat -f %m ${PW_TMPFOLDER}/power.offsite.restored)) -gt $(expr ${WAIT_TO_POWER_SERVERS} * 60) ]; then echo "($(date +'%Y-%m-%d %H:%M:%S')) - ${OFFSITE_VOLTIN}'Volts - ${OFFSITE_BATT_CAP}% Battery - Powering Hosts ON After Power Outage" >> ${PW_LOGFILE} SENDNOTICE2 "OFFSITE HOST POWER" "Powering offsite host(s) back on after power outage" - ipmitool -I lanplus -H 10.2.1.21 -U ${PW_ESXI_USER} -P "${PW_ESXI_PASS}" chassis power on & + [ "$TEST" != "true" ] && ipmitool -I lanplus -H 10.2.1.21 -U ${PW_ESXI_USER} -P "${PW_ESXI_PASS}" chassis power on & rm -f ${PW_TMPFOLDER}/power.offsite.* fi fi - [ $(expr `date +%s` - $(stat -f %m ${PW_LOGPOWER})) -gt 300 ] && echo "($(date +'%Y-%m-%d %H:%M:%S')) - ${OFFSITE_VOLTIN}'Volts - ${OFFSITE_BATT_CAP}% Battery - Normal" >> ${PW_LOGPOWER} + logtime=$(expr `date +%s` - $(stat -f %m ${PW_LOGPOWER})) + if [ ${logtime} -gt $(expr ${LOG_INTERVAL_NORMAL} * 60) ] || ([ ${OFFSITE_BATT_CAP%.*} -lt 100 ] && [ ${logtime} -gt $(expr ${LOG_INTERVAL_ABNORMAL} * 60) ]); then + echo "($(date +'%Y-%m-%d %H:%M:%S')) - ${OFFSITE_VOLTIN}'Volts - ${OFFSITE_BATT_CAP}% Battery - Normal" >> ${PW_LOGPOWER} + fi else if [ ! -f ${PW_TMPFOLDER}/power.offsite.ac.low ] || [ $(expr `date +%s` - $(stat -f %m ${PW_TMPFOLDER}/power.offsite.ac.low)) -gt 240 ]; then echo "($(date +'%Y-%m-%d %H:%M:%S')) - ${OFFSITE_VOLTIN}'Volts - ${OFFSITE_BATT_CAP}% Battery - Powering LOW/OFF!" >> ${PW_LOGFILE} @@ -74,13 +90,13 @@ BATT RUNTIME: ${OFFSITE_BATT_RUNTIME}'Mins" 1 touch ${PW_TMPFOLDER}/power.offsite.ac.low fi - if [ ${OFFSITE_BATT_CAP%.*} -lt 70 ] && [ ! -f ${PW_TMPFOLDER}/power.offsite.off ]; then + if [ ${OFFSITE_BATT_CAP%.*} -lt ${SHUTDOWNSERVERS_AT_LOAD} ] && [ ! -f ${PW_TMPFOLDER}/power.offsite.off ]; then echo "($(date +'%Y-%m-%d %H:%M:%S')) - ${OFFSITE_VOLTIN}'Volts - ${OFFSITE_BATT_CAP}% Battery - Powering Down Hosts!" >> ${PW_LOGFILE} SENDNOTICE2 "OFFSITE HOST POWER" "Powering DOWN offsite host(s) due to power outage" 1 touch ${PW_TMPFOLDER}/power.offsite.off - ssh root@10.2.1.11 /vmfs/volumes/652c94ef-ee49895b-365d-00109b3fea40/.SCRIPTS/esxi-shutdown2.sh & + [ "$TEST" != "true" ] && ssh root@10.2.1.11 /vmfs/volumes/652c94ef-ee49895b-365d-00109b3fea40/.SCRIPTS/esxi-shutdown2.sh & fi - [ $(expr `date +%s` - $(stat -f %m ${PW_LOGPOWER})) -gt 300 ] && echo "($(date +'%Y-%m-%d %H:%M:%S')) - ${OFFSITE_VOLTIN}'Volts - ${OFFSITE_BATT_CAP}% Battery - OFF/LOW POWER!!" >> ${PW_LOGPOWER} + [ $(expr `date +%s` - $(stat -f %m ${PW_LOGPOWER})) -gt $(expr ${LOG_INTERVAL_ABNORMAL} * 60) ] && echo "($(date +'%Y-%m-%d %H:%M:%S')) - ${OFFSITE_VOLTIN}'Volts - ${OFFSITE_BATT_CAP}% Battery - OFF/LOW POWER!!" >> ${PW_LOGPOWER} fi else