SHUTDOWN_SERVER2(){ if [ "${1}" != "-h" ]; then HOST=${1}; MN=0 if [ "${PW_iDRACHOST_SHORTNAMES[${HOST}]}" != "" ]; then tmp=${PW_iDRACHOST_SHORTNAMES[${HOST}]} ESXI_HOST=${PW_HOST_ADDRESSES[${tmp}]} elif [ "${PW_ESXI_HOST_NAMES[${HOST}]}" != "" ]; then ESXI_HOST=${HOST} elif [ "${PW_HOST_IDRACS[iDS-vMS-Host${HOST}]}" != "" ]; then ESXI_HOST=${PW_HOST_ADDRESSES[iDS-vMS-Host${HOST}]} elif [ "${PW_HOST_ADDRESSES[${HOST}]}" != "" ]; then ESXI_HOST=${PW_HOST_ADDRESSES[${HOST}]} elif [ "${1^^}" == "ALL" ] || [ "${1^^}" == "MAINSITE" ] || [ "${1^^}" == "OFFSITE" ] || [ "${1^^}" == "MAIN" ] || [ "${1^^}" == "SYS" ]; then ESXI_HOST=${HOST^^} [ "{1^^}" == "ALL" ] && hostname="All Host Servers" || hostname="All ${1^^} Host Servers" MN=1 else ESXI_HOST='' fi [ "${ESXI_HOST}" == "" ] && echo -e "Invalid host\n" && exit 1 if [ "${PW_ESXI_HOST_NAMES[${ESXI_HOST}]}" != "" ]; then tmp=${PW_ESXI_HOST_NAMES[${ESXI_HOST}]} idracip=${PW_HOST_IDRACS[${tmp}]} hostname=${PW_iDRACHOST_SHORTNAMES[${idracip}]} fi fi while [ $# -gt 0 ]; do case "$1" in -p|-power) POWER=${2}; MODE="power";; -e|-esxi) ESXI=${2}; MODE="esxi";; -h) echo -e "Usage: ${idsCL[Yellow]}pw host {host} {flags}${idsCL[Default]} {" width=35 printf "%-${width}s- %s\n" " {host}" "(*required, can either be esxiIP,idracIP or Host#)" printf "%-${width}s- %s\n" " -p|-power {on / off}" "Controls Host Power" printf "%-${width}s- %s\n" " -e|-esxi {off / mm}" "Shuts down ESXi or puts into maintenance mode" echo -e "}\n" exit 0 ;; esac shift 1 done if [ ${MN} -eq 1 ]; then ESXI_HOSTS=PW_${HOST^^}HOSTS[@] ESXI_HOSTS=(${!ESXI_HOSTS}) else ESXI_HOSTS=(${ESXI_HOST}) hostname=${PW_ESXI_HOST_NAMES[${ESXI_HOST}]} fi echo DIVIDER . yellow 75 echo -e "${idsCL[Yellow]}Shutting down, ${hostname}${idsCL[Default]}" DIVIDER . yellow 75 if [ "${ESXI_HOSTS}" != "" ]; then if [ "${2}" == "maintenance" ]; then echo "($(date +'%Y-%m-%d %H:%M:%S')) - Putting ${hostname} into maintenance mode" >> ${PW_LOGFILE} else echo "($(date +'%Y-%m-%d %H:%M:%S')) - Shutting down ${hostname}" >> ${PW_LOGFILE} fi if [ "${2}" != "maintenance" ] && [ ${MN} -eq 1 ]; then if [ "${ESXI_HOST}" == "ALL" ] || [ "${ESXI_HOST}" == "OFFSITE" ]; then MSG="Disabling CLS for the Offsite Cluster in vCenter" c=0; MSG_SPC=''; spc1=`expr ${HC_CW} - ${#MSG}`; until [ ${c} = ${spc1} ]; do MSG_SPC="${MSG_SPC} "; ((c++)); done echo -en "${idsCL[White]}${MSG}${MSG_SPC}: " 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) echo -e "${idsCL[Green]}Done${idsCL[Default]}" touch ${PW_TMPFOLDER}/shutdown.cls.offsite else echo -e "${idsCL[Yellow]}(TEST MODE)${idsCL[Default]}" fi fi if [ "${ESXI_HOST}" != "OFFSITE" ]; then MSG="Disabling CLS for the Primary Cluster in vCenter" c=0; MSG_SPC=''; spc1=`expr ${HC_CW} - ${#MSG}`; until [ ${c} = ${spc1} ]; do MSG_SPC="${MSG_SPC} "; ((c++)); done echo -en "${idsCL[White]}${MSG}${MSG_SPC}: " 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) echo -e "${idsCL[Green]}Done${idsCL[Default]}" touch ${PW_TMPFOLDER}/shutdown.cls.mainsite else echo -e "${idsCL[Yellow]}(TEST MODE)${idsCL[Default]}" fi fi MSG="Restarting vCenter CLS Services" c=0; MSG_SPC=''; spc1=`expr ${HC_CW} - ${#MSG}`; until [ ${c} = ${spc1} ]; do MSG_SPC="${MSG_SPC} "; ((c++)); done echo -en "${idsCL[White]}${MSG}${MSG_SPC}: " if [ "${TEST}" != "true" ]; then ssh root@${PW_VCENTERHOST} "service-control --stop vmware-vpxd >/dev/null & 2>&1 && service-control --start vmware-vpxd >/dev/null & 2>&1" >/dev/null & 2>&1 & echo -e "${idsCL[Green]}Continuing in background${idsCL[Default]}" else echo -e "${idsCL[Yellow]}(TEST MODE)${idsCL[Default]}" fi echo fi if [ "${ESXI_HOST}" == "10.10.2.10" ] || [ "${ESXI_HOST}" == "10.10.2.17" ] || [ "${ESXI_HOST}" == "MAIN" ] || [ "${ESXI_HOST}" == "MAINSITE" ] || [ "${ESXI_HOST}" == "ALL" ] || [ "${ESXI_HOST}" == "SYS" ]; then for ESXIHOST in "${ESXI_HOSTS[@]}"; do if [ "${ESXI_HOST}" == "10.10.2.10" ] || [ "${ESXI_HOST}" == "MAIN" ]; then MSG="Stopping iSCSI-PRI VM's on: ${PW_ESXI_HOST_NAMES[${ESXIHOST}]}" elif [ "${ESXI_HOST}" == "10.10.2.17" ] || [ "${ESXI_HOST}" == "SYS" ]; then MSG="Stopping iSCSI-SYS VM's on: ${PW_ESXI_HOST_NAMES[${ESXIHOST}]}" elif [ "${ESXI_HOST}" == "MAINSITE" ] || [ "${ESXI_HOST}" == "ALL" ]; then MSG="Stopping All iSCSI VM's on: ${PW_ESXI_HOST_NAMES[${ESXIHOST}]}" fi c=0; MSG_SPC=''; spc1=`expr ${HC_CW} - ${#MSG}`; until [ ${c} = ${spc1} ]; do MSG_SPC="${MSG_SPC} "; ((c++)); done echo -en "${idsCL[White]}${MSG}${MSG_SPC}: " if [ "${TEST}" != "true" ]; then if [ "${ESXI_HOST}" == "10.10.2.10" ] || [ "${ESXI_HOST}" == "MAIN" ]; then ${PW_FOLDER}/esxi-scripts/iscsi-vm-shutdown.ps1 ${ESXIHOST} >/dev/null 2>&1 & elif [ "${ESXI_HOST}" == "10.10.2.17" ] || [ "${ESXI_HOST}" == "SYS" ]; then ${PW_FOLDER}/esxi-scripts/iscsi-sys-vm-shutdown.ps1 ${ESXIHOST} >/dev/null 2>&1 & elif [ "${ESXI_HOST}" == "MAINSITE" ] || [ "${ESXI_HOST}" == "ALL" ]; then ${PW_FOLDER}/esxi-scripts/iscsi-all-vm-shutdown.ps1 ${ESXIHOST} >/dev/null 2>&1 & fi sleep 5s echo -e "${idsCL[Green]}Commands sent${idsCL[Default]}" else echo -e "${idsCL[Yellow]}(TEST MODE)${idsCL[Default]}" fi MSG="Enabling maintenance mode on: ${PW_ESXI_HOST_NAMES[${ESXIHOST}]}" c=0; MSG_SPC=''; spc1=`expr ${HC_CW} - ${#MSG}`; until [ ${c} = ${spc1} ]; do MSG_SPC="${MSG_SPC} "; ((c++)); done echo -en "${idsCL[White]}${MSG}${MSG_SPC}: " if [ "${TEST}" != "true" ]; then ${PW_FOLDER}/esxi-scripts/host-maintenance_mode.ps1 ${PW_VCENTER_HOST_NAMES[${ESXIHOST}]} >/dev/null 2>&1 & echo -e "${idsCL[Green]}Done${idsCL[Default]}" else echo -e "${idsCL[Yellow]}(TEST MODE)${idsCL[Default]}" fi echo done echo [ "${TEST}" != "true" ] && sleep 10s else for ESXIHOST in "${ESXI_HOSTS[@]}"; do MSG="Enabling maintenance mode & starting iSCSI migrations on: ${PW_ESXI_HOST_NAMES[${ESXIHOST}]}" c=0; MSG_SPC=''; spc1=`expr ${HC_CW} - ${#MSG}`; until [ ${c} = ${spc1} ]; do MSG_SPC="${MSG_SPC} "; ((c++)); done echo -en "${idsCL[White]}${MSG}${MSG_SPC}: " if [ "${TEST}" != "true" ]; then ${PW_FOLDER}/esxi-scripts/host-maintenance_mode.ps1 ${PW_VCENTER_HOST_NAMES[${ESXIHOST}]} >/dev/null 2>&1 & echo -e "${idsCL[Green]}Done${idsCL[Default]}" else echo -e "${idsCL[Yellow]}(TEST MODE)${idsCL[Default]}" fi done echo MSG="Starting iSCSI migrations" c=0; MSG_SPC=''; spc1=`expr ${HC_CW} - ${#MSG}`; until [ ${c} = ${spc1} ]; do MSG_SPC="${MSG_SPC} "; ((c++)); done echo -en "${idsCL[White]}${MSG}${MSG_SPC}: " if [ "${TEST}" != "true" ]; then sleep 25s echo -e "${idsCL[Green]}Done${idsCL[Default]}" else echo -e "${idsCL[Yellow]}(TEST MODE)${idsCL[Default]}" fi echo fi for ESXIHOST in "${ESXI_HOSTS[@]}"; do MSG="Shutting down remaining VM's on: ${PW_ESXI_HOST_NAMES[${ESXIHOST}]}" c=0; MSG_SPC=''; spc1=`expr ${HC_CW} - ${#MSG}`; until [ ${c} = ${spc1} ]; do MSG_SPC="${MSG_SPC} "; ((c++)); done echo -en "${idsCL[White]}${MSG}${MSG_SPC}: " if [ "${TEST}" != "true" ]; then ${PW_FOLDER}/esxi-scripts/vm-shutdown.ps1 ${ESXIHOST} >/dev/null 2>&1 & echo -e "${idsCL[Green]}Commands sent${idsCL[Default]}" else echo -e "${idsCL[Yellow]}(TEST MODE)${idsCL[Default]}" fi done echo if [ "${ESXI_HOST}" == "10.10.2.10" ] || [ "${ESXI_HOST}" == "10.10.2.17" ] || [ "${ESXI_HOST}" == "MAIN" ] || [ "${ESXI_HOST}" == "MAINSITE" ] || [ "${ESXI_HOST}" == "ALL" ] || [ "${ESXI_HOST}" == "SYS" ]; then for ESXIHOST in "${ESXI_HOSTS[@]}"; do MSG="Waiting for iSCSI VM's to be: ${PW_ESXI_HOST_NAMES[${ESXIHOST}]}" c=0; MSG_SPC=''; spc1=`expr ${HC_CW} - ${#MSG}`; until [ ${c} = ${spc1} ]; do MSG_SPC="${MSG_SPC} "; ((c++)); done echo -en "${idsCL[White]}${MSG}${MSG_SPC}: " if [ "${TEST}" != "true" ]; then if [ "${ESXI_HOST}" == "10.10.2.10" ] || [ "${ESXI_HOST}" == "MAIN" ]; then ${PW_FOLDER}/esxi-scripts/iscsi-vm-shutdown-verify.ps1 10.10.2.10 >/dev/null 2>&1 & elif [ "${ESXI_HOST}" == "10.10.2.17" ] || [ "${ESXI_HOST}" == "SYS" ]; then ${PW_FOLDER}/esxi-scripts/iscsi-vm-shutdown-verify.ps1 10.10.2.17 >/dev/null 2>&1 & elif [ "${ESXI_HOST}" == "MAINSITE" ] || [ "${ESXI_HOST}" == "ALL" ]; then ${PW_FOLDER}/esxi-scripts/iscsi-vm-shutdown-verify.ps1 10.10.2.10 >/dev/null 2>&1 & ${PW_FOLDER}/esxi-scripts/iscsi-vm-shutdown-verify.ps1 10.10.2.17 >/dev/null 2>&1 & fi echo -e "${idsCL[Green]}Commands sent${idsCL[Default]}" else echo -e "${idsCL[Yellow]}(TEST MODE)${idsCL[Default]}" fi done echo fi MSG="Shutting down iSCSi-Server(s)" c=0; MSG_SPC=''; spc1=`expr ${HC_CW} - ${#MSG}`; until [ ${c} = ${spc1} ]; do MSG_SPC="${MSG_SPC} "; ((c++)); done echo -en "${idsCL[White]}${MSG}${MSG_SPC}: " if [ "${TEST}" != "true" ]; then if [ "${ESXI_HOST}" == "10.10.2.10" ] || [ "${ESXI_HOST}" == "MAIN" ]; then ${PW_FOLDER}/esxi-scripts/iscsi-vm-shutdown-verify.ps1 ${ESXIHOST} >/dev/null 2>&1 & elif [ "${ESXI_HOST}" == "10.10.2.17" ] || [ "${ESXI_HOST}" == "SYS" ]; then ${PW_FOLDER}/esxi-scripts/iscsi-sys-vm-shutdown-verify.ps1 ${ESXIHOST} >/dev/null 2>&1 & elif [ "${ESXI_HOST}" == "MAINSITE" ] || [ "${ESXI_HOST}" == "ALL" ]; then ${PW_FOLDER}/esxi-scripts/iscsi-server-shutdown.ps1 ${ESXIHOST} >/dev/null 2>&1 & fi echo -e "${idsCL[Green]}Commands sent${idsCL[Default]}" else echo -e "${idsCL[Yellow]}(TEST MODE)${idsCL[Default]}" fi if [ "${2}" != "maintenance" ]; then for ESXIHOST in "${ESXI_HOSTS[@]}"; do MSG="Waiting for VM's, will then shutdown: ${PW_ESXI_HOST_NAMES[${ESXIHOST}]}" c=0; MSG_SPC=''; spc1=`expr ${HC_CW} - ${#MSG}`; until [ ${c} = ${spc1} ]; do MSG_SPC="${MSG_SPC} "; ((c++)); done echo -en "${idsCL[White]}${MSG}${MSG_SPC}: " if [ "${TEST}" != "true" ]; then MAINT_MODE_VERIFY_SHUTDOWN ${ESXIHOST} & echo -e "${idsCL[Green]}Continuing in background${idsCL[Default]}" else echo -e "${idsCL[Yellow]}(TEST MODE)${idsCL[Default]}" fi done echo if [ "${ESXI_HOST}" == "10.10.2.10" ] || [ "${ESXI_HOST}" == "MAIN" ] || [ "${ESXI_HOST}" == "MAINSITE" ] || [ "${ESXI_HOST}" == "ALL" ]; then MSG="Waiting for iDS-vMS-iSCSI.scity.us to shutdown" c=0; MSG_SPC=''; spc1=`expr ${HC_CW} - ${#MSG}`; until [ ${c} = ${spc1} ]; do MSG_SPC="${MSG_SPC} "; ((c++)); done echo -en "${idsCL[White]}${MSG}${MSG_SPC}: " if [ "${TEST}" != "true" ]; then while ping -qw 10 -c3 "10.10.2.10">/dev/null 2>&1; do sleep 1; done echo -e "${idsCL[Green]}Done${idsCL[Default]}" else echo -e "${idsCL[Yellow]}(TEST MODE)${idsCL[Default]}" fi MSG="Powering off SAS Enclosure" c=0; MSG_SPC=''; spc1=`expr ${HC_CW} - ${#MSG}`; until [ ${c} = ${spc1} ]; do MSG_SPC="${MSG_SPC} "; ((c++)); done echo -en "${idsCL[White]}${MSG}${MSG_SPC}: " if [ "${TEST}" != "true" ] && [ "$(CHECK_HOST 10.10.2.10)" == "false" ]; then run=$(snmpset -v 1 -c private ${PW_APCPDU_IP} .1.3.6.1.4.1.318.1.1.12.3.3.1.1.4.14 i 2) echo -e "${idsCL[Green]}Done${idsCL[Default]}" else echo -e "${idsCL[Yellow]}(TEST MODE)${idsCL[Default]}" fi fi [ "${ESXI_HOST}" != "10.10.2.10" ] && echo -e "\n${idsCL[LightCyan]}${hostname}${idsCL[White]} will be shutdown momentarily ... \n" else echo -e "\n${idsCL[LightCyan]}${hostname}${idsCL[White]} will be in maintenance mode momentarily ... \n" fi else echo -e "${idsCL[LightRed]}Host cannot be found for '${1}'${idsCL[Default]}" fi echo }