diff --git a/powerwall.sh b/powerwall.sh index d321b125..160b4a8d 100755 --- a/powerwall.sh +++ b/powerwall.sh @@ -154,13 +154,11 @@ Shutting down system servers!!" 1 Previous Temp: ${last_temp[${SENSOR}]}'F" echo -e "($datetime) - ${SENSOR} - ${temp_f}'F - Back to NORMAL TEMP - Previous Temp: ${last_temp[${SENSOR}]}'F" >> ${logtemp} echo "($datetime) - ${SENSOR} - ${temp_f}F - alert sent" >> ${logtemp} - [ "$(compgen -G "${FOLDER}/shutdown.*")" != "" ] && rm -f ${FOLDER}/shutdown.* echo -e "($datetime) - ${SENSOR} - Back to NORMAL TEMP: ${temp_f}'F" >> ${logfile} elif [ ${last_temp[${SENSOR}]} -eq 0 ]; then SENDNOTICE "${SENSOR} TEMP NORMAL" "($datetime) Service Startup NORMAL TEMP: ${temp_f}'F" echo -e "($datetime) - ${SENSOR} - ${temp_f}'F - Service Startup - NORMAL TEMP" >> ${logtemp} - [ "$(compgen -G "${FOLDER}/shutdown.*")" != "" ] && rm -f ${FOLDER}/shutdown.* echo -e "($datetime) - ${SENSOR} - Service Startup: ${temp_f}'F" >> ${logfile} fi @@ -369,98 +367,99 @@ 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} if [ "${1}" = "MAIN" ]; then - touch $FOLDER/shutdown.main - echo "($datetime) - Shutting down Main servers" >> ${logfile} - echo -en "Disabling CLS in vCenter ... " - if [ $TEST != true ]; then - ssh root@${VCENTERHOST} "sed -i '//{n;s/.*<\/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 + 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 '//{n;s/.*<\/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 + fi + echo "Done" + + for ESXIHOST in "${ESXIHOSTS[@]}"; do + echo -en "Stopping iSCSI VM's on: ${ESXIHOST} ... " + [ $TEST != true ] && ${FOLDER}/esxi-scripts/iscsi-vm-shutdown.ps1 ${ESXIHOST} >/dev/null 2>&1 + echo "Done" + done + for ESXIHOST in "${ESXIHOSTS[@]}"; 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 + echo "Done" + done + # sleep 1m + for ESXIHOST in "${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 + fi + echo "Done" + done + sleep 1m + for ESXIHOST in "${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"' + ssh root@${ESXIHOST} 'esxcli system maintenanceMode set -e false -t 0' + fi + echo "Done" + done + + for ESXIHOST in "${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 + sleep 1 + done + fi + echo "Done" + done fi - echo "Done" - - for ESXIHOST in "${ESXIHOSTS[@]}"; do - echo -en "Stopping iSCSI VM's on: ${ESXIHOST} ... " - [ $TEST != true ] && ${FOLDER}/esxi-scripts/iscsi-vm-shutdown.ps1 ${ESXIHOST} >/dev/null 2>&1 - echo "Done" - done - for ESXIHOST in "${ESXIHOSTS[@]}"; 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 - echo "Done" - done - # sleep 1m - for ESXIHOST in "${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 - fi - echo "Done" - done - sleep 1m - for ESXIHOST in "${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"' - ssh root@${ESXIHOST} 'esxcli system maintenanceMode set -e false -t 0' - fi - echo "Done" - done - - for ESXIHOST in "${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 - sleep 1 - done - fi - echo "Done" - done elif [ "${1}" = "SYS" ]; then - if ([ ! -f $FOLDER/shutdown.main ] && [ "${2}" == "TEMP" ]) || [ $TEST = true ]; then - SHUTDOWN_SERVERS MAIN + [ ! -f $FOLDER/shutdown.main ] && [ "${2}" == "TEMP" ] && SHUTDOWN_SERVERS MAIN + if [ ! -f $FOLDER/shutdown.sys ]; then + touch $FOLDER/shutdown.sys + + for ESXIHOST in "${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 + echo "Done" + done + for ESXIHOST in "${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 + fi + echo "Done" + done + for ESXIHOST in "${SYSHOSTS[@]}"; do + echo -en "Shutting Down Host: ${ESXIHOST} ... " + if [ $TEST != true ]; then + ssh root@${ESXIHOST} 'esxcli system maintenanceMode set -e true -t 0' + ssh root@${ESXIHOST} 'esxcli system shutdown poweroff -d 10 -r "Automated ESXi host shutdown"' & + ssh root@${ESXIHOST} 'esxcli system maintenanceMode set -e false -t 0' + fi + echo "Done" + done + + for ESXIHOST in "${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 + sleep 1 + done + fi + echo "Done" + done fi - [ $TEST != true ] && touch $FOLDER/shutdown.sys - echo "($datetime) - Shutting down System servers" >> ${logfile} - - for ESXIHOST in "${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 - echo "Done" - done - for ESXIHOST in "${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 - fi - echo "Done" - done - for ESXIHOST in "${SYSHOSTS[@]}"; do - echo -en "Shutting Down Host: ${ESXIHOST} ... " - if [ $TEST != true ]; then - ssh root@${ESXIHOST} 'esxcli system maintenanceMode set -e true -t 0' - ssh root@${ESXIHOST} 'esxcli system shutdown poweroff -d 10 -r "Automated ESXi host shutdown"' & - ssh root@${ESXIHOST} 'esxcli system maintenanceMode set -e false -t 0' - fi - echo "Done" - done - - for ESXIHOST in "${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 - sleep 1 - done - fi - echo "Done" - done - fi } SHUTDOWN_SERVER(){