This commit is contained in:
2023-12-10 16:14:25 -06:00
parent 24800b3d5f
commit ab41f6ed98
3 changed files with 71 additions and 74 deletions

View File

@@ -14,20 +14,20 @@ PW_LOGPOWER=${PW_LOGFOLDER}/log-power
. /opt/idssys/powerwall/settings.conf
SHUTDOWNSERVERS_AT_LOAD=90 #percent
SHUTDOWNSERVERS_AT_LOAD=80 #percent
SHUTDOWNSERVERS_AFTER=5 #minutes
WAIT_TO_POWER_SERVERS=5 #minutes
LOG_INTERVAL_NORMAL=60 #minutes
LOG_INTERVAL_ABNORMAL=30 #seconds
LOG_INTERVAL_CHARGING=120 #seconds
RENOTIFY_LOWPOWER=5 #minutes
RENOTIFY_LOWPOWER=10 #minutes
PW_OFFSITEHOSTS="10.2.1.11"
# PW_OFFSITEHOSTS="10.2.1.11 10.2.1.12"
# TEST=true #full
if [ "$TEST" != "" ]; then
SHUTDOWNSERVERS_AT_LOAD=70
SHUTDOWNSERVERS_AT_LOAD=95
WAIT_TO_POWER_SERVERS=1
LOG_INTERVAL_NORMAL=1
LOG_INTERVAL_ABNORMAL=1
@@ -116,14 +116,12 @@ $(date)"
touch ${PW_TMPFOLDER}/power.offsite.ac.low.notice
fi
# if ([ ${OFFSITE_BATT_CAP%.*} -le ${SHUTDOWNSERVERS_AT_LOAD} ] || [ $(expr `date +%s` - $(stat -f %m ${PW_TMPFOLDER}/power.offsite.ac.low)) -ge $(echo "scale=2; ${SHUTDOWNSERVERS_AFTER}*60" | bc) ]) && [ ! -f ${PW_TMPFOLDER}/power.offsite.off ]; then
if [ ${OFFSITE_BATT_CAP%.*} -le ${SHUTDOWNSERVERS_AT_LOAD} ] && [ ! -f ${PW_TMPFOLDER}/power.offsite.off ]; then
if ([ ${OFFSITE_BATT_CAP%.*} -le ${SHUTDOWNSERVERS_AT_LOAD} ] || [ $(expr `date +%s` - $(stat -f %m ${PW_TMPFOLDER}/power.offsite.ac.low)) -ge $(echo "scale=2; ${SHUTDOWNSERVERS_AFTER}*60" | bc) ]) && [ ! -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}
SENDNOTICE "OFFSITE HOST POWER" "Powering DOWN offsite host(s) due to power outage" 1
touch ${PW_TMPFOLDER}/power.offsite.off
for host in ${PW_OFFSITEHOSTS}; do
if [ "$TEST" = "" ] || [ "$TEST" = "full" ]; then
# ssh root@${host} /vmfs/volumes/652c94ef-ee49895b-365d-00109b3fea40/.SCRIPTS/esxi-shutdown2.sh &
ssh root@${host} sh < ${PW_FOLDER}/esxi-scripts/esxi-shutdown2.sh &
else
echo "TESTMODE: Shutting down '${host}'"
@@ -136,17 +134,16 @@ $(date)"
fi
else
if [ $(expr `date +%s` - $(stat -f %m ${PW_TMPFOLDER}/power.ups.losscomm)) -ge 30 ]; then
if [ ! -f ${PW_TMPFOLDER}/power.ups.losscomm ]; then
touch ${PW_TMPFOLDER}/power.ups.losscomm
elif [ $(expr `date +%s` - $(stat -f %m ${PW_TMPFOLDER}/power.ups.losscomm)) -ge 60 ]; then
echo "($(date +'%Y-%m-%d %H:%M:%S')) - 0.0'volts - 0'% Battery - Restarting NUT service" >> ${PW_LOGFILE}
SENDNOTICE "NUT DRIVER FAILURE" "Restarting NUT service"
/usr/local/etc/rc.d/nut.sh restart
sleep 10s
rm -f ${PW_TMPFOLDER}/power.ups.losscomm
elif [ ! -f ${PW_TMPFOLDER}/power.ups.losscomm ]; then
touch ${PW_TMPFOLDER}/power.ups.losscomm
fi
fi
sleep 5s
done
@@ -164,38 +161,38 @@ PWO_RESTART() {
}
# LOGROTATE(){
# lm=`expr $(date +'%m') - 1`
# if [ ${lm} = 0 ]; then
# lm=12
# ly=`expr $(date +'%Y') - 1`
# else
# ly=$(date +'%Y')
# fi
# [ ${lm} -lt 10 ] && lm="0${lm}"
# ARCHIVEFOLDER=${PW_LOGARCHIVE}/${ly}-${lm}
# # mkdir -p ${ARCHIVEFOLDER}
# # mv ${PW_LOGFOLDER}/log* ${ARCHIVEFOLDER}/ 2> /dev/null
# [ ! -f ${PW_LOGFILE} ] && touch ${PW_LOGFILE}
# [ ! -f ${PW_LOGPOWER} ] && touch ${PW_LOGPOWER}
# backupstokeep=($(ls -d ${PW_LOGARCHIVE}/* 2> /dev/null | sort | tail -12))
# for folder in $(ls -d ${PW_LOGARCHIVE}/* | sort -r); do
# keep=0
# for filetokeep in ${backupstokeep[@]}; do
# echo "$folder $filetokeep"
# if [ "${folder}" == "${filetokeep}" ]; then
# keep=1; break
# fi
# done;
# [ ${keep} == 0 ] && rm -Rf ${folder}
# done
# }
LOGROTATE(){
lm=`expr $(date +'%m') - 1`
if [ ${lm} = 0 ]; then
lm=12
ly=`expr $(date +'%Y') - 1`
else
ly=$(date +'%Y')
fi
[ ${lm} -lt 10 ] && lm="0${lm}"
ARCHIVEFOLDER=${PW_LOGARCHIVE}/${ly}-${lm}
mkdir -p ${ARCHIVEFOLDER}
PWO_STOP
mv ${PW_LOGFOLDER}/log* ${ARCHIVEFOLDER}/ 2> /dev/null
PWO_START
backupstokeep=($(ls -d ${PW_LOGARCHIVE}/* 2> /dev/null | sort | tail -12))
for folder in $(ls -d ${PW_LOGARCHIVE}/* | sort -r); do
keep=0
for filetokeep in ${backupstokeep[@]}; do
echo "$folder $filetokeep"
if [ "${folder}" == "${filetokeep}" ]; then
keep=1; break
fi
done;
[ ${keep} == 0 ] && rm -Rf ${folder}
done
}
case $1 in
start) PWO_START &;;
stop) PWO_STOP;;
restart) PWO_RESTART;;
# logrotate) LOGROTATE;;
logrotate) LOGROTATE;;
update)
cd ${PW_FOLDER}
if [ "`git log --pretty=%H ...refs/heads/master^ | head -n 1`" != "`git ls-remote origin -h refs/heads/master |cut -f1`" ]; then