186 lines
7.3 KiB
Bash
186 lines
7.3 KiB
Bash
SHUTDOWN_SERVER2(){
|
|
if [ "${1}" != "-h" ]; then
|
|
HOST=${1}
|
|
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^^}
|
|
hostname="All ${1^^} Host Servers"
|
|
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 [ "${HOST^^}" == "ALL" ] || [ "${HOST^^}" == "MAINSITE" ] || [ "${HOST^^}" == "OFFSITE" ] || [ "${HOST^^}" == "MAIN" ] || [ "${HOST^^}" == "SYS" ]; then
|
|
# ESXI_HOSTS=PW_${HOST^^}HOSTS[@]
|
|
ESXI_HOSTS=''
|
|
echo "1:${ESXI_HOSTS}"
|
|
echo "2:${!ESXI_HOSTS}"
|
|
# ESXI_HOSTS=(${!ESXI_HOSTS})
|
|
echo "3:${ESXI_HOSTS}"
|
|
echo "4:${ESXI_HOSTS[@]}"
|
|
else
|
|
ESXI_HOSTS=(${ESXI_HOST})
|
|
fi
|
|
|
|
echo "HERE1: '${PW_SYS_HOSTS}'"
|
|
echo "HERE2: '${PW_SYSHOSTS[@]}'"
|
|
|
|
|
|
for vhost in "${PW_HOSTS[@]}"; do
|
|
echo -e "HERE: ${idsCL[LightCyan]} ${PW_ESXI_HOST_NAMES[${vhost}]} [${vhost}]${idsCL[Default]}"
|
|
done
|
|
|
|
ESXIHOST=""
|
|
|
|
|
|
if [ "${ESXIHOST}" != "" ]; then
|
|
host=${PW_ESXI_HOST_NAMES[${ESXIHOST}]}
|
|
if [ "${2}" == "maintenance" ]; then
|
|
echo "($(date +'%Y-%m-%d %H:%M:%S')) - Putting ${host} [${ESXIHOST}] into maintenance mode" >> ${PW_LOGFILE}
|
|
else
|
|
echo "($(date +'%Y-%m-%d %H:%M:%S')) - Shutting down ${host} [${ESXIHOST}]" >> ${PW_LOGFILE}
|
|
fi
|
|
|
|
if [ "${ESXIHOST}" == "10.10.2.10" ]; then
|
|
echo -e "${idsCL[LightYellow]}Since this is the iSCSI-PRI host server, all iSCSI-PRI VM's are being shutdown ... "
|
|
for ehost in "${PW_MAINSITEHOSTS[@]}"; do
|
|
MSG="Stopping iSCSI-PRI VM's on: ${PW_ESXI_HOST_NAMES[${ehost}]} [${ehost}]"
|
|
c=0; MSG_SPC=''; spc1=`expr ${hc_cw} - ${#MSG}`; until [ ${c} = ${spc1} ]; do MSG_SPC="${MSG_SPC} "; ((c++)); done
|
|
echo -en "${idsCL[LightCyan]}${MSG}${MSG_SPC}: "
|
|
if [ "${TEST}" != "true" ]; then
|
|
${PW_FOLDER}/esxi-scripts/iscsi-vm-shutdown.ps1 ${ehost} >/dev/null 2>&1 &
|
|
echo -e "${idsCL[Green]}Commands sent${idsCL[Default]}"
|
|
sleep 5s
|
|
else
|
|
echo -e "${idsCL[Yellow]}(TEST MODE)${idsCL[Default]}"
|
|
fi
|
|
done
|
|
echo
|
|
[ "${TEST}" != "true" ] && sleep 10s
|
|
|
|
elif [ "${ESXIHOST}" == "10.10.2.17" ]; then
|
|
echo -e "${idsCL[LightYellow]}Since this is the iSCSI-SYS host server, all iSCSI-SYS VM's are being shutdown ... "
|
|
for ehost in "${PW_MAINSITEHOSTS[@]}"; do
|
|
MSG="Stopping iSCSI-SYS VM's on: ${PW_ESXI_HOST_NAMES[${ehost}]} [${ehost}]"
|
|
c=0; MSG_SPC=''; spc1=`expr ${hc_cw} - ${#MSG}`; until [ ${c} = ${spc1} ]; do MSG_SPC="${MSG_SPC} "; ((c++)); done
|
|
echo -en "${idsCL[LightCyan]}${MSG}${MSG_SPC}: "
|
|
if [ "${TEST}" != "true" ]; then
|
|
${PW_FOLDER}/esxi-scripts/iscsi-sys-vm-shutdown.ps1 ${ehost} >/dev/null 2>&1 &
|
|
echo -e "${idsCL[Green]}Commands sent${idsCL[Default]}"
|
|
sleep 5s
|
|
else
|
|
echo -e "${idsCL[Yellow]}(TEST MODE)${idsCL[Default]}"
|
|
fi
|
|
done
|
|
echo
|
|
[ "${TEST}" != "true" ] && sleep 10s
|
|
|
|
fi
|
|
|
|
MSG="Enabling maintenance mode & starting iSCSI VM migrations"
|
|
c=0; MSG_SPC=''; spc1=`expr ${hc_cw} - ${#MSG}`; until [ ${c} = ${spc1} ]; do MSG_SPC="${MSG_SPC} "; ((c++)); done
|
|
echo -en "${idsCL[LightCyan]}${MSG}${MSG_SPC}: "
|
|
if [ "${TEST}" != "true" ]; then
|
|
${PW_FOLDER}/esxi-scripts/host-maintenance_mode.ps1 ${PW_VCENTER_HOST_NAMES[${ESXIHOST}]} >/dev/null 2>&1 &
|
|
sleep 25s
|
|
echo -e "${idsCL[Green]}Done${idsCL[Default]}\n"
|
|
else
|
|
echo -e "${idsCL[Yellow]}(TEST MODE)${idsCL[Default]}"
|
|
fi
|
|
|
|
MSG="Shutting down remaining VM's"
|
|
c=0; MSG_SPC=''; spc1=`expr ${hc_cw} - ${#MSG}`; until [ ${c} = ${spc1} ]; do MSG_SPC="${MSG_SPC} "; ((c++)); done
|
|
echo -en "${idsCL[LightCyan]}${MSG}${MSG_SPC}: "
|
|
if [ "${TEST}" != "true" ]; then
|
|
run=$(${PW_FOLDER}/esxi-scripts/vm-shutdown.ps1 ${ESXIHOST} >/dev/null 2>&1)
|
|
if [ "${ESXIHOST}" == "10.10.2.10" ] || [ "${ESXIHOST}" == "10.10.2.17" ]; then
|
|
if [ "${ESXIHOST}" == "10.10.2.10" ]; then
|
|
run=$(${PW_FOLDER}/esxi-scripts/iscsi-vm-shutdown-verify.ps1 ${ESXIHOST} >/dev/null 2>&1)
|
|
elif [ "${ESXIHOST}" == "10.10.2.17" ]; then
|
|
run=$(${PW_FOLDER}/esxi-scripts/iscsi-sys-vm-shutdown-verify.ps1 ${ESXIHOST} >/dev/null 2>&1)
|
|
fi
|
|
run=$(${PW_FOLDER}/esxi-scripts/iscsi-server-shutdown.ps1 ${ESXIHOST} >/dev/null 2>&1)
|
|
fi
|
|
run=$(${PW_FOLDER}/esxi-scripts/cls-shutdown.ps1 ${ESXIHOST} >/dev/null 2>&1)
|
|
echo -e "${idsCL[Green]}Done${idsCL[Default]}\n"
|
|
else
|
|
echo -e "${idsCL[Yellow]}(TEST MODE)${idsCL[Default]}"
|
|
fi
|
|
|
|
if [ "${2}" != "maintenance" ]; then
|
|
MSG="Waiting for VM's to power off or migrate"
|
|
c=0; MSG_SPC=''; spc1=`expr ${hc_cw} - ${#MSG}`; until [ ${c} = ${spc1} ]; do MSG_SPC="${MSG_SPC} "; ((c++)); done
|
|
echo -en "${idsCL[LightCyan]}${MSG}${MSG_SPC}: "
|
|
if [ "${TEST}" != "true" ]; then
|
|
MAINT_MODE_VERIFY_SHUTDOWN ${ESXIHOST} &
|
|
echo -e "${idsCL[Green]}Continuing in background\n"
|
|
else
|
|
echo -e "${idsCL[Yellow]}(TEST MODE)${idsCL[Default]}"
|
|
fi
|
|
|
|
|
|
if [ "${ESXIHOST}" == "10.10.2.10" ]; then
|
|
MSG="Waiting for Host ${host} [${ESXIHOST}] to shutdown"
|
|
c=0; MSG_SPC=''; spc1=`expr ${hc_cw} - ${#MSG}`; until [ ${c} = ${spc1} ]; do MSG_SPC="${MSG_SPC} "; ((c++)); done
|
|
echo -en "${idsCL[LightCyan]}${MSG}${MSG_SPC}: "
|
|
if [ "${TEST}" != "true" ]; then
|
|
while ping -qw 10 -c3 "${ESXIHOST}">/dev/null 2>&1; do sleep 1; done
|
|
echo -e "${idsCL[Green]}Done${idsCL[Default]}\n"
|
|
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[LightCyan]}${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)
|
|
sleep 3s
|
|
echo -e "${idsCL[Green]}Done${idsCL[Default]}\n"
|
|
else
|
|
echo -e "${idsCL[Yellow]}(TEST MODE)${idsCL[Default]}"
|
|
fi
|
|
|
|
else
|
|
echo -e "\n${idsCL[LightCyan]}The host ${host} [${ESXIHOST}] will be shutdown momentarily ... \n"
|
|
fi
|
|
else
|
|
echo -e "\n${idsCL[LightCyan]}The host ${host} [${ESXIHOST}] will be in maintenance mode momentarily ... \n"
|
|
fi
|
|
|
|
else
|
|
echo -e "${idsCL[LightRed]}Host cannot be found for '${1}'${idsCL[Default]}"
|
|
fi
|
|
echo
|
|
} |