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

@@ -1,5 +1,5 @@
VERS='2.4.11-12102023'
VERS='2.4.12-12102023'
noheader=' update service dailytemp '
hc_cw=60

View File

@@ -1,42 +1,42 @@
#/bin/sh
#Shutdown servers with pass-through devices
#vim-cmd vmsvc/power.shutdown 3
VMS=`vim-cmd vmsvc/getallvms | grep -v Vmid | awk '{print $1}'`
for VM in $VMS ; do
PWR=`vim-cmd vmsvc/power.getstate $VM | grep -v "Retrieved runtime info"`
if [ "$PWR" == "Powered on" ] ; then
name=`vim-cmd vmsvc/get.config $VM | grep -i "name =" | awk '{print $3}' | head -1 | cut -d "\"" -f2`
echo "Powered on: $name"
echo "Suspending: $name"
vim-cmd vmsvc/power.suspend $VM > /dev/null &
fi
done
while true ; do
RUNNING=0
for VM in $VMS ; do
PWR=`vim-cmd vmsvc/power.getstate $VM | grep -v "Retrieved runtime info"`
if [ "$PWR" == "Powered on" ] ; then
echo "Waiting..."
RUNNING=1
fi
done
if [ $RUNNING -eq 0 ] ; then
echo "Gone..."
break
fi
sleep 1
done
echo "Now we put the Host into maintenance mode..."
echo "Putting the Host into maintenance mode ..."
vim-cmd hostsvc/maintenance_mode_enter
echo "Now we suspend the Host..."
esxcli system shutdown poweroff -d 10 -r "Shell initiated system shutdown"
VMS=`vim-cmd vmsvc/getallvms | grep -v Vmid | awk '{print $1}'`
for VM in $VMS; do
if [ $VM -eq $VM ]; then
PWR=`vim-cmd vmsvc/power.getstate $VM | grep -v "Retrieved runtime info"`
if [ "$PWR" == "Powered on" ] ; then
name=`vim-cmd vmsvc/get.config $VM | grep -i "name =" | awk '{print $3}' | head -1 | cut -d "\"" -f2`
echo "Shutting down: $name"
vim-cmd vmsvc/power.shutdown $VM > /dev/null &
fi
fi
done
echo "Waiting for all VM's to be powered off ..."
while true ; do
RUNNING=0
for VM in $VMS; do
if [ $VM -eq $VM ]; then
PWR=`vim-cmd vmsvc/power.getstate $VM | grep -v "Retrieved runtime info"`
if [ "$PWR" == "Powered on" ] ; then
RUNNING=1
fi
fi
done
if [ $RUNNING -eq 0 ] ; then
echo "DONE"
break
fi
sleep 1
done
echo "Shutting down the Host in 10secs ..."
esxcli system shutdown poweroff -d 10 -r "Power-Monitor script initiated system shutdown"
echo "Disable maintenance mode before powering off ..."
esxcli system maintenanceMode set -e false -t 0
exit
exit 0

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