diff --git a/powerwall.sh b/powerwall.sh index 45cbd581..6ab937f8 100755 --- a/powerwall.sh +++ b/powerwall.sh @@ -1087,34 +1087,67 @@ SHUTDOWN_SERVERS(){ fi } SHUTDOWN_SERVER(){ - echo "($datetime) - Shutting down ${1}" >> ${PW_LOGFILE} + TEST=true - echo -en "Enabling Maintenance mode and will wait for iSCSI VM's to begin migrating ... " - [ "${TEST}" != "true" ] && ${PW_FOLDER}/esxi-scripts/host-maintenance_mode.ps1 ${PW_ESXI_HOST_NAMES[${1}]} & >/dev/null 2>&1 - sleep 45s - echo "Done" + if [ "${PW_iDRACHOST_SHORTNAMES[${1}]}" != "" ]; then + tmp=${PW_iDRACHOST_SHORTNAMES[${1}]} + hostip=${PW_HOST_ADDRESSES[${tmp}]} + elif [ "${PW_ESXI_HOST_NAMES[${1}]}" != "" ]; then + hostip=${1} + elif [ "${PW_HOST_IDRACS[iDS-vMS-Host${1}]}" != "" ]; then + hostip=${PW_HOST_ADDRESSES[iDS-vMS-Host${1}]} + elif [ "${PW_HOST_IDRACS[${1}]}" != "" ]; then + tmp=${PW_HOST_IDRACS[${1}]} + hostip=${PW_HOST_ADDRESSES[${tmp}]} + else + hostip='' + fi + echo -e "\n${idsCL[Yellow]}ESXi Host Powerdown" + DIVIDER . yellow 75 - echo -en "Shutting Down VM's on: ${1} ... " - if [ "${TEST}" != "true" ]; then - ${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" + + if [ "${hostip}" != "" ]; then + host=${PW_ESXI_HOST_NAMES[${hostip}]} + c=0; spcA=''; spc1=`expr 21 - ${#host} - 1`; until [ $c = ${spc1} ]; do spcA="${spcA} "; c=`expr $c + 1`; done + c=0; spcB=''; spc1=`expr 18 - ${#PW_HOST_ADDRESSES[${hostip}]} - 1`; until [ $c = ${spc1} ]; do spcB="${spcB} "; c=`expr $c + 1`; done + echo -en "${idsCL[LightCyan]} Host: ${idsCL[Green]}${host}${spcA}" + echo -en "${idsCL[LightCyan]}Host IP: ${idsCL[Green]}${hostip}${spcB}" + echo -e "${idsCL[LightCyan]}iDrac IP: ${idsCL[Green]}${PW_HOST_IDRACS[${host}]}${idsCL[Default]}" + DIVIDER . yellow 75 + echo + + echo "($datetime) - Shutting down ${host} (${hostip})" >> ${PW_LOGFILE} + echo -en "${idsCL[LightCyan]}Enabling Maintenance mode and will wait for iSCSI VM's to begin migrating ... " + [ "${TEST}" != "true" ] && ${PW_FOLDER}/esxi-scripts/host-maintenance_mode.ps1 ${PW_ESXI_HOST_NAMES[${hostip}]} & >/dev/null 2>&1 + sleep 45s + echo -e "${idsCL[Green]}Done\n" + + echo -en "${idsCL[LightCyan]}Shutting Down VM's on: ${host} (${hostip}) ... " + if [ "${TEST}" != "true" ]; then + ${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 + echo -e "${idsCL[Green]}Done\n" - echo -en "Shutting Down Host: ${1} ... " - if [ "${TEST}" != "true" ]; then - ssh root@${1} 'esxcli system shutdown poweroff -d 10 -r "Automated ESXi host shutdown"' & >/dev/null 2>&1 - ssh root@${1} 'esxcli system maintenanceMode set -e false -t 0' >/dev/null 2>&1 - fi - echo "Done" + echo -en "${idsCL[LightCyan]}Shutting Down Host: ${host} (${hostip}) ... " + if [ "${TEST}" != "true" ]; then + ssh root@${hostip} 'esxcli system shutdown poweroff -d 10 -r "Automated ESXi host shutdown"' & >/dev/null 2>&1 + ssh root@${hostip} 'esxcli system maintenanceMode set -e false -t 0' >/dev/null 2>&1 + fi + echo -e "${idsCL[Green]}Done\n" - echo -en "Waiting for Host (${1}) to shutdown ... " - if [ "${TEST}" != "true" ]; then - while ping -qw 10 -c3 "${1}">/dev/null 2>&1; do - sleep 1 - done + echo -en "${idsCL[LightCyan]}Waiting for Host ${host} (${hostip}) to shutdown ... " + if [ "${TEST}" != "true" ]; then + while ping -qw 10 -c3 "${hostip}">/dev/null 2>&1; do + sleep 1 + done + fi + echo -e "${idsCL[Green]}Done\n" + + else + echo -e "${idsCL[LightRed]}Host cannot be found for '${1}'${idsCL[Default]}" fi - echo "Done" + echo } ISCSIVMSHUTDOWN(){ @@ -1361,14 +1394,15 @@ fi echo -e " ${idsCL[LightYellow]} avg = { noavg='Does not display average' / " echo -e " #='Num of days for avg' }${idsCL[Default]} --> Defaults to 3 days avg" echo - echo -e " ${idsCL[Yellow]}shutdownhost {host-ip} ${idsCL[Default]}--> Shutdown host server" + echo -e " ${idsCL[Yellow]}shutdownhost {host} ${idsCL[Default]}--> Shutdown ESXI host and its VMs" + echo -e " ${idsCL[LightYellow]} host = {esxi-ip}, {idrac-ip}, {hostname} or {host-number;0-9}" echo -e " ${idsCL[Yellow]}iscsi-vm-shutdown {type} ${idsCL[Default]}--> Shutdown VM's running on iSCSI-(PRI or SYS) Datastore(s)" - echo -e " ${idsCL[LightYellow]} type = { main='iSCSI-PRI' / " - echo -e " sys='iSCSI-SYS' }${idsCL[Default]} --> Defaults to main (iSCSI-PRI)" + echo -e " ${idsCL[LightYellow]} type = { sys='iSCSI-SYS' / " + echo -e " main='iSCSI-MAIN' }${idsCL[Default]} --> Defaults to main (iSCSI-PRI)" echo -e " ${idsCL[Yellow]}shutdown_servers {type} ${idsCL[Default]}--> Shutdown selection of servers" echo -e " ${idsCL[LightYellow]} type = { main / sys / all }" echo -e " ${idsCL[Yellow]}hostpower {host} ${idsCL[Default]}--> Control host chassis power" - echo -e " ${idsCL[LightYellow]} host = {idrac-ip}, {esxi-ip}, {hostname} or {host-number;0-9}" + echo -e " ${idsCL[LightYellow]} host = {esxi-ip}, {idrac-ip}, {hostname} or {host-number;0-9}" echo # echo # echo -e " ${idsCL[Yellow]}services {cmd} ${idsCL[Default]}--> Manage all monitor services at once"