This commit is contained in:
2023-08-13 16:42:58 -05:00
parent a634d533e1
commit 0c9e2171bd
3 changed files with 174 additions and 172 deletions

View File

@@ -1,6 +1,6 @@
#!/usr/bin/env bash
VERS='2.168-08122023'
VERS='2.2.1-08132023'
noheader=' update service dailytemp '
@@ -16,61 +16,63 @@ min_battvolt_sys=47
#47
FOLDER='/opt/idssys/powerwall'
LOGFOLDER=${FOLDER}/logs
LOGARCHIVE=${FOLDER}/logs/archive
TMPFOLDER=${FOLDER}/.tmp
[ ! -d ${LOGFOLDER} ] && mkdir ${LOGFOLDER}
[ ! -d ${LOGARCHIVE} ] && mkdir ${LOGARCHIVE}
[ ! -d ${TMPFOLDER} ] && mkdir ${TMPFOLDER}
PW_LOGFOLDER=${PW_FOLDER}/logs
PW_LOGARCHIVE=${PW_FOLDER}/logs/archive
PW_TMPFOLDER=${PW_FOLDER}/.tmp
[ ! -d ${PW_LOGFOLDER} ] && mkdir ${PW_LOGFOLDER}
[ ! -d ${PW_LOGARCHIVE} ] && mkdir ${PW_LOGARCHIVE}
[ ! -d ${PW_TMPFOLDER} ] && mkdir ${PW_TMPFOLDER}
logfile=${LOGFOLDER}/logfile
logpower=${LOGFOLDER}/log-power
[ ! -f ${logfile} ] && touch ${logfile}
[ ! -f ${logpower} ] && touch ${logpower}
PW_LOGFILE=${PW_LOGFOLDER}/logfile
PW_LOGPOWER=${PW_LOGFOLDER}/log-power
[ ! -f ${PW_LOGFILE} ] && touch ${PW_LOGFILE}
[ ! -f ${PW_LOGPOWER} ] && touch ${PW_LOGPOWER}
declare -A TEMP_THRESHOLDS
# TEMP_THRESHOLDS['ServerRoomTH']="72,74,76"
TEMP_THRESHOLDS['ServerRoomTH']="83,88,95"
TEMP_THRESHOLDS['RaspberryPI-CPU']="122,131,176"
TEMP_THRESHOLDS['OctoPI-CPU']="122,131,176"
declare -A PW_TEMP_THRESHOLDS
# PW_TEMP_THRESHOLDS['ServerRoomTH']="72,74,76"
PW_TEMP_THRESHOLDS['ServerRoomTH']="83,88,95"
PW_TEMP_THRESHOLDS['RaspberryPI-CPU']="122,131,176"
PW_TEMP_THRESHOLDS['OctoPI-CPU']="122,131,176"
declare -A SENSOR_TYPE
SENSOR_TYPE['ServerRoomTH']='mqtt'
SENSOR_TYPE['RaspberryPI-CPU']='system'
SENSOR_TYPE['OctoPI-CPU']='remotesystem'
declare -A PW_SENSOR_TYPE
PW_SENSOR_TYPE['ServerRoomTH']='mqtt'
PW_SENSOR_TYPE['RaspberryPI-CPU']='system'
PW_SENSOR_TYPE['OctoPI-CPU']='remotesystem'
declare -A REMOTE_SENSORS
REMOTE_SENSORS['ServerRoomTH']='10.10.20.10'
REMOTE_SENSORS['OctoPI-CPU']='10.10.1.80'
declare -A PW_REMOTE_SENSORS
PW_REMOTE_SENSORS['ServerRoomTH']='10.10.20.10'
PW_REMOTE_SENSORS['OctoPI-CPU']='10.10.1.80'
declare -A SENSOR_ID
SENSOR_ID['ServerRoomTH']='2'
SENSOR_ID['RaspberryPI-CPU']='6'
SENSOR_ID['OctoPI-CPU']='7'
declare -A PW_SENSOR_ID
PW_SENSOR_ID['ServerRoomTH']='2'
PW_SENSOR_ID['RaspberryPI-CPU']='6'
PW_SENSOR_ID['OctoPI-CPU']='7'
declare -A POWERWALL_SERVICES
POWERWALL_SERVICES['temp']='monitor-temp'
POWERWALL_SERVICES['power']='monitor-power'
# POWERWALL_SERVICES['powerlogger']='monitor-powerlogger'
declare -A PW_POWERWALL_SERVICES
PW_POWERWALL_SERVICES['temp']='monitor-temp'
PW_POWERWALL_SERVICES['power']='monitor-power'
# PW_POWERWALL_SERVICES['powerlogger']='monitor-powerlogger'
declare -A ESXI_HOST_NAMES
ESXI_HOST_NAMES['10.10.2.10']='ids-vms-scsi.scity.us'
ESXI_HOST_NAMES['10.10.2.11']='ids-vms1.scity.us'
ESXI_HOST_NAMES['10.10.2.12']='ids-vms2.scity.us'
ESXI_HOST_NAMES['10.10.2.17']='ids-vms7.scity.us'
declare -A PW_ESXI_HOST_NAMES
PW_ESXI_HOST_NAMES['10.10.2.10']='ids-vms-scsi.scity.us'
PW_ESXI_HOST_NAMES['10.10.2.11']='ids-vms1.scity.us'
PW_ESXI_HOST_NAMES['10.10.2.12']='ids-vms2.scity.us'
PW_ESXI_HOST_NAMES['10.10.2.17']='ids-vms7.scity.us'
PW_ESXI_HOST_NAMES['10.2.1.18']='ids-vms-offsite.scity.us'
MAINHOSTS=10.10.2.10,10.10.2.11,10.10.2.12
SYSHOSTS=10.10.2.17
ESXIHOSTS="${MAINHOSTS},${SYSHOSTS}"
VCENTERHOST=10.10.1.30
PW_VCENTERHOST=10.10.1.30
PW_MAINHOSTS=10.10.2.10,10.10.2.11,10.10.2.12
PW_SYSHOSTS=10.10.2.17
PW_OFFSITEHOSTS=10.2.1.18
PW_MAINSITE_HOSTS="${PW_MAINHOSTS},${PW_SYSHOSTS}"
PW_ALL_HOSTS="${PW_MAINHOSTS},${PW_SYSHOSTS},${PW_OFFSITEHOSTS}"
IFS=,
ESXIHOSTS=(${ESXIHOSTS})
MAINHOSTS=(${MAINHOSTS})
SYSHOSTS=(${SYSHOSTS})
PW_MAINSITE_HOSTS=(${PW_MAINSITE_HOSTS})
PW_MAINHOSTS=(${PW_MAINHOSTS})
PW_SYSHOSTS=(${PW_SYSHOSTS})
unset IFS
SENDNOTICE(){

View File

@@ -2,6 +2,6 @@
. /opt/idssys/powerwall/settings.ps1
Connect-VIServer -Server $VCENTERHOST -Protocol https -User $VCENTERUSER -Password $VCENTERPASS
Connect-VIServer -Server $PW_VCENTERHOST -Protocol https -User $VCENTERUSER -Password $VCENTERPASS
Get-VMHost -Name $args[0] | set-vmhost -State Maintenance

View File

@@ -6,7 +6,7 @@ action="${1}"
source /opt/idssys/defaults/colors.inc
source /opt/idssys/defaults/default.inc
source /opt/idssys/powerwall/defaults.inc
source ${FOLDER}/settings.conf
source ${PW_FOLDER}/settings.conf
# TEST=true
@@ -26,7 +26,7 @@ CHECKTEMP(){
# c=0; spc=''; spc1=`expr ${cw} - ${#1}`; until [ $c = ${spc1} ]; do spc="${spc} "; c=`expr $c + 1`; done
# echo -e "${idsCL[LightCyan]}${1}${spc}${idsCL[Default]}: ${reading}"
for SENSOR in ${!SENSOR_ID[@]}; do
for SENSOR in ${!PW_SENSOR_ID[@]}; do
if [[ "${SENSOR}" = *"${1}"* ]]; then
echo -en "${idsCL[Yellow]}Pulling data and calculating averages for '${SENSOR}' ..."
reading=$(CHECKTEMPSENSOR ${SENSOR})
@@ -36,7 +36,7 @@ CHECKTEMP(){
done
else
for SENSOR in ${!SENSOR_ID[@]}; do
for SENSOR in ${!PW_SENSOR_ID[@]}; do
echo -en "${idsCL[Yellow]}Pulling data and calculating averages for '${SENSOR}' ..."
reading=$(CHECKTEMPSENSOR ${SENSOR})
c=0; spc=''; spc1=`expr ${cw} - ${#SENSOR}`; until [ $c = ${spc1} ]; do spc="${spc} "; c=`expr $c + 1`; done
@@ -46,21 +46,21 @@ CHECKTEMP(){
[ "${action}" != "" ] && echo
}
CHECKTEMPSENSOR(){
echo ${TEMP_THRESHOLDS[${1}]} | cut -d',' -f 1 | read temp_warn
echo ${TEMP_THRESHOLDS[${1}]} | cut -d',' -f 2 | read temp_crit
average=$(AVERAGETEMP ${SENSOR_ID[${1}]} 3)
echo ${PW_TEMP_THRESHOLDS[${1}]} | cut -d',' -f 1 | read temp_warn
echo ${PW_TEMP_THRESHOLDS[${1}]} | cut -d',' -f 2 | read temp_crit
average=$(AVERAGETEMP ${PW_SENSOR_ID[${1}]} 3)
if [ "${SENSOR_TYPE[${1}]}" == "mqtt" ]; then
if [ "${PW_SENSOR_TYPE[${1}]}" == "mqtt" ]; then
mqtt_message=`${mqtt_conn} -t tele/${1}/SENSOR -C 1`
echo $mqtt_message | cut -d':' -f 6 | cut -d',' -f 1 | read temp_c
elif [ "${SENSOR_TYPE[${1}]}" == "system" ]; then
elif [ "${PW_SENSOR_TYPE[${1}]}" == "system" ]; then
temp_c=$(vcgencmd measure_temp)
temp_c=${temp_c%\'*}; temp_c=${temp_c#*=}
elif [ "${SENSOR_TYPE[${1}]}" == "remotesystem" ]; then
if [ "$(CHECK_HOST ${REMOTE_SENSORS[${1}]})" != "false" ]; then
temp_c=$(ssh root@${REMOTE_SENSORS[${1}]} vcgencmd measure_temp)
elif [ "${PW_SENSOR_TYPE[${1}]}" == "remotesystem" ]; then
if [ "$(CHECK_HOST ${PW_REMOTE_SENSORS[${1}]})" != "false" ]; then
temp_c=$(ssh root@${PW_REMOTE_SENSORS[${1}]} vcgencmd measure_temp)
temp_c=${temp_c%\'*}; temp_c=${temp_c#*=}
fi
@@ -114,32 +114,32 @@ CHECKTEMP_SERVICE(){
declare -A last_temp
while true; do
for SENSOR in ${!SENSOR_ID[@]}; do
logtemp=${LOGFOLDER}/log-temp-${SENSOR}
for SENSOR in ${!PW_SENSOR_ID[@]}; do
logtemp=${PW_LOGFOLDER}/log-temp-${SENSOR}
[ ! -f ${logtemp} ] && touch ${logtemp}
errtime=$(expr `date +%s` - $(stat -c %Y ${logtemp}))
[ $errtime -ge 3600 ] && relog=1 || relog=0
if [ "${REMOTE_SENSORS[${SENSOR}]}" == "" ] || ([ "${REMOTE_SENSORS[${SENSOR}]}" != "" ] && [ "$(CHECK_HOST ${REMOTE_SENSORS[${SENSOR}]})" != "false" ]); then
if [ -f ${TMPFOLDER}/${SENSOR}.down ]; then
if [ "${PW_REMOTE_SENSORS[${SENSOR}]}" == "" ] || ([ "${PW_REMOTE_SENSORS[${SENSOR}]}" != "" ] && [ "$(CHECK_HOST ${PW_REMOTE_SENSORS[${SENSOR}]})" != "false" ]); then
if [ -f ${PW_TMPFOLDER}/${SENSOR}.down ]; then
SENDNOTICE "${SENSOR} Online" "${SENSOR} Sensor is back online"
echo "($datetime) - ${SENSOR} - ${SENSOR} Sensor is back onlione" >> ${logtemp}
rm -f ${TMPFOLDER}/${SENSOR}.down
rm -f ${PW_TMPFOLDER}/${SENSOR}.down
fi
if [ "${SENSOR_TYPE[${SENSOR}]}" == "mqtt" ]; then
if [ "${PW_SENSOR_TYPE[${SENSOR}]}" == "mqtt" ]; then
mqtt_message=`${mqtt_conn} -t tele/${SENSOR}/SENSOR -C 1`
echo $mqtt_message | cut -d':' -f 7 | cut -d',' -f 1 | read temp_h
echo $mqtt_message | cut -d':' -f 6 | cut -d',' -f 1 | read temp_c
elif [ "${SENSOR_TYPE[${SENSOR}]}" == "system" ]; then
elif [ "${PW_SENSOR_TYPE[${SENSOR}]}" == "system" ]; then
temp_c=$(vcgencmd measure_temp)
temp_c=${temp_c%\'*}; temp_c=${temp_c#*=}
temp_h=''
elif [ "${SENSOR_TYPE[${SENSOR}]}" == "remotesystem" ]; then
temp_c=$(ssh root@${REMOTE_SENSORS[${SENSOR}]} vcgencmd measure_temp)
elif [ "${PW_SENSOR_TYPE[${SENSOR}]}" == "remotesystem" ]; then
temp_c=$(ssh root@${PW_REMOTE_SENSORS[${SENSOR}]} vcgencmd measure_temp)
temp_c=${temp_c%\'*}; temp_c=${temp_c#*=}
temp_h=''
@@ -147,17 +147,17 @@ CHECKTEMP_SERVICE(){
datetime=`date +'%Y-%m-%d %H:%M:%S'`
if [ "$temp_c" != "null" ] && [ "$temp_c" != "" ]; then
if [ -f ${TMPFOLDER}/${SENSOR}-error.reading ]; then
if [ -f ${PW_TMPFOLDER}/${SENSOR}-error.reading ]; then
SENDNOTICE "${SENSOR} Data" "${SENSOR} is reporting data again"
echo "($datetime) - ${SENSOR} - ${SENSOR} is reporting data again" >> ${logtemp}
rm -f ${TMPFOLDER}/${SENSOR}-error.reading
rm -f ${PW_TMPFOLDER}/${SENSOR}-error.reading
fi
temp_f=`echo "scale=2; $temp_c*1.8 + 32" | bc`
echo ${TEMP_THRESHOLDS[${SENSOR}]} | cut -d',' -f 1 | read temp_warn
echo ${TEMP_THRESHOLDS[${SENSOR}]} | cut -d',' -f 2 | read temp_crit
echo ${TEMP_THRESHOLDS[${SENSOR}]} | cut -d',' -f 3 | read temp_crit_sys
echo ${PW_TEMP_THRESHOLDS[${SENSOR}]} | cut -d',' -f 1 | read temp_warn
echo ${PW_TEMP_THRESHOLDS[${SENSOR}]} | cut -d',' -f 2 | read temp_crit
echo ${PW_TEMP_THRESHOLDS[${SENSOR}]} | cut -d',' -f 3 | read temp_crit_sys
if [ "${last_temp[${SENSOR}]}" != "" ]; then
temp_diff=`expr ${last_temp[${SENSOR}]%.*} - ${temp_f%.*}`
@@ -168,7 +168,7 @@ CHECKTEMP_SERVICE(){
fi
if [ $(bc -l <<< "$temp_f >= $temp_warn") -eq 1 ] && [ $(bc -l <<< "$temp_f < $temp_crit") -eq 1 ]; then
touch ${TMPFOLDER}/temp.warn
touch ${PW_TMPFOLDER}/temp.warn
if [ $temp_diff -gt 1 ] || [ "${last_temp[${SENSOR}]}" = "1" ]; then
SENDNOTICE "${SENSOR} TEMP WARNING" "($datetime) WARNING TEMP: ${temp_f}'F - (Difference of ${temp_diff}')" 1
echo "($datetime) - ${temp_f}'F - alert sent" >> ${logtemp}
@@ -177,86 +177,86 @@ CHECKTEMP_SERVICE(){
fi
elif [ $(bc -l <<< "$temp_f >= $temp_crit") -eq 1 ] && [ $(bc -l <<< "$temp_f < $temp_crit_sys") -eq 1 ]; then
touch ${TMPFOLDER}/temp.crit
touch ${PW_TMPFOLDER}/temp.crit
if [ $temp_diff -gt 1 ] || [ "${last_temp[${SENSOR}]}" = "1" ]; then
SENDNOTICE "${SENSOR} TEMP CRITICAL" "($datetime) CRITICAL TEMP: ${temp_f}'F - (Difference of ${temp_diff}')
Shutting down servers!!" 1
echo "($datetime) - ${temp_f}'F - CRITICAL - (Difference of ${temp_diff}'F)" >> ${logtemp}
echo "($datetime) - ${temp_f}'F - alert sent" >> ${logtemp}
echo -e "($datetime) - ${SENSOR} - ${temp_f}'F - CRITICAL TEMP - (Difference of ${temp_diff}')" >> ${logfile}
echo -e "($datetime) - ${SENSOR} - ${temp_f}'F - CRITICAL TEMP - (Difference of ${temp_diff}')" >> ${PW_LOGFILE}
last_temp[${SENSOR}]=$temp_f
SHUTDOWN_MAIN ${SENSOR} &
echo -e "($datetime) - ${temp_f}'F - Shutting down MAIN servers" >> ${logtemp}
fi
elif [ $(bc -l <<< "$temp_f >= $temp_crit_sys") -eq 1 ]; then
touch ${TMPFOLDER}/temp.critsys
touch ${PW_TMPFOLDER}/temp.critsys
if [ $temp_diff -gt 1 ] || [ "${last_temp[${SENSOR}]}" = "1" ]; then
SENDNOTICE "${SENSOR} TEMP CRITICAL" "($datetime) SYSTEM CRITICAL TEMP: ${temp_f}'F - (Difference of ${temp_diff}')
Shutting down system servers!!" 1
echo "($datetime) - ${temp_f}'F - SYSTEM CRITICAL - (Difference of ${temp_diff})" >> ${logtemp}
echo "($datetime) - ${temp_f}'F - alert sent" >> ${logtemp}
echo -e "($datetime) - ${temp_f}'F - ${SENSOR} - CRITICAL TEMP SYSTEM - (Difference of ${temp_diff}')" >> ${logfile}
echo -e "($datetime) - ${temp_f}'F - ${SENSOR} - CRITICAL TEMP SYSTEM - (Difference of ${temp_diff}')" >> ${PW_LOGFILE}
last_temp[${SENSOR}]=$temp_f
SHUTDOWN_SYS ${SENSOR} TEMP &
SHUTDOWN_CRIT ${SENSOR} &
echo -e "($datetime) - ${temp_f}'F - Shutting down SYS servers" >> ${logtemp}
fi
else
[ ! -f ${TMPFOLDER}/temp.* ] && [ $(expr `date +%s` - $(stat -c %Y ${TMPFOLDER}/.${SENSOR}.sentdaily)) -gt 600 ] && [ $(date +%H)$(date +%M) -ge 0700 ] && [ $(date +%H)$(date +%M) -lt 0705 ] && touch ${TMPFOLDER}/.${SENSOR}.sentdaily && SENDNOTICE "Daily Temp Readings" "$(DAILYTEMP)" &
[ ! -f ${PW_TMPFOLDER}/temp.* ] && [ $(expr `date +%s` - $(stat -c %Y ${PW_TMPFOLDER}/.${SENSOR}.sentdaily)) -gt 600 ] && [ $(date +%H)$(date +%M) -ge 0700 ] && [ $(date +%H)$(date +%M) -lt 0705 ] && touch ${PW_TMPFOLDER}/.${SENSOR}.sentdaily && SENDNOTICE "Daily Temp Readings" "$(DAILYTEMP)" &
if [ ${last_temp[${SENSOR}]} -gt 1 ]; then
SENDNOTICE "${SENSOR} BACK TO NORMAL" "($datetime) NORMAL TEMP: ${temp_f}'F
Previous Temp: ${last_temp[${SENSOR}]}'F"
echo -e "($datetime) - ${temp_f}'F - Back to NORMAL TEMP - Previous Temp: ${last_temp[${SENSOR}]}'F" >> ${logtemp}
echo "($datetime) - ${temp_f}'F - alert sent" >> ${logtemp}
echo -e "($datetime) - ${temp_f}'F - ${SENSOR} - Back to NORMAL TEMP" >> ${logfile}
[ "$(compgen -G "${FOLDER}/shutdown.*")" != "" ] && rm -f ${FOLDER}/shutdown.*
echo -e "($datetime) - ${temp_f}'F - ${SENSOR} - Back to NORMAL TEMP" >> ${PW_LOGFILE}
[ "$(compgen -G "${PW_FOLDER}/shutdown.*")" != "" ] && rm -f ${PW_FOLDER}/shutdown.*
elif [ ${last_temp[${SENSOR}]} -eq 0 ]; then
SENDNOTICE "${SENSOR} TEMP NORMAL" "($datetime) Service Startup
NORMAL TEMP: ${temp_f}'F"
echo -e "($datetime) - ${temp_f}'F - Service Startup - NORMAL TEMP" >> ${logtemp}
echo -e "($datetime) - ${temp_f}'F - ${SENSOR} - Service Startup" >> ${logfile}
[ "$(compgen -G "${FOLDER}/shutdown.*")" != "" ] && rm -f ${FOLDER}/shutdown.*
echo -e "($datetime) - ${temp_f}'F - ${SENSOR} - Service Startup" >> ${PW_LOGFILE}
[ "$(compgen -G "${PW_FOLDER}/shutdown.*")" != "" ] && rm -f ${PW_FOLDER}/shutdown.*
elif [ $relog -eq 1 ]; then
echo "($datetime) - ${temp_f}'F - Normal Temp" >> ${logtemp}
fi
rm -f ${TMPFOLDER}/temp.*
rm -f ${PW_TMPFOLDER}/temp.*
last_temp[${SENSOR}]=1
fi
[ -f ${TMPFOLDER}/${SENSOR}.insert ] && lastinsert=$(expr `date +%s` - $(stat -c %Y ${TMPFOLDER}/${SENSOR}.insert)) || lastinsert=100000
if [ "$(compgen -G "${TMPFOLDER}/temp.*")" != "" ] || [ "$(compgen -G "${TMPFOLDER}/power.ac.*")" != "" ] || [ "$(compgen -G "${TMPFOLDER}/power.dc.*")" != "" ]; then
[ -f ${PW_TMPFOLDER}/${SENSOR}.insert ] && lastinsert=$(expr `date +%s` - $(stat -c %Y ${PW_TMPFOLDER}/${SENSOR}.insert)) || lastinsert=100000
if [ "$(compgen -G "${PW_TMPFOLDER}/temp.*")" != "" ] || [ "$(compgen -G "${PW_TMPFOLDER}/power.ac.*")" != "" ] || [ "$(compgen -G "${PW_TMPFOLDER}/power.dc.*")" != "" ]; then
wait=60
else
wait=300
fi
if [ ${lastinsert} -ge ${wait} ]; then
if [ "${temp_h}" != "" ]; then
QRY="USE servermonitor; INSERT INTO sensor_data (\`sensorid\`, \`date\`, \`temp\`, \`hum\`) VALUES ('${SENSOR_ID[${SENSOR}]}','${datetime}','${temp_f}','${temp_h}')"
QRY="USE servermonitor; INSERT INTO sensor_data (\`sensorid\`, \`date\`, \`temp\`, \`hum\`) VALUES ('${PW_SENSOR_ID[${SENSOR}]}','${datetime}','${temp_f}','${temp_h}')"
else
QRY="USE servermonitor; INSERT INTO sensor_data (\`sensorid\`, \`date\`, \`temp\`) VALUES ('${SENSOR_ID[${SENSOR}]}','${datetime}','${temp_f}')"
QRY="USE servermonitor; INSERT INTO sensor_data (\`sensorid\`, \`date\`, \`temp\`) VALUES ('${PW_SENSOR_ID[${SENSOR}]}','${datetime}','${temp_f}')"
fi
${mysql_conn} -e "${QRY}"
touch ${TMPFOLDER}/${SENSOR}.insert
touch ${PW_TMPFOLDER}/${SENSOR}.insert
fi
else
if [ ! -f ${TMPFOLDER}/${SENSOR}-error.reading ] || [ $(expr `date +%s` - $(stat -c %Y ${TMPFOLDER}/${SENSOR}-error.reading)) -ge 1800 ]; then
if [ ! -f ${PW_TMPFOLDER}/${SENSOR}-error.reading ] || [ $(expr `date +%s` - $(stat -c %Y ${PW_TMPFOLDER}/${SENSOR}-error.reading)) -ge 1800 ]; then
SENDNOTICE "${SENSOR} Sensor ERROR" "($datetime) ERROR reading sensor data" 1
echo "($datetime) - ${SENSOR} Sensor - ERROR reading sensor data" >> ${logtemp}
touch ${TMPFOLDER}/${SENSOR}-error.reading
touch ${PW_TMPFOLDER}/${SENSOR}-error.reading
fi
fi
else
if [ ! -f ${TMPFOLDER}/${SENSOR}.down ] || [ $(expr `date +%s` - $(stat -c %Y ${TMPFOLDER}/${SENSOR}.down)) -ge 1800 ]; then
if [ ! -f ${PW_TMPFOLDER}/${SENSOR}.down ] || [ $(expr `date +%s` - $(stat -c %Y ${PW_TMPFOLDER}/${SENSOR}.down)) -ge 1800 ]; then
SENDNOTICE "${SENSOR} ERROR" "${SENSOR} Sensor is down" 1
echo "($datetime) - ${SENSOR} - ${SENSOR} Sensor is down" >> ${logtemp}
touch ${TMPFOLDER}/${SENSOR}.down
touch ${PW_TMPFOLDER}/${SENSOR}.down
fi
fi
@@ -274,15 +274,15 @@ DAILYTEMP(){
echo
echo -e "Sensor Temperature(s) Now / 1DayAVG / 7DayAVG"
DIVIDER . . 60
for SENSOR in ${!SENSOR_ID[@]}; do
average1=$(AVERAGETEMP ${SENSOR_ID[$SENSOR]} 1)
average7=$(AVERAGETEMP ${SENSOR_ID[$SENSOR]} 7)
for SENSOR in ${!PW_SENSOR_ID[@]}; do
average1=$(AVERAGETEMP ${PW_SENSOR_ID[$SENSOR]} 1)
average7=$(AVERAGETEMP ${PW_SENSOR_ID[$SENSOR]} 7)
if [ "${SENSOR_TYPE[${SENSOR}]}" == "mqtt" ]; then
if [ "${PW_SENSOR_TYPE[${SENSOR}]}" == "mqtt" ]; then
mqtt_message=`${mqtt_conn} -t tele/${SENSOR}/SENSOR -C 1`
temp_c=$(echo $mqtt_message | cut -d':' -f 6 | cut -d',' -f 1)
elif [ "${SENSOR_TYPE[${SENSOR}]}" == "system" ]; then
elif [ "${PW_SENSOR_TYPE[${SENSOR}]}" == "system" ]; then
temp_c=$(vcgencmd measure_temp)
temp_c=${temp_c%\'*}; temp_c=${temp_c#*=}
@@ -331,12 +331,12 @@ CHECKPOWER(){
CHECKPOWER_SERVICE(){
voltstatus=0
battstatus=0
# rm -f ${TMPFOLDER}/powerlogger.insert
# rm -f ${PW_TMPFOLDER}/powerlogger.insert
while true; do
INVSTATSINFO=$(curl -s "http://10.10.0.61/stats.json")
if [ "${INVSTATSINFO}" != "" ]; then
[ -f ${TMPFOLDER}/powerlogger.insert ] && lastinsert=$(expr `date +%s` - $(stat -c %Y ${TMPFOLDER}/powerlogger.insert)) || lastinsert=100000
if [ "$(compgen -G "${TMPFOLDER}/temp.*")" != "" ] || [ "$(compgen -G "${TMPFOLDER}/power.ac.*")" != "" ] || [ "$(compgen -G "${TMPFOLDER}/power.dc.*")" != "" ]; then
[ -f ${PW_TMPFOLDER}/powerlogger.insert ] && lastinsert=$(expr `date +%s` - $(stat -c %Y ${PW_TMPFOLDER}/powerlogger.insert)) || lastinsert=100000
if [ "$(compgen -G "${PW_TMPFOLDER}/temp.*")" != "" ] || [ "$(compgen -G "${PW_TMPFOLDER}/power.ac.*")" != "" ] || [ "$(compgen -G "${PW_TMPFOLDER}/power.dc.*")" != "" ]; then
wait=60
else
wait=300
@@ -350,46 +350,46 @@ CHECKPOWER_SERVICE(){
datetime=`date +'%Y-%m-%d %H:%M:%S'`
if [ ${INPUTACV} -ge ${min_acvolt} ]; then
if [ $voltstatus -eq 3 ]; then
echo "($datetime) - ${INPUTACV}V - Back to Normal Voltage" >> ${logpower}
echo "($datetime) - ${INPUTACV}V - Back to Normal Voltage" >> ${PW_LOGPOWER}
SENDNOTICE "POWER NOMINAL AGAIN" "($datetime) Normal voltage detected
VOLTAGE: ${INPUTACV}V"
echo "($datetime) alert sent" >> ${logpower}
echo -e "($datetime) - ${INPUTACV}V - POWER NOMINAL AGAIN" >> ${logfile}
echo "($datetime) alert sent" >> ${PW_LOGPOWER}
echo -e "($datetime) - ${INPUTACV}V - POWER NOMINAL AGAIN" >> ${PW_LOGFILE}
battstatus=0
else
errtime=$(expr `date +%s` - $(stat -c %Y ${logpower}))
[ $errtime -ge 3600 ] && echo "($datetime) - ${INPUTACV}V - Normal Voltage" >> ${logpower}
errtime=$(expr `date +%s` - $(stat -c %Y ${PW_LOGPOWER}))
[ $errtime -ge 3600 ] && echo "($datetime) - ${INPUTACV}V - Normal Voltage" >> ${PW_LOGPOWER}
if [ $voltstatus -eq 0 ]; then
SENDNOTICE "Power Nominal" "($datetime) Service Startup
Normal voltage detected
VOLTAGE: ${INPUTACV}V
BATT VOLTAGE: ${BATTVOLT}V"
echo "($datetime) - Input: ${INPUTACV}V - Service Startup - Normal voltage detected" >> ${logpower}
echo -e "($datetime) - ${INPUTACV}V / ${BATTVOLT}V - Service Startup - Normal Voltage" >> ${logfile}
echo "($datetime) - Input: ${INPUTACV}V - Service Startup - Normal voltage detected" >> ${PW_LOGPOWER}
echo -e "($datetime) - ${INPUTACV}V / ${BATTVOLT}V - Service Startup - Normal Voltage" >> ${PW_LOGFILE}
fi
fi
voltstatus=1
rm -f ${TMPFOLDER}/power.ac.*
rm -f ${PW_TMPFOLDER}/power.ac.*
else
echo "($datetime) - ${INPUTACV}V - POWER OFF/LOW POWER" >> ${logpower}
echo -e "($datetime) - ${INPUTACV}V - POWER OFF/LOW POWER" >> ${logfile}
echo "($datetime) - ${INPUTACV}V - POWER OFF/LOW POWER" >> ${PW_LOGPOWER}
echo -e "($datetime) - ${INPUTACV}V - POWER OFF/LOW POWER" >> ${PW_LOGFILE}
if [ $voltstatus -lt 3 ]; then
SENDNOTICE "POWER ALERT - POWER OFF/LOW POWER!!" "($datetime) Power off or low voltage detected
VOLTAGE: ${INPUTACV}V
BATT VOLTAGE: ${BATTVOLT}V" 1
echo "($datetime) alert sent" >> ${logpower}
echo "($datetime) alert sent" >> ${PW_LOGPOWER}
last_battvolt=$BATTVOLT
fi
voltstatus=3
touch ${TMPFOLDER}/power.ac.low
touch ${PW_TMPFOLDER}/power.ac.low
fi
if [ ${BATTVOLT%.*} -lt ${min_battvolt} ] && [ ${BATTVOLT%.*} -gt ${min_battvolt_sys} ]; then
echo "($datetime) - ${BATTVOLT}V - LOW BATTERY Voltage" >> ${logpower}
echo -e "($datetime) - ${BATTVOLT}V - LOW BATTERY VOLTAGE" >> ${logfile}
touch ${TMPFOLDER}/power.dc.low
echo "($datetime) - ${BATTVOLT}V - LOW BATTERY Voltage" >> ${PW_LOGPOWER}
echo -e "($datetime) - ${BATTVOLT}V - LOW BATTERY VOLTAGE" >> ${PW_LOGFILE}
touch ${PW_TMPFOLDER}/power.dc.low
if [ $battstatus -lt 2 ] && [ ${INPUTACV} -lt ${min_acvolt} ]; then
echo "($datetime) - ${BATTVOLT}V - Shutting down main servers..." >> ${logpower}
echo "($datetime) - ${BATTVOLT}V - Shutting down main servers..." >> ${PW_LOGPOWER}
SENDNOTICE "BATT-VOLT LOW: SHUTDOWN MAIN SERVERS" "($datetime) Battery Voltage LOW: ${BATTVOLT}V
Shutting down main servers" 1
SHUTDOWN_MAIN power &
@@ -397,11 +397,11 @@ CHECKPOWER_SERVICE(){
fi
elif [ ${BATTVOLT%.*} -le ${min_battvolt_sys} ]; then
echo "($datetime) - ${BATTVOLT}V - LOW BATTERY Voltage" >> ${logpower}
echo -e "($datetime) - ${BATTVOLT}V - LOW BATTERY VOLTAGE" >> ${logfile}
touch ${TMPFOLDER}/power.dc.low
echo "($datetime) - ${BATTVOLT}V - LOW BATTERY Voltage" >> ${PW_LOGPOWER}
echo -e "($datetime) - ${BATTVOLT}V - LOW BATTERY VOLTAGE" >> ${PW_LOGFILE}
touch ${PW_TMPFOLDER}/power.dc.low
if [ $battstatus -lt 3 ] && [ ${INPUTACV} -lt ${min_acvolt} ]; then
echo "($datetime) - ${BATTVOLT}V - Shutting down all remaining servers..." >> ${logpower}
echo "($datetime) - ${BATTVOLT}V - Shutting down all remaining servers..." >> ${PW_LOGPOWER}
SENDNOTICE "BATT-VOLT REALLY LOW: SHUTDOWN SYS SERVERS" "($datetime) Battery Voltage REALLY LOW: ${BATTVOLT}V
Shutting down all servers" 1
SHUTDOWN_SYS power &
@@ -411,12 +411,12 @@ CHECKPOWER_SERVICE(){
fi
else
errtime=$(expr `date +%s` - $(stat -c %Y ${logpower}))
[ $errtime -ge 3600 ] && echo "($datetime) - ${BATTVOLT}V - Battery Voltage" >> ${logpower}
errtime=$(expr `date +%s` - $(stat -c %Y ${PW_LOGPOWER}))
[ $errtime -ge 3600 ] && echo "($datetime) - ${BATTVOLT}V - Battery Voltage" >> ${PW_LOGPOWER}
if [ $battstatus -eq 0 ]; then
echo "($datetime) - Battery: ${BATTVOLT}V - Service Startup - Normal voltage detected" >> ${logpower}
echo "($datetime) - Battery: ${BATTVOLT}V - Service Startup - Normal voltage detected" >> ${PW_LOGPOWER}
fi
rm -f ${TMPFOLDER}/power.dc.*
rm -f ${PW_TMPFOLDER}/power.dc.*
battstatus=1
fi
@@ -425,7 +425,7 @@ CHECKPOWER_SERVICE(){
[ $volt_diff -lt 0 ] && temp_diff=$(($volt_diff * -1))
if [ $volt_diff -gt 0 ]; then
SENDNOTICE "BATTERY VOLTAGE CHANGE" "($datetime) Battery Voltage: ${BATTVOLT}V"
echo -e "($datetime) - ${BATTVOLT}V - Battery Voltage Change" >> ${logpower}
echo -e "($datetime) - ${BATTVOLT}V - Battery Voltage Change" >> ${PW_LOGPOWER}
last_battvolt=$BATTVOLT
fi
else
@@ -465,7 +465,7 @@ POWERLOGGER(){
QRY="INSERT INTO inv_jsonstats (\`date\`, \`data\`) VALUES ('${datetime}','${INVSTATSINFO}')"
${mysql_conn} -e "USE servermonitor; ${QRY}"
touch ${TMPFOLDER}/powerlogger.insert
touch ${PW_TMPFOLDER}/powerlogger.insert
}
POWERLOGGER_SERVICE(){
@@ -490,7 +490,7 @@ POWERLOGGER_SERVICE(){
${mysql_conn} -e "USE servermonitor; ${QRY}"
if [ "$(compgen -G "${TMPFOLDER}/temp.*")" != "" ] || [ "$(compgen -G "${TMPFOLDER}/power.ac.*")" != "" ] || [ "$(compgen -G "${TMPFOLDER}/power.dc.*")" != "" ]; then
if [ "$(compgen -G "${PW_TMPFOLDER}/temp.*")" != "" ] || [ "$(compgen -G "${PW_TMPFOLDER}/power.ac.*")" != "" ] || [ "$(compgen -G "${PW_TMPFOLDER}/power.dc.*")" != "" ]; then
sleep 1m
else
sleep 5m
@@ -508,12 +508,12 @@ RESTARTALL_SERVICES(){
STARTALL_SERVICES
}
STOPALL_SERVICES(){
for srvc in "${!POWERWALL_SERVICES[@]}"; do
for srvc in "${!PW_POWERWALL_SERVICES[@]}"; do
SERVICE_MNG ${srvc} stop
done
}
STARTALL_SERVICES(){
for srvc in "${!POWERWALL_SERVICES[@]}"; do
for srvc in "${!PW_POWERWALL_SERVICES[@]}"; do
SERVICE_MNG ${srvc} start
done
}
@@ -531,13 +531,13 @@ SERVICE_MNG(){
sa='Status for'
fi
echo -en "${idsCL[LightCyan]}${sa} ${POWERWALL_SERVICES[${1}]} Service ... "
/bin/systemctl ${2} ${POWERWALL_SERVICES[${1}]}
echo -en "${idsCL[LightCyan]}${sa} ${PW_POWERWALL_SERVICES[${1}]} Service ... "
/bin/systemctl ${2} ${PW_POWERWALL_SERVICES[${1}]}
echo -e "${idsCL[Green]}Done${idsCL[Default]}"
}
STOP_SERVICE(){
echo "stop: ${1}"
service_pid=`systemctl show --property MainPID --value ${POWERWALL_SERVICES[${1}]}`
service_pid=`systemctl show --property MainPID --value ${PW_POWERWALL_SERVICES[${1}]}`
/usr/bin/pkill -P $service_pid
}
@@ -546,7 +546,7 @@ CHECK_SERVICES(){
echo -e "${idsCL[Yellow]}PowerWall Monitor Service Status"
DIVIDER . yellow 75
for srvc in "${POWERWALL_SERVICES[@]}"; do
for srvc in "${PW_POWERWALL_SERVICES[@]}"; do
c=0; spc=''; spc1=`expr 25 - ${#srvc}`; until [ $c = ${spc1} ]; do spc="${spc} "; c=`expr $c + 1`; done
echo -en "${idsCL[LightCyan]}${srvc}${spc}: "
[ "$(systemctl is-active ${srvc})" == "active" ] && echo -en "${idsCL[Green]}Running" || echo -en "${idsCL[Yellow]}Not Running"
@@ -570,7 +570,7 @@ SHUTDOWN_MAIN(){
datetime=`date +'%Y-%m-%d %H:%M:%S'`
SENDNOTICE "MAIN SERVERS SHUTDOWN" "($datetime) MAIN servers have been shutdown
${reason}" 1
echo -e "($datetime) - Main servers have been shutdown, ${reason}" >> ${logfile}
echo -e "($datetime) - Main servers have been shutdown, ${reason}" >> ${PW_LOGFILE}
fi
echo
@@ -585,7 +585,7 @@ SHUTDOWN_SYS(){
datetime=`date +'%Y-%m-%d %H:%M:%S'`
SENDNOTICE "SYS SERVERS SHUTDOWN" "($datetime) SYS servers have been shutdown
${reason}" 1
echo -e "($datetime) - SYS servers have been shutdown, ${reason}" >> ${logfile}
echo -e "($datetime) - SYS servers have been shutdown, ${reason}" >> ${PW_LOGFILE}
fi
# curl --data "cmd=PWRoff" http://10.10.0.61/cmd
@@ -594,15 +594,15 @@ SHUTDOWN_SYS(){
SHUTDOWN_CRIT(){
if [ "${1}" == "RaspberryPI-CPU" ]; then
SENDNOTICE "${SENSOR} TEMP CRITICAL" "($datetime) Powerwall System shutting down" 1
echo -e "($datetime) - CRITICAL TEMP - Powerwall System shutting down" >> ${LOGFOLDER}/log-temp-${1}
echo -e "($datetime) - ${SENSOR} TEMP CRITICAL - Powerwall System shutting down" >> ${logfile}
echo -e "($datetime) - CRITICAL TEMP - Powerwall System shutting down" >> ${PW_LOGFOLDER}/log-temp-${1}
echo -e "($datetime) - ${SENSOR} TEMP CRITICAL - Powerwall System shutting down" >> ${PW_LOGFILE}
/sbin/poweroff
elif [ "${1}" == "OctoPI-CPU" ]; then
SENDNOTICE "${SENSOR} TEMP CRITICAL" "($datetime) OctoPI System shutting down" 1
echo -e "($datetime) - CRITICAL TEMP - OctoPI System shutting down" >> ${LOGFOLDER}/log-temp-${1}
echo -e "($datetime) - ${SENSOR} TEMP CRITICAL - OctoPI System shutting down" >> ${logfile}
# ssh root@${REMOTE_SENSORS[${1}]} /sbin/poweroff
echo -e "($datetime) - CRITICAL TEMP - OctoPI System shutting down" >> ${PW_LOGFOLDER}/log-temp-${1}
echo -e "($datetime) - ${SENSOR} TEMP CRITICAL - OctoPI System shutting down" >> ${PW_LOGFILE}
# ssh root@${PW_REMOTE_SENSORS[${1}]} /sbin/poweroff
fi
}
@@ -618,42 +618,42 @@ SHUTDOWN_SERVERS(){
# /usr/bin/ssh root@${ESXIHOST} "/vmfs/volumes/iSCSI2-Datastore2\ \(R5\)\(1-4\)/\!SCRIPTS/esxidown/async-${ESXIHOST}.sh"
# done
echo "($datetime) - Shutting down ${1} servers" >> ${logfile}
[ $TEST = true ] && echo "RUNNING IN TEST MODE" >> ${logfile}
echo "($datetime) - Shutting down ${1} servers" >> ${PW_LOGFILE}
[ $TEST = true ] && echo "RUNNING IN TEST MODE" >> ${PW_LOGFILE}
if [ "${1}" = "MAIN" ]; then
if [ ! -f $FOLDER/shutdown.main ]; then
touch $FOLDER/shutdown.main
echo -en "Disabling CLS in vCenter ... "
if [ $TEST != true ]; then
ssh root@${VCENTERHOST} "sed -i '/<domain-c1001>/{n;s/<enabled>.*<\/enabled>/<enabled>False<\/enabled>/}' /etc/vmware-vpx/vpxd.cfg >/dev/null 2>&1" >/dev/null 2>&1
ssh root@${VCENTERHOST} "service-control --stop vmware-vpxd >/dev/null 2>&1" >/dev/null 2>&1
ssh root@${VCENTERHOST} "service-control --start vmware-vpxd >/dev/null 2>&1" >/dev/null 2>&1
ssh root@${PW_VCENTERHOST} "sed -i '/<domain-c1001>/{n;s/<enabled>.*<\/enabled>/<enabled>False<\/enabled>/}' /etc/vmware-vpx/vpxd.cfg >/dev/null 2>&1" >/dev/null 2>&1
ssh root@${PW_VCENTERHOST} "service-control --stop vmware-vpxd >/dev/null 2>&1" >/dev/null 2>&1
ssh root@${PW_VCENTERHOST} "service-control --start vmware-vpxd >/dev/null 2>&1" >/dev/null 2>&1
fi
echo "Done"
for ESXIHOST in "${ESXIHOSTS[@]}"; do
for ESXIHOST in "${PW_MAINSITE_HOSTS[@]}"; do
echo -en "Stopping iSCSI VM's on: ${ESXIHOST} ... "
[ $TEST != true ] && ${FOLDER}/esxi-scripts/iscsi-vm-shutdown.ps1 ${ESXIHOST} >/dev/null 2>&1
[ $TEST != true ] && ${PW_FOLDER}/esxi-scripts/iscsi-vm-shutdown.ps1 ${ESXIHOST} >/dev/null 2>&1
echo "Done"
done
for ESXIHOST in "${ESXIHOSTS[@]}"; do
for ESXIHOST in "${PW_MAINSITE_HOSTS[@]}"; do
echo -en "Verifying iSCSI VM's stopped on: ${ESXIHOST} ... "
[ $TEST != true ] && ${FOLDER}/esxi-scripts/iscsi-vm-shutdown-verify.ps1 ${ESXIHOST} >/dev/null 2>&1
[ $TEST != true ] && ${PW_FOLDER}/esxi-scripts/iscsi-vm-shutdown-verify.ps1 ${ESXIHOST} >/dev/null 2>&1
echo "Done"
done
# sleep 1m
for ESXIHOST in "${MAINHOSTS[@]}"; do
for ESXIHOST in "${PW_MAINHOSTS[@]}"; do
echo -en "Stopping Remaining VM's on: ${ESXIHOST} ... "
if [ $TEST != true ]; then
ssh root@${ESXIHOST} 'esxcli system maintenanceMode set -e true -t 0' &
${FOLDER}/esxi-scripts/vm-shutdown.ps1 ${ESXIHOST} >/dev/null 2>&1
${FOLDER}/esxi-scripts/iscsi-server-shutdown.ps1 ${ESXIHOST} >/dev/null 2>&1
${PW_FOLDER}/esxi-scripts/vm-shutdown.ps1 ${ESXIHOST} >/dev/null 2>&1
${PW_FOLDER}/esxi-scripts/iscsi-server-shutdown.ps1 ${ESXIHOST} >/dev/null 2>&1
fi
echo "Done"
done
sleep 1m
for ESXIHOST in "${MAINHOSTS[@]}"; do
for ESXIHOST in "${PW_MAINHOSTS[@]}"; do
echo -en "Shutting down host: ${ESXIHOST} ..."
if [ $TEST != true ]; then
ssh root@${ESXIHOST} 'esxcli system shutdown poweroff -d 10 -r "Automated ESXi host shutdown"'
@@ -662,7 +662,7 @@ SHUTDOWN_SERVERS(){
echo "Done"
done
for ESXIHOST in "${MAINHOSTS[@]}"; do
for ESXIHOST in "${PW_MAINHOSTS[@]}"; do
echo -en "Waiting for Host (${ESXIHOST}) to shutdown... "
if [ $TEST != true ]; then
while ping -qw 10 -c3 "${ESXIHOST}">/dev/null 2>&1; do
@@ -678,20 +678,20 @@ SHUTDOWN_SERVERS(){
if [ ! -f $FOLDER/shutdown.sys ]; then
touch $FOLDER/shutdown.sys
for ESXIHOST in "${SYSHOSTS[@]}"; do
for ESXIHOST in "${PW_SYSHOSTS[@]}"; do
echo -en "Suspending DB, PiHole & vCenter VM's on: ${ESXIHOST} ... "
[ $TEST != true ] && ${FOLDER}/esxi-scripts/sys-suspend.ps1 ${ESXIHOST} >/dev/null 2>&1
[ $TEST != true ] && ${PW_FOLDER}/esxi-scripts/sys-suspend.ps1 ${ESXIHOST} >/dev/null 2>&1
echo "Done"
done
for ESXIHOST in "${SYSHOSTS[@]}"; do
for ESXIHOST in "${PW_SYSHOSTS[@]}"; do
echo -en "Shutting Down VM's on: ${ESXIHOST} ... "
if [ $TEST != true ]; then
${FOLDER}/esxi-scripts/vm-shutdown.ps1 ${ESXIHOST} >/dev/null 2>&1
${FOLDER}/esxi-scripts/iscsi-server-shutdown.ps1 ${ESXIHOST} >/dev/null 2>&1
${PW_FOLDER}/esxi-scripts/vm-shutdown.ps1 ${ESXIHOST} >/dev/null 2>&1
${PW_FOLDER}/esxi-scripts/iscsi-server-shutdown.ps1 ${ESXIHOST} >/dev/null 2>&1
fi
echo "Done"
done
for ESXIHOST in "${SYSHOSTS[@]}"; do
for ESXIHOST in "${PW_SYSHOSTS[@]}"; do
echo -en "Shutting Down Host: ${ESXIHOST} ... "
if [ $TEST != true ]; then
ssh root@${ESXIHOST} 'esxcli system maintenanceMode set -e true -t 0'
@@ -701,7 +701,7 @@ SHUTDOWN_SERVERS(){
echo "Done"
done
for ESXIHOST in "${SYSHOSTS[@]}"; do
for ESXIHOST in "${PW_SYSHOSTS[@]}"; do
echo -en "Waiting for Host (${ESXIHOST}) to shutdown ... "
if [ $TEST != true ]; then
while ping -qw 10 -c3 "${ESXIHOST}">/dev/null 2>&1; do
@@ -714,17 +714,17 @@ SHUTDOWN_SERVERS(){
fi
}
SHUTDOWN_SERVER(){
echo "($datetime) - Shutting down ${1}" >> ${logfile}
echo "($datetime) - Shutting down ${1}" >> ${PW_LOGFILE}
echo -en "Enabling Maintenance mode and will wait for iSCSI VM's to begin migrating ... "
[ $TEST != true ] && ${FOLDER}/esxi-scripts/host-maintenance_mode.ps1 ${ESXI_HOST_NAMES[${1}]} & >/dev/null 2>&1
[ $TEST != true ] && ${PW_FOLDER}/esxi-scripts/host-maintenance_mode.ps1 ${PW_ESXI_HOST_NAMES[${1}]} & >/dev/null 2>&1
sleep 45s
echo "Done"
echo -en "Shutting Down VM's on: ${1} ... "
if [ $TEST != true ]; then
${FOLDER}/esxi-scripts/vm-shutdown.ps1 ${1} >/dev/null 2>&1
${FOLDER}/esxi-scripts/iscsi-server-shutdown.ps1 ${1} >/dev/null 2>&1
${PW_FOLDER}/esxi-scripts/vm-shutdown.ps1 ${1} >/dev/null 2>&1
${PW_FOLDER}/esxi-scripts/iscsi-server-shutdown.ps1 ${1} >/dev/null 2>&1
fi
echo "Done"
@@ -745,9 +745,9 @@ SHUTDOWN_SERVER(){
}
ISCSIVMSHUTDOWN(){
for ESXIHOST in "${ESXIHOSTS[@]}"; do
for ESXIHOST in "${PW_MAINSITE_HOSTS[@]}"; do
echo -en "${idsCL[LightCyan]}Shutting down any VM's on '${ESXIHOST}, that are running on an iSCSI drive ... "
${FOLDER}/esxi-scripts/iscsi-vm-shutdown.ps1 ${ESXIHOST} >/dev/null 2>&1
${PW_FOLDER}/esxi-scripts/iscsi-vm-shutdown.ps1 ${ESXIHOST} >/dev/null 2>&1
echo -e "${idsCL[Green]}DONE${idsCL[Default]}"
echo
done
@@ -763,10 +763,10 @@ LOGROTATE(){
else
ly=$(date +'%Y')
fi
ARCHIVEFOLDER=${LOGARCHIVE}/${ly}-${lm}
ARCHIVEFOLDER=${PW_LOGARCHIVE}/${ly}-${lm}
mkdir -p ${ARCHIVEFOLDER}
mv ${LOGFOLDER}/log* ${ARCHIVEFOLDER}/
# source ${FOLDER}/defaults.inc
mv ${PW_LOGFOLDER}/log* ${ARCHIVEFOLDER}/
# source ${PW_FOLDER}/defaults.inc
# STARTALL_SERVICES
}
@@ -851,14 +851,14 @@ fi
elif [ "${3}" = "stop" ]; then
if [ "${2}" = "temp" ]; then
STOP_SERVICE temp
for SENSOR in ${!SENSOR_ID[@]}; do
logtemp=${LOGFOLDER}/log-temp-${SENSOR}
for SENSOR in ${!PW_SENSOR_ID[@]}; do
logtemp=${PW_LOGFOLDER}/log-temp-${SENSOR}
echo "(`date +'%Y-%m-%d %H:%M:%S'`) - ${SENSOR} - Service Stopped" >> ${logtemp}
done
elif [ "${2}" = "power" ]; then
STOP_SERVICE power
echo "(`date +'%Y-%m-%d %H:%M:%S'`) Service Stopped" >> ${logpower}
echo "(`date +'%Y-%m-%d %H:%M:%S'`) Service Stopped" >> ${PW_LOGPOWER}
elif [ "${2}" = "powerlogger" ]; then
STOP_SERVICE powerlogger
@@ -871,7 +871,7 @@ fi
SERVICE_MNG ${2} start
elif [ "${3}" = "status" ]; then
srvc=${POWERWALL_SERVICES[${2}]}
srvc=${PW_POWERWALL_SERVICES[${2}]}
c=0; spc=''; spc1=`expr 25 - ${#srvc}`; until [ $c = ${spc1} ]; do spc="${spc} "; c=`expr $c + 1`; done
echo -en "${idsCL[LightCyan]}${srvc}${spc}: "
[ "$(systemctl is-active ${srvc})" == "active" ] && echo -en "${idsCL[Green]}Running" || echo -en "${idsCL[Yellow]}Not Running"