From a9b9bddf3c730ef89a6dc5ff6013f908bcc7b66c Mon Sep 17 00:00:00 2001 From: David Schroeder Date: Fri, 15 Dec 2023 10:12:29 -0600 Subject: [PATCH] update --- inc/power.inc.sh | 175 +++++++++++++++++++++++++++++++++++++++++++++++ powerwall.sh | 175 ----------------------------------------------- 2 files changed, 175 insertions(+), 175 deletions(-) diff --git a/inc/power.inc.sh b/inc/power.inc.sh index 35ec0dfc..fc11de5a 100644 --- a/inc/power.inc.sh +++ b/inc/power.inc.sh @@ -618,4 +618,179 @@ POWERLOGGER_SERVICE(){ fi done +} + +HOSTPOWER(){ + echo "HERE: ${1} - ${2}" + if [ "${PW_iDRACHOST_SHORTNAMES[${1}]}" != "" ]; then + idracip=${1} + elif [ "${PW_ESXI_HOST_NAMES[${1}]}" != "" ]; then + tmp=${PW_ESXI_HOST_NAMES[${1}]} + idracip=${PW_HOST_IDRACS[${tmp}]} + elif [ "${PW_HOST_IDRACS[iDS-vMS-Host${1}]}" != "" ]; then + idracip=${PW_HOST_IDRACS[iDS-vMS-Host${1}]} + elif [ "${PW_HOST_IDRACS[${1}]}" != "" ]; then + idracip=${PW_HOST_IDRACS[${1}]} + else + idracip='' + fi + + # if [ "${PW_iDRACHOST_SHORTNAMES[${1}]}" != "" ]; then + # tmp=${PW_iDRACHOST_SHORTNAMES[${1}]} + # ESXI_HOST=${PW_HOST_ADDRESSES[${tmp}]} + # elif [ "${PW_ESXI_HOST_NAMES[${1}]}" != "" ]; then + # ESXI_HOST=${1} + # elif [ "${PW_HOST_ADDRESSES[iDS-vMS-Host${1}]}" != "" ]; then + # ESXI_HOST=${PW_HOST_ADDRESSES[iDS-vMS-Host${1}]} + # elif ([ "${1::1}" == "o" ] || [ "${1::1}" == "O" ]) && [ "${PW_HOST_ADDRESSES[OFF-vMS-Host${1: -1}]}" != "" ]; then + # ESXI_HOST=${PW_HOST_ADDRESSES[OFF-vMS-Host${1: -1}]} + # elif [ "${PW_HOST_ADDRESSES[${1}]}" != "" ]; then + # ESXI_HOST=${PW_HOST_ADDRESSES[${1}]} + # elif [ "${1^^}" == "ALL" ] || [ "${1^^}" == "MAINSITE" ] || [ "${1^^}" == "OFFSITE" ] || [ "${1^^}" == "MAIN" ] || [ "${1^^}" == "SYS" ]; then + # ESXI_HOST=${HOST^^} + # MN=1 + # else + # ESXI_HOST='' + # fi + # [ "${ESXI_HOST}" != "" ] && idracip=${PW_HOST_IDRACS[${PW_ESXI_HOST_NAMES[${ESXI_HOST}]}]} || idracip='' + + echo -e "\n${idsCL[Yellow]}POWERING ${2^^} '${PW_iDRACHOST_SHORTNAMES[${idracip}]}'" + DIVIDER . yellow 75 + + if [ "${idracip}" != "" ]; then + # host=${PW_iDRACHOST_SHORTNAMES[${idracip}]} + # 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[${host}]} - 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]}${PW_HOST_ADDRESSES[${host}]}${spcB}" + # echo -e "${idsCL[LightCyan]}iDrac IP: ${idsCL[Green]}${idracip}${idsCL[Default]}" + # DIVIDER . yellow 75 + # echo + + if [ "${2^^}" == "ON" ] || [ "${2^^}" == "OFF" ] || [ "${2^^}" == "STATUS" ]; then + if [ "${idracip}" == "10.10.2.20" ] && [ "${2^^}" == "ON" ]; then + MSG="Powering ON the SAS Enclosure" + c=0; MSG_SPC=''; spc1=`expr ${HC_CW} - ${#MSG}`; until [ ${c} = ${spc1} ]; do MSG_SPC="${MSG_SPC} "; ((c++)); done + echo -en "\n${idsCL[LightCyan]}${MSG}${MSG_SPC}: " + if [ "${TEST}" != "true" ]; 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 1 >/dev/null 2>&1) + sleep 3s + echo -e "${idsCL[Green]}Done${idsCL[Default]}\n" + else + echo -e "${idsCL[Yellow]}(TEST MODE)${idsCL[Default]}" + fi + fi + + if [ "${TEST}" != "true" ]; then + echo -e "${idsCL[Green]}" + ipmitool -I lanplus -H ${idracip} -U ${PW_ESXI_USER} -P "${PW_ESXI_PASS}" chassis power ${2,,} + else + echo -e "\n${idsCL[Yellow]}(TEST MODE)" + fi + echo -e "${idsCL[Default]}" + + if [ "${idracip}" == "10.10.2.20" ] && [ "${2^^}" == "OFF" ]; then + MSG="Powering OFF the 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" ]; then + if [ "$(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 >/dev/null 2>&1) + sleep 3s + echo -e "${idsCL[Green]}Done${idsCL[Default]}\n" + else + echo -e "${idsCL[LightRed]}'${PW_iDRACHOST_SHORTNAMES[${idracip}]}' is not offline, not powering down\n" + fi + else + echo -e "${idsCL[Yellow]}(TEST MODE)${idsCL[Default]}" + fi + fi + else + echo -e "${idsCL[LightRed]}'${2^^}' command is not recognized${idsCL[Default]}" + fi + else + echo -e "${idsCL[LightRed]}Host cannot be found for '${1}'${idsCL[Default]}" + fi + echo -e "${idsCL[Default]}\n" +} + +PDUCONTROL(){ + function exitspacing { + echo -e "\n\033[K\n\033[K" + exit 0 + } + trap exitspacing EXIT + + while [ $# -gt 0 ]; do + case "$1" in + -port) PORT_SEL=${2};; + esac + shift 1 + done + echo + DIVIDER . yellow 75 + echo -e "${idsCL[Yellow]}APC-PDU Power Control" + DIVIDER true yellow 75 + [ "${PORT_SEL}" != "" ] && PORTSEL=${PORT_SEL} + if [ "${PORTSEL}" == "" ]; then + PORT_DESC=$(snmpwalk -t 1 -r 0 -v 1 -c public ${PW_APCPDU_IP} .1.3.6.1.4.1.318.1.1.12.3.3.1.1.2 -O vq 2> /dev/null | sed -e 's/"//g') + IFS=$'\n' + read -rd '' -a PORT_DESC <<<"${PORT_DESC}" + unset IFS + p=1 + for port in "${PORT_DESC[@]}"; do + portpower=$(snmpwalk -t 1 -r 0 -v 1 -c public ${PW_APCPDU_IP} .1.3.6.1.4.1.318.1.1.12.3.3.1.1.4.${p} -O vq 2> /dev/null | sed -e 's/"//g') + [ ${portpower} -eq 1 ] && portpower_disp="${idsCL[Green]}ON" || portpower_disp="${idsCL[LightRed]}OFF" + [ ${p} -lt 10 ] && pp=" ${p}" || pp=${p} + c=0; spc=''; spc1=`expr 28 - ${#port}`; until [ ${c} = ${spc1} ]; do spc="${spc} "; c=`expr ${c} + 1`; done + echo -e "${pp}) ${idsCL[LightCyan]}${port}${spc}${idsCL[Default]}: ${portpower_disp}${idsCL[Default]}" + ((p++)) + done + echo -e "" + echo -e "" + echo -e "(${idsCL[Yellow]}E${idsCL[Default]})xit" + echo -e "" + echo -e "\033[5A" + until [ "${PORTSEL}" != "" ]; do + echo -en "\n${idsCL[LightCyan]}Enter the port number to control: ${idsCL[Default]}" + read PORTSEL + echo + done + fi + + [ "${PORTSEL^^}" == "E" ] && exit 0 + + portsel_power=$(snmpwalk -t 1 -r 0 -v 1 -c public ${PW_APCPDU_IP} .1.3.6.1.4.1.318.1.1.12.3.3.1.1.4.${PORTSEL} -O vq 2> /dev/null | sed -e 's/"//g') + [ ${portsel_power} -eq 1 ] && portsel_power_disp="${idsCL[Green]}ON" || portsel_power_disp="${idsCL[LightRed]}OFF" + [ ${portsel_power} -eq 2 ] && portsel_change_power_disp="${idsCL[Green]}ON" || portsel_change_power_disp="${idsCL[LightRed]}OFF" + + if [ "${PORT_SEL}" != "" ]; then + portdesc=$(snmpwalk -t 1 -r 0 -v 1 -c public ${PW_APCPDU_IP} .1.3.6.1.4.1.318.1.1.12.3.3.1.1.2.${PORT_SEL} -O vq 2> /dev/null | sed -e 's/"//g') + echo -e "${idsCL[Yellow]}Port ${PORT_SEL}${idsCL[Default]}) ${idsCL[LightCyan]}${portdesc} ${idsCL[Default]}: ${portsel_power_disp}${idsCL[Default]}\n" + fi + + echo -en "${idsCL[LightCyan]}Are you sure you wish to turn ${portsel_change_power_disp}${idsCL[LightCyan]} port ${idsCL[Yellow]}${PORTSEL}${idsCL[Default]} (y/N): " + read -n 1 portchange_confirm + case "${portchange_confirm}" in + [Yy]) + [ ${portsel_power} -eq 1 ] && portsel_change=2 || portsel_change=1 + echo -en "\n\n${idsCL[LightCyan]}Turning ${portsel_change_power_disp}${idsCL[LightCyan]} port ${idsCL[Yellow]}${PORTSEL}${idsCL[Default]} ... " + run=$(snmpset -v 1 -c private ${PW_APCPDU_IP} .1.3.6.1.4.1.318.1.1.12.3.3.1.1.4.${PORTSEL} i ${portsel_change} >/dev/null 2>&1) + echo -e "${idsCL[Green]}Done${idsCL[Default]}" + echo + if [ "${PORT_SEL}" == "" ]; then + sleep 1s + unset PORTSEL + PDUCONTROL + exit 0 + fi + ;; + *) + if [ "${PORT_SEL}" == "" ]; then + unset PORTSEL + PDUCONTROL + exit 0 + fi + ;; + esac } \ No newline at end of file diff --git a/powerwall.sh b/powerwall.sh index 8cb42d8a..c51e6452 100755 --- a/powerwall.sh +++ b/powerwall.sh @@ -586,181 +586,6 @@ ISCSISYSVMSHUTDOWN(){ echo } -HOSTPOWER(){ - echo "HERE: ${1} - ${2}" - if [ "${PW_iDRACHOST_SHORTNAMES[${1}]}" != "" ]; then - idracip=${1} - elif [ "${PW_ESXI_HOST_NAMES[${1}]}" != "" ]; then - tmp=${PW_ESXI_HOST_NAMES[${1}]} - idracip=${PW_HOST_IDRACS[${tmp}]} - elif [ "${PW_HOST_IDRACS[iDS-vMS-Host${1}]}" != "" ]; then - idracip=${PW_HOST_IDRACS[iDS-vMS-Host${1}]} - elif [ "${PW_HOST_IDRACS[${1}]}" != "" ]; then - idracip=${PW_HOST_IDRACS[${1}]} - else - idracip='' - fi - - # if [ "${PW_iDRACHOST_SHORTNAMES[${1}]}" != "" ]; then - # tmp=${PW_iDRACHOST_SHORTNAMES[${1}]} - # ESXI_HOST=${PW_HOST_ADDRESSES[${tmp}]} - # elif [ "${PW_ESXI_HOST_NAMES[${1}]}" != "" ]; then - # ESXI_HOST=${1} - # elif [ "${PW_HOST_ADDRESSES[iDS-vMS-Host${1}]}" != "" ]; then - # ESXI_HOST=${PW_HOST_ADDRESSES[iDS-vMS-Host${1}]} - # elif ([ "${1::1}" == "o" ] || [ "${1::1}" == "O" ]) && [ "${PW_HOST_ADDRESSES[OFF-vMS-Host${1: -1}]}" != "" ]; then - # ESXI_HOST=${PW_HOST_ADDRESSES[OFF-vMS-Host${1: -1}]} - # elif [ "${PW_HOST_ADDRESSES[${1}]}" != "" ]; then - # ESXI_HOST=${PW_HOST_ADDRESSES[${1}]} - # elif [ "${1^^}" == "ALL" ] || [ "${1^^}" == "MAINSITE" ] || [ "${1^^}" == "OFFSITE" ] || [ "${1^^}" == "MAIN" ] || [ "${1^^}" == "SYS" ]; then - # ESXI_HOST=${HOST^^} - # MN=1 - # else - # ESXI_HOST='' - # fi - # [ "${ESXI_HOST}" != "" ] && idracip=${PW_HOST_IDRACS[${PW_ESXI_HOST_NAMES[${ESXI_HOST}]}]} || idracip='' - - echo -e "\n${idsCL[Yellow]}POWERING ${2^^} '${PW_iDRACHOST_SHORTNAMES[${idracip}]}'" - DIVIDER . yellow 75 - - if [ "${idracip}" != "" ]; then - # host=${PW_iDRACHOST_SHORTNAMES[${idracip}]} - # 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[${host}]} - 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]}${PW_HOST_ADDRESSES[${host}]}${spcB}" - # echo -e "${idsCL[LightCyan]}iDrac IP: ${idsCL[Green]}${idracip}${idsCL[Default]}" - # DIVIDER . yellow 75 - # echo - - if [ "${2^^}" == "ON" ] || [ "${2^^}" == "OFF" ] || [ "${2^^}" == "STATUS" ]; then - if [ "${idracip}" == "10.10.2.20" ] && [ "${2^^}" == "ON" ]; then - MSG="Powering ON the SAS Enclosure" - c=0; MSG_SPC=''; spc1=`expr ${HC_CW} - ${#MSG}`; until [ ${c} = ${spc1} ]; do MSG_SPC="${MSG_SPC} "; ((c++)); done - echo -en "\n${idsCL[LightCyan]}${MSG}${MSG_SPC}: " - if [ "${TEST}" != "true" ]; 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 1 >/dev/null 2>&1) - sleep 3s - echo -e "${idsCL[Green]}Done${idsCL[Default]}\n" - else - echo -e "${idsCL[Yellow]}(TEST MODE)${idsCL[Default]}" - fi - fi - - if [ "${TEST}" != "true" ]; then - echo -e "${idsCL[Green]}" - ipmitool -I lanplus -H ${idracip} -U ${PW_ESXI_USER} -P "${PW_ESXI_PASS}" chassis power ${2,,} - else - echo -e "\n${idsCL[Yellow]}(TEST MODE)" - fi - echo -e "${idsCL[Default]}" - - if [ "${idracip}" == "10.10.2.20" ] && [ "${2^^}" == "OFF" ]; then - MSG="Powering OFF the 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" ]; then - if [ "$(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 >/dev/null 2>&1) - sleep 3s - echo -e "${idsCL[Green]}Done${idsCL[Default]}\n" - else - echo -e "${idsCL[LightRed]}'${PW_iDRACHOST_SHORTNAMES[${idracip}]}' is not offline, not powering down\n" - fi - else - echo -e "${idsCL[Yellow]}(TEST MODE)${idsCL[Default]}" - fi - fi - else - echo -e "${idsCL[LightRed]}'${2^^}' command is not recognized${idsCL[Default]}" - fi - else - echo -e "${idsCL[LightRed]}Host cannot be found for '${1}'${idsCL[Default]}" - fi - echo -e "${idsCL[Default]}\n" -} - -PDUCONTROL(){ - function exitspacing { - echo -e "\n\033[K\n\033[K" - exit 0 - } - trap exitspacing EXIT - - while [ $# -gt 0 ]; do - case "$1" in - -port) PORT_SEL=${2};; - esac - shift 1 - done - echo - DIVIDER . yellow 75 - echo -e "${idsCL[Yellow]}APC-PDU Power Control" - DIVIDER true yellow 75 - [ "${PORT_SEL}" != "" ] && PORTSEL=${PORT_SEL} - if [ "${PORTSEL}" == "" ]; then - PORT_DESC=$(snmpwalk -t 1 -r 0 -v 1 -c public ${PW_APCPDU_IP} .1.3.6.1.4.1.318.1.1.12.3.3.1.1.2 -O vq 2> /dev/null | sed -e 's/"//g') - IFS=$'\n' - read -rd '' -a PORT_DESC <<<"${PORT_DESC}" - unset IFS - p=1 - for port in "${PORT_DESC[@]}"; do - portpower=$(snmpwalk -t 1 -r 0 -v 1 -c public ${PW_APCPDU_IP} .1.3.6.1.4.1.318.1.1.12.3.3.1.1.4.${p} -O vq 2> /dev/null | sed -e 's/"//g') - [ ${portpower} -eq 1 ] && portpower_disp="${idsCL[Green]}ON" || portpower_disp="${idsCL[LightRed]}OFF" - [ ${p} -lt 10 ] && pp=" ${p}" || pp=${p} - c=0; spc=''; spc1=`expr 28 - ${#port}`; until [ ${c} = ${spc1} ]; do spc="${spc} "; c=`expr ${c} + 1`; done - echo -e "${pp}) ${idsCL[LightCyan]}${port}${spc}${idsCL[Default]}: ${portpower_disp}${idsCL[Default]}" - ((p++)) - done - echo -e "" - echo -e "" - echo -e "(${idsCL[Yellow]}E${idsCL[Default]})xit" - echo -e "" - echo -e "\033[5A" - until [ "${PORTSEL}" != "" ]; do - echo -en "\n${idsCL[LightCyan]}Enter the port number to control: ${idsCL[Default]}" - read PORTSEL - echo - done - fi - - [ "${PORTSEL^^}" == "E" ] && exit 0 - - portsel_power=$(snmpwalk -t 1 -r 0 -v 1 -c public ${PW_APCPDU_IP} .1.3.6.1.4.1.318.1.1.12.3.3.1.1.4.${PORTSEL} -O vq 2> /dev/null | sed -e 's/"//g') - [ ${portsel_power} -eq 1 ] && portsel_power_disp="${idsCL[Green]}ON" || portsel_power_disp="${idsCL[LightRed]}OFF" - [ ${portsel_power} -eq 2 ] && portsel_change_power_disp="${idsCL[Green]}ON" || portsel_change_power_disp="${idsCL[LightRed]}OFF" - - if [ "${PORT_SEL}" != "" ]; then - portdesc=$(snmpwalk -t 1 -r 0 -v 1 -c public ${PW_APCPDU_IP} .1.3.6.1.4.1.318.1.1.12.3.3.1.1.2.${PORT_SEL} -O vq 2> /dev/null | sed -e 's/"//g') - echo -e "${idsCL[Yellow]}Port ${PORT_SEL}${idsCL[Default]}) ${idsCL[LightCyan]}${portdesc} ${idsCL[Default]}: ${portsel_power_disp}${idsCL[Default]}\n" - fi - - echo -en "${idsCL[LightCyan]}Are you sure you wish to turn ${portsel_change_power_disp}${idsCL[LightCyan]} port ${idsCL[Yellow]}${PORTSEL}${idsCL[Default]} (y/N): " - read -n 1 portchange_confirm - case "${portchange_confirm}" in - [Yy]) - [ ${portsel_power} -eq 1 ] && portsel_change=2 || portsel_change=1 - echo -en "\n\n${idsCL[LightCyan]}Turning ${portsel_change_power_disp}${idsCL[LightCyan]} port ${idsCL[Yellow]}${PORTSEL}${idsCL[Default]} ... " - run=$(snmpset -v 1 -c private ${PW_APCPDU_IP} .1.3.6.1.4.1.318.1.1.12.3.3.1.1.4.${PORTSEL} i ${portsel_change} >/dev/null 2>&1) - echo -e "${idsCL[Green]}Done${idsCL[Default]}" - echo - if [ "${PORT_SEL}" == "" ]; then - sleep 1s - unset PORTSEL - PDUCONTROL - exit 0 - fi - ;; - *) - if [ "${PORT_SEL}" == "" ]; then - unset PORTSEL - PDUCONTROL - exit 0 - fi - ;; - esac -} - LOGROTATE(){ STOPALL_SERVICES lm=`expr $(date +'%m') - 1`