update
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
|
||||
VERS='2.4.11-12102023'
|
||||
VERS='2.4.12-12102023'
|
||||
|
||||
noheader=' update service dailytemp '
|
||||
hc_cw=60
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user