diff --git a/esxi-scripts/iscsi-server-shutdown.ps1 b/esxi-scripts/iscsi-server-shutdown.ps1 index 86c6a4c8..d8625c83 100755 --- a/esxi-scripts/iscsi-server-shutdown.ps1 +++ b/esxi-scripts/iscsi-server-shutdown.ps1 @@ -4,6 +4,6 @@ Connect-VIServer -Server $args[0] -Protocol https -User $ESXiUsername -Password $ESXiPassword | Out-Null -Get-VM | Where {$_.Name -like '*iSCSI*'} | Shutdown-VMGuest -Confirm:$false +Get-VM | Where {$_.Name -like '*iSCSI-Server*'} | Shutdown-VMGuest -Confirm:$false exit 0 diff --git a/esxi-scripts/iscsi-sys-server-shutdown.ps1 b/esxi-scripts/iscsi-sys-server-shutdown.ps1 new file mode 100755 index 00000000..b839e55b --- /dev/null +++ b/esxi-scripts/iscsi-sys-server-shutdown.ps1 @@ -0,0 +1,9 @@ +#!/usr/bin/env pwsh + +. /opt/idssys/powerwall/settings.ps1 + +Connect-VIServer -Server $args[0] -Protocol https -User $ESXiUsername -Password $ESXiPassword | Out-Null + +Get-VM | Where {$_.Name -like '*iSCSI-Systems*'} | Shutdown-VMGuest -Confirm:$false + +exit 0 diff --git a/powerwall.sh b/powerwall.sh index 5bc0795f..b8a3d8d1 100755 --- a/powerwall.sh +++ b/powerwall.sh @@ -593,7 +593,7 @@ CHECKPOWER(){ fi echo -e "${idsCL[LightCyan]}ServerRack Amps ${idsCL[Default]}: ${idsCL[Green]}${APCPDU_AMP}'A${idsCL[Default]}" - echo -e "${idsCL[LightCyan]}ServerRack Wattage ${idsCL[Default]}: ${idsCL[Green]}${APCPDU_WATT_disp}'W${idsCL[Default]}" + echo -e "${idsCL[LightCyan]}ServerRack Wattage ${idsCL[Default]}: ${idsCL[Green]}${APCPDU_WATT_disp}'W ~ estimate${idsCL[Default]}" echo if [ "${SVRRM_VOLT}" != "" ]; then @@ -605,8 +605,8 @@ CHECKPOWER(){ VOLT_DROP=`echo "scale=1; ${OUTPUTV2}-${SVRRM_VOLT}" | bc` fi - echo -e "${idsCL[LightCyan]}NetworkRack Amps ${idsCL[Default]}: ${idsCL[Green]}${NETRK_AMP}'A${idsCL[Default]}" - echo -e "${idsCL[LightCyan]}NetworkRack Wattage ${idsCL[Default]}: ${idsCL[Green]}${NETRK_WATT}'W${idsCL[Default]}" + echo -e "${idsCL[LightCyan]}NetworkRack Amps ${idsCL[Default]}: ${idsCL[Green]}${NETRK_AMP}'A ~ estimate${idsCL[Default]}" + echo -e "${idsCL[LightCyan]}NetworkRack Wattage ${idsCL[Default]}: ${idsCL[Green]}${NETRK_WATT}'W ~ estimate${idsCL[Default]}" echo echo -e "${idsCL[LightCyan]}Voltage ${idsCL[Default]}: ${idsCL[Green]}${SVRRM_VOLT}'V${idsCL[Default]}" @@ -734,7 +734,7 @@ BATT VOLTAGE: ${BATTVOLT}V" 1 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 & + SHUTDOWN_MAIN POWER & battstatus=2 fi @@ -746,7 +746,7 @@ Shutting down main servers" 1 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 & + SHUTDOWN_SYS POWER & battstatus=3 @@ -921,12 +921,12 @@ CHECK_SERVICES(){ } SHUTDOWN_MAIN(){ - if [ "${1}" == "ServerRoomTH"]; then + if [ "${1}" == "ServerRoomTH"] || [ "${1}" == "TEMP"]; then SHUTDOWN_SERVERS MAIN ${2} reason='Server Room Overheated!' sendnotice=true - elif [ "${1}" == "power"]; then + elif [ "${1}" == "POWER"]; then SHUTDOWN_SERVERS MAIN ${2} reason='Low Power!' sendnotice=true @@ -945,12 +945,12 @@ SHUTDOWN_MAIN(){ echo } SHUTDOWN_SYS(){ - if [ "${1}" == "ServerRoomTH"]; then + if [ "${1}" == "ServerRoomTH"] || [ "${1}" == "TEMP"]; then SHUTDOWN_SERVERS SYS ${2} reason='Server Room Overheated!' sendnotice=true - elif [ "${1}" == "power"]; then + elif [ "${1}" == "POWER"]; then SHUTDOWN_SERVERS SYS ${2} reason='Low Power!' sendnotice=true @@ -989,15 +989,7 @@ SHUTDOWN_CRIT(){ } SHUTDOWN_SERVERS(){ - - # HOSTS=${1}HOSTS[@] - # for ESXIHOST in "${!HOSTS}"; do - # echo "Shutting Down: ${ESXIHOST}" - # /usr/bin/ssh root@${ESXIHOST} "cp /vmfs/volumes/iSCSI2-Datastore2\ \(R5\)\(1-4\)/\!SCRIPTS/esxidown/async.sh /vmfs/volumes/iSCSI2-Datastore2\ \(R5\)\(1-4\)/\!SCRIPTS/esxidown/async-${ESXIHOST}.sh" - # /usr/bin/ssh root@${ESXIHOST} "cp /vmfs/volumes/iSCSI2-Datastore2\ \(R5\)\(1-4\)/\!SCRIPTS/esxidown/esxidown.sh /vmfs/volumes/iSCSI2-Datastore2\ \(R5\)\(1-4\)/\!SCRIPTS/esxidown/esxidown-${ESXIHOST}.sh" - # /usr/bin/ssh root@${ESXIHOST} "sed -i 's/\$SCRIPTPATH\/esxidown.sh/\$SCRIPTPATH\/esxidown-${ESXIHOST}.sh/g' /vmfs/volumes/iSCSI2-Datastore2\ \(R5\)\(1-4\)/\!SCRIPTS/esxidown/async-${ESXIHOST}.sh" - # /usr/bin/ssh root@${ESXIHOST} "/vmfs/volumes/iSCSI2-Datastore2\ \(R5\)\(1-4\)/\!SCRIPTS/esxidown/async-${ESXIHOST}.sh" - # done + TEST=true echo "($datetime) - Shutting down ${1} servers" >> ${PW_LOGFILE} [ "${TEST}" == "true" ] && echo "RUNNING IN TEST MODE">>${PW_LOGFILE} @@ -1005,56 +997,57 @@ SHUTDOWN_SERVERS(){ if [ "${1^^}" == "MAIN" ] || [ "${1^^}" == "ALL" ]; then if [ ! -f $FOLDER/shutdown.main ]; then touch $FOLDER/shutdown.main + echo -en "Disabling CLS in vCenter ... " if [ "${TEST}" != "true" ]; then - ssh root@${PW_VCENTERHOST} "sed -i '//{n;s/.*<\/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 + run=$(ssh root@${PW_VCENTERHOST} "sed -i '//{n;s/.*<\/enabled>/False<\/enabled>/}' /etc/vmware-vpx/vpxd.cfg >/dev/null 2>&1" >/dev/null 2>&1) + run=$(ssh root@${PW_VCENTERHOST} "service-control --stop vmware-vpxd >/dev/null 2>&1" >/dev/null 2>&1) + run=$(ssh root@${PW_VCENTERHOST} "service-control --start vmware-vpxd >/dev/null 2>&1" >/dev/null 2>&1) fi echo "Done" for ESXIHOST in "${PW_MAINSITE_HOSTS[@]}"; do echo -en "Stopping iSCSI VM's on: ${ESXIHOST} ... " - [ "${TEST}" != "true" ] && ${PW_FOLDER}/esxi-scripts/iscsi-vm-shutdown.ps1 ${ESXIHOST} >/dev/null 2>&1 + [ "${TEST}" != "true" ] && run=$(${PW_FOLDER}/esxi-scripts/iscsi-vm-shutdown.ps1 ${ESXIHOST} >/dev/null 2>&1) echo "Done" done for ESXIHOST in "${PW_MAINSITE_HOSTS[@]}"; do echo -en "Enabling Maintenance Mode on: ${ESXIHOST} ... " - [ "${TEST}" != "true" ] && ssh root@${ESXIHOST} 'esxcli system maintenanceMode set -e true -t 0' & + [ "${TEST}" != "true" ] && run=$(${PW_FOLDER}/esxi-scripts/host-maintenance_mode.ps1 ${ESXIHOST} & >/dev/null 2>&1) echo "Done" done sleep 1m for ESXIHOST in "${PW_MAINSITE_HOSTS[@]}"; do echo -en "Verifying iSCSI VM's stopped on: ${ESXIHOST} ... " - [ "${TEST}" != "true" ] && ${PW_FOLDER}/esxi-scripts/iscsi-vm-shutdown-verify.ps1 ${ESXIHOST} >/dev/null 2>&1 + [ "${TEST}" != "true" ] && run=$(${PW_FOLDER}/esxi-scripts/iscsi-vm-shutdown-verify.ps1 ${ESXIHOST} >/dev/null 2>&1) echo "Done" done for ESXIHOST in "${PW_MAINHOSTS[@]}"; do echo -en "Stopping Remaining VM's on: ${ESXIHOST} ... " if [ "${TEST}" != "true" ]; then - ${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 + run=$(${PW_FOLDER}/esxi-scripts/vm-shutdown.ps1 ${ESXIHOST} >/dev/null 2>&1) + run=$(${PW_FOLDER}/esxi-scripts/iscsi-server-shutdown.ps1 ${ESXIHOST} >/dev/null 2>&1) fi echo "Done" done for ESXIHOST in "${PW_MAINHOSTS[@]}"; do echo -en "Shutting down host & disabling Maintenance Mode: ${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' + run=$(ssh root@${ESXIHOST} 'esxcli system shutdown poweroff -d 10 -r "Automated ESXi host shutdown"') + run=$(ssh root@${ESXIHOST} 'esxcli system maintenanceMode set -e false -t 0') fi echo "Done" done - 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 - sleep 1 - done - fi - echo "Done" - done + # 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 + # sleep 1 + # done + # fi + # echo "Done" + # done fi fi if [ "${1^^}" == "SYS" ] || [ "${1^^}" == "ALL" ]; then @@ -1062,6 +1055,16 @@ SHUTDOWN_SERVERS(){ if [ ! -f $FOLDER/shutdown.sys ]; then touch $FOLDER/shutdown.sys + if [ "${1^^}" == "SYS" ]; then + echo -en "Disabling CLS in vCenter ... " + if [ "${TEST}" != "true" ]; then + run=$(ssh root@${PW_VCENTERHOST} "sed -i '//{n;s/.*<\/enabled>/False<\/enabled>/}' /etc/vmware-vpx/vpxd.cfg >/dev/null 2>&1" >/dev/null 2>&1) + run=$(ssh root@${PW_VCENTERHOST} "service-control --stop vmware-vpxd >/dev/null 2>&1" >/dev/null 2>&1) + run=$(ssh root@${PW_VCENTERHOST} "service-control --start vmware-vpxd >/dev/null 2>&1" >/dev/null 2>&1) + fi + echo "Done" + fi + for ESXIHOST in "${PW_SYSHOSTS[@]}"; do echo -en "Stopping iSCSI VM's on: ${ESXIHOST} ... " [ "${TEST}" != "true" ] && ${PW_FOLDER}/esxi-scripts/iscsi-sys-vm-shutdown.ps1 ${ESXIHOST} >/dev/null 2>&1 @@ -1069,15 +1072,15 @@ SHUTDOWN_SERVERS(){ done for ESXIHOST in "${PW_SYSHOSTS[@]}"; do echo -en "Enabling Maintenance Mode on: ${ESXIHOST} ... " - [ "${TEST}" != "true" ] && ssh root@${ESXIHOST} 'esxcli system maintenanceMode set -e true -t 0' & - echo "Done" - done - sleep 1m - for ESXIHOST in "${PW_SYSHOSTS[@]}"; do - echo -en "Suspending MySQL & LAN-DNS VM's on: ${ESXIHOST} ... " - [ "${TEST}" != "true" ] && ${PW_FOLDER}/esxi-scripts/sys-suspend.ps1 ${ESXIHOST} >/dev/null 2>&1 + [ "${TEST}" != "true" ] && run=$(${PW_FOLDER}/esxi-scripts/host-maintenance_mode.ps1 ${ESXIHOST} & >/dev/null 2>&1) echo "Done" done + # sleep 1m + # for ESXIHOST in "${PW_SYSHOSTS[@]}"; do + # echo -en "Suspending MySQL & LAN-DNS VM's on: ${ESXIHOST} ... " + # [ "${TEST}" != "true" ] && ${PW_FOLDER}/esxi-scripts/sys-suspend.ps1 ${ESXIHOST} >/dev/null 2>&1 + # echo "Done" + # done for ESXIHOST in "${PW_SYSHOSTS[@]}"; do echo -en "Shutting Down VM's on: ${ESXIHOST} ... " if [ "${TEST}" != "true" ]; then @@ -1149,10 +1152,7 @@ SHUTDOWN_SERVER(){ # echo -e "${idsCL[Green]}Done\n" echo -en "${idsCL[LightCyan]}Shutting down remaining VM's ... " - if [ "${TEST}" != "true" ]; then - run=$(${PW_FOLDER}/esxi-scripts/vm-shutdown.ps1 ${hostip} >/dev/null 2>&1) - # ${PW_FOLDER}/esxi-scripts/iscsi-server-shutdown.ps1 ${hostip} >/dev/null 2>&1 - fi + [ "${TEST}" != "true" ] && run=$(${PW_FOLDER}/esxi-scripts/vm-shutdown.ps1 ${hostip} >/dev/null 2>&1) echo -e "${idsCL[Green]}Done\n" echo -en "${idsCL[LightCyan]}Verifying no VMs remain on the host ... "