From 2d9461e589002ed2036fe0580f8b48e716387ba7 Mon Sep 17 00:00:00 2001 From: David Schroeder Date: Wed, 31 Jan 2024 08:37:00 -0600 Subject: [PATCH] Update temp.inc.sh --- inc/temp.inc.sh | 262 +++++++++++++++++++++++++----------------------- 1 file changed, 135 insertions(+), 127 deletions(-) diff --git a/inc/temp.inc.sh b/inc/temp.inc.sh index eac4eb48..fba4f866 100644 --- a/inc/temp.inc.sh +++ b/inc/temp.inc.sh @@ -63,143 +63,151 @@ CHECKTEMP(){ elif [[ "${avgdays}" =~ ^[0-9]+$ ]]; then avgdays_disp="${avgdays}Day" fi - echo -e "${idsCL[Cyan]}Sensor Temperature(s) Current / ${idsCL[LightYellow]}${avgdays_disp}AVG ${idsCL[Yellow]}warning${idsCL[Default]} / ${idsCL[LightRed]}critical${idsCL[Default]}" else avgdays=noavg - echo -e "${idsCL[Cyan]}Sensor Temperature(s) Current ${idsCL[Yellow]}warning${idsCL[Default]} / ${idsCL[LightRed]}critical${idsCL[Default]}" fi DIVIDER . yellow 70 - - for SENSOR in ${PW_SENSOR_ORD[@]}; do - if ([ "${search}" == "" ] || [[ "${SENSOR,,}" = *"${search,,}"* ]]) && [ "${PW_SENSOR_TYPE[${SENSOR}]}" != "esxi" ] && [ "${temptype}" != "esxi" ] && ([ "${temptype}" != "fans" ] || ([ "${temptype}" == "fans" ] && [[ "${SENSOR}" = *"Room"* ]])); then - [ "${last_sensor}" == "${SENSOR%%-*}" ] && echo -en "\033[1A" - c=0; spc=''; spc1=`expr ${cw} - ${#SENSOR}`; until [ ${c} = ${spc1} ]; do spc="${spc} "; c=`expr ${c} + 1`; done - if [ ! -f ${PW_TMPFOLDER}/${SENSOR}.down ]; then - echo -en "\r\033[K${idsCL[White]}${idsST[Bold]}${SENSOR}${idsST[Reset]}${spc}${idsCL[Default]}: ${idsCL[Yellow]}" - if [ "${avgdays}" != "noavg" ]; then - if [[ "${avgdays^^}" = *"M"* ]]; then - avgdays_disp="${avgdays::-1} Minute" - elif [[ "${avgdays^^}" = *"H"* ]]; then - avgdays_disp="${avgdays::-1} Hour" - elif [[ "${avgdays^^}" = *"D"* ]]; then - avgdays_disp="${avgdays::-1} Day" - elif [[ "${avgdays}" =~ ^[0-9]+$ ]]; then - avgdays_disp="${avgdays::-1} Day" - fi - echo -en "Pulling data and calculating ${avgdays_disp} average ... " - else - echo -en "Pulling data ... " - fi - reading=$(CHECKTEMPSENSOR ${SENSOR} . . . . ${avgdays}) - echo -e "\r\033[K${idsCL[White]}${idsST[Bold]}${SENSOR}${idsST[Reset]}${spc}${idsCL[Default]}: ${reading}${idsCL[Default]}" - else - echo -e "\r\033[K${idsCL[White]}${idsST[Bold]}${SENSOR}${idsST[Reset]}${spc}${idsCL[Default]}: ${idsCL[Yellow]}Sensor Offline${idsCL[Default]}" - fi - echo - last_sensor=${SENSOR%%-*} - fi - done - DIVIDER true yellow 70 - if [ "${avgdays}" != "" ]; then - echo -e "${idsCL[Cyan]}ESXi Sensor Temperature(s) Current / ${idsCL[LightYellow]}${avgdays_disp}AVG ${idsCL[Yellow]}warning${idsCL[Default]} / ${idsCL[LightRed]}critical${idsCL[Default]}" - else - echo -e "${idsCL[Cyan]}ESXi Sensor Temperature(s) Current ${idsCL[Yellow]}warning${idsCL[Default]} / ${idsCL[LightRed]}critical${idsCL[Default]}" - fi - DIVIDER . yellow 70 - for SENSOR in ${PW_SENSOR_ORD[@]}; do - if ([ "${search}" == "" ] || [[ "${SENSOR,,}" = *"${search,,}"* ]]) && [ "${PW_SENSOR_TYPE[${SENSOR}]}" == "esxi" ] && [ "${temptype}" != "sensors" ]; then - vHOSTiDRACIP=${PW_HOST_IDRACS[${SENSOR}]} - vHOSTIP=${PW_HOST_ADDRESSES[${SENSOR}]} - vHOSTNAME=${PW_ESXI_HOST_NAMES[${vHOSTiDRACIP}]} - - echo -en "\r\033[K${idsCL[White]}${idsST[Bold]}${SENSOR} Host Sensors ${idsST[Reset]}${idsCL[White]}[${vHOSTiDRACIP}]" - if [ ! -f ${PW_TMPFOLDER}/${SENSOR}.down ]; then - if [ "${avgdays}" != "noavg" ]; then - echo -en "${idsCL[LightCyan]} Getting FanSpeed and calculating ${avgdays_disp} average..." - else - echo -en "${idsCL[LightCyan]} Getting FanSpeed..." - fi - RPM=$(snmpwalk -v 1 -c public -t 2 ${PW_HOST_IDRACS[${SENSOR}]} .1.3.6.1.4.1.674.10892.5.4.700.12.1.6.1.3 -O vq) - [ ! -f ${PW_TMPFOLDER}/.fanspeed.${SENSOR}.${cdt} ] && until [ -f ${PW_TMPFOLDER}/.fanspeed.${SENSOR}.${cdt} ]; do tmp=tmp; done - [ "${avgdays}" != "noavg" ] && fan_average=$(bc <<< "scale=0; $(ROUNDHALVES $(bc <<< "scale=3; $(AVERAGETEMP ${SENSOR} ${avgdays} FanSpeed)/10"))*10/1") - echo -en "\r\033[K${idsCL[White]}${idsST[Bold]}${SENSOR} Host Sensors ${idsST[Reset]}${idsCL[White]}[${vHOSTiDRACIP}]" - [ "${SENSOR}" == "iDS-vMS-Host6" ] && cSENSOR="iDS-vMS-Host7" || cSENSOR=${SENSOR} - if [ -f ${PW_TMPFOLDER}/.lastfancheck/${cSENSOR}.gl ]; then - FSC="${idsCL[LightGreen]}${idsST[Bold]}" - elif [ -f ${PW_TMPFOLDER}/.lastfancheck/${cSENSOR}.set ]; then - FSC="${idsCL[LightGreen]}" - else - FSC="${idsCL[LightYellow]}" - fi - echo -en "${idsCL[LightCyan]} [FanSpeed=${FSC}$(cat ${PW_TMPFOLDER}/.fanspeed.${SENSOR}.${cdt})${idsST[Reset]}${idsCL[LightCyan]}'% " - if [ "${avgdays}" != "noavg" ]; then - echo -e "${idsCL[LightYellow]} AVG=${fan_average}'%${idsCL[LightCyan]}]${idsCL[Default]}" - else - echo -e "($(IDS_NUMBER_FORMAT ${RPM})'RPM)]${idsCL[Default]}" - fi - - else - echo -e "${idsCL[Default]}" - fi - # if [ "${temptype}" != "fans" ]; then - DIVIDER . lightCyan 70 - echo -en "${idsCL[Yellow]}Pulling data for '${SENSOR}' ... " - - # if [ ! -f ${PW_TMPFOLDER}/${SENSOR}.down ] && [ "$(CHECK_HOST ${vHOSTIP})" != "false" ]; then + if [ "${temptype}" != "esxi" ]; then + if [ "${avgdays}" != "noavg" ]; then + echo -e "${idsCL[Cyan]}Sensor Temperature(s) Current / ${idsCL[LightYellow]}${avgdays_disp}AVG ${idsCL[Yellow]}warning${idsCL[Default]} / ${idsCL[LightRed]}critical${idsCL[Default]}" + else + echo -e "${idsCL[Cyan]}Sensor Temperature(s) Current ${idsCL[Yellow]}warning${idsCL[Default]} / ${idsCL[LightRed]}critical${idsCL[Default]}" + fi + DIVIDER . yellow 70 + for SENSOR in ${PW_SENSOR_ORD[@]}; do + if ([ "${search}" == "" ] || [[ "${SENSOR,,}" = *"${search,,}"* ]]) && [ "${PW_SENSOR_TYPE[${SENSOR}]}" != "esxi" ] && ([ "${temptype}" != "fans" ] || ([ "${temptype}" == "fans" ] && [[ "${SENSOR}" = *"Room"* ]])); then + [ "${last_sensor}" == "${SENSOR%%-*}" ] && echo -en "\033[1A" + c=0; spc=''; spc1=`expr ${cw} - ${#SENSOR}`; until [ ${c} = ${spc1} ]; do spc="${spc} "; c=`expr ${c} + 1`; done if [ ! -f ${PW_TMPFOLDER}/${SENSOR}.down ]; then - vHOST_TEMPNAMES=$(snmpwalk -v 1 -c public -t 2 ${vHOSTiDRACIP} .1.3.6.1.4.1.674.10892.5.4.700.20.1.8 -O vq | sed -e 's/"//g' | sed -e 's/ Temp//g') - IFS=$'\n' - read -rd '' -a vHOST_TEMPNAMES <<<"${vHOST_TEMPNAMES}" - unset IFS - echo -en "\r\033[K" - if [ ${#vHOST_TEMPNAMES[@]} -gt 1 ]; then - t=1 - for sensorname in "${vHOST_TEMPNAMES[@]}"; do - if [ "${temptype}" != "fans" ] || ([ "${temptype}" == "fans" ] && [[ "${sensorname}" = *"Exhaust"* ]]); then - temp_c=$(snmpwalk -v 1 -c public -t 2 ${vHOSTiDRACIP} .1.3.6.1.4.1.674.10892.5.4.700.20.1.6.1.${t} -O vq | sed -e 's/"//g') - temp_c=`echo "scale=1; ${temp_c}/10" | bc` - temp_warn=$(snmpwalk -v 1 -c public -t 2 ${vHOSTiDRACIP} .1.3.6.1.4.1.674.10892.5.4.700.20.1.11.1.${t} -O vq | sed -e 's/"//g') - temp_warn=`echo "scale=1; ${temp_warn}/10" | bc` - temp_crit=$(snmpwalk -v 1 -c public -t 2 ${vHOSTiDRACIP} .1.3.6.1.4.1.674.10892.5.4.700.20.1.10.1.${t} -O vq | sed -e 's/"//g') - temp_crit=`echo "scale=1; ${temp_crit}/10" | bc` - c=0; spc=''; spc1=`expr ${cw} - ${#sensorname} - 1`; until [ ${c} = ${spc1} ]; do spc="${spc} "; c=`expr ${c} + 1`; done - [ "${avgdays}" != "noavg" ] && echo -en "${idsCL[LightCyan]} ${sensorname}${spc}${idsCL[Default]}: ${idsCL[Yellow]}Calculating ${avgdays_disp} average ... " - reading=$(CHECKTEMPSENSOR ${SENSOR} ${temp_c} ${temp_warn} ${temp_crit} ${sensorname// /_} ${avgdays} ${temptype}) - [ "${avgdays}" != "noavg" ] && echo -en "\r\033[K" - echo -e "${idsCL[LightCyan]} ${sensorname}${spc}${idsCL[Default]}: ${reading}" - if [ "${temptype}" == "fans" ]; then - if [ -f ${PW_TMPFOLDER}/.lastfancheck/${cSENSOR}.gl ]; then - FSC="${idsCL[LightGreen]}" - elif [ -f ${PW_TMPFOLDER}/.lastfancheck/${cSENSOR}.set ]; then - FSC="${idsCL[Green]}" - else - FSC="${idsCL[LightYellow]}" - fi - echo -e " Golidlock Zone : ${idsCL[LightGreen]}${DEFAULT_ESXI_EXHAUST_MIN}'F${idsCL[Default]} +-${ESXI_FANSPEED_GL_ZONE}'F [ ${idsCL[Green]}${GL_LOW}${idsCL[Default]} <--> ${idsCL[LightYellow]}${GL_HIGH}${idsCL[Default]} ]" - echo -e " Last checked : ${idsCL[LightCyan]}$(date -r ${PW_TMPFOLDER}/.lastfancheck/${SENSOR} "+%m/%d @ %l:%M%p")${idsCL[Default]}" - echo -e " Last set : ${FSC}$(date -r ${PW_TMPFOLDER}/.lastfancheck/${SENSOR}.set "+%m/%d @ %l:%M%p")${idsCL[Default]}" - fi - fi - ((t++)) - done + echo -en "\r\033[K${idsCL[White]}${idsST[Bold]}${SENSOR}${idsST[Reset]}${spc}${idsCL[Default]}: ${idsCL[Yellow]}" + if [ "${avgdays}" != "noavg" ]; then + if [[ "${avgdays^^}" = *"M"* ]]; then + avgdays_disp="${avgdays::-1} Minute" + elif [[ "${avgdays^^}" = *"H"* ]]; then + avgdays_disp="${avgdays::-1} Hour" + elif [[ "${avgdays^^}" = *"D"* ]]; then + avgdays_disp="${avgdays::-1} Day" + elif [[ "${avgdays}" =~ ^[0-9]+$ ]]; then + avgdays_disp="${avgdays::-1} Day" + fi + echo -en "Pulling data and calculating ${avgdays_disp} average ... " else - echo -e "${idsCL[LightCyan]} ${vHOSTNAME}${spc}${idsCL[Default]}: No Data" + echo -en "Pulling data ... " + fi + reading=$(CHECKTEMPSENSOR ${SENSOR} . . . . ${avgdays}) + echo -e "\r\033[K${idsCL[White]}${idsST[Bold]}${SENSOR}${idsST[Reset]}${spc}${idsCL[Default]}: ${reading}${idsCL[Default]}" + else + echo -e "\r\033[K${idsCL[White]}${idsST[Bold]}${SENSOR}${idsST[Reset]}${spc}${idsCL[Default]}: ${idsCL[Yellow]}Sensor Offline${idsCL[Default]}" + fi + echo + last_sensor=${SENSOR%%-*} + fi + done + DIVIDER true yellow 70 + fi + + if [ "${temptype}" != "sensors" ]; then + if [ "${avgdays}" != "noavg" ]; then + echo -e "${idsCL[Cyan]}ESXi Sensor Temperature(s) Current / ${idsCL[LightYellow]}${avgdays_disp}AVG ${idsCL[Yellow]}warning${idsCL[Default]} / ${idsCL[LightRed]}critical${idsCL[Default]}" + else + echo -e "${idsCL[Cyan]}ESXi Sensor Temperature(s) Current ${idsCL[Yellow]}warning${idsCL[Default]} / ${idsCL[LightRed]}critical${idsCL[Default]}" + fi + DIVIDER . yellow 70 + for SENSOR in ${PW_SENSOR_ORD[@]}; do + if ([ "${search}" == "" ] || [[ "${SENSOR,,}" = *"${search,,}"* ]]) && [ "${PW_SENSOR_TYPE[${SENSOR}]}" == "esxi" ]; then + vHOSTiDRACIP=${PW_HOST_IDRACS[${SENSOR}]} + vHOSTIP=${PW_HOST_ADDRESSES[${SENSOR}]} + vHOSTNAME=${PW_ESXI_HOST_NAMES[${vHOSTiDRACIP}]} + + echo -en "\r\033[K${idsCL[White]}${idsST[Bold]}${SENSOR} Host Sensors ${idsST[Reset]}${idsCL[White]}[${vHOSTiDRACIP}]" + if [ ! -f ${PW_TMPFOLDER}/${SENSOR}.down ]; then + if [ "${avgdays}" != "noavg" ]; then + echo -en "${idsCL[LightCyan]} Getting FanSpeed and calculating ${avgdays_disp} average..." + else + echo -en "${idsCL[LightCyan]} Getting FanSpeed..." + fi + RPM=$(snmpwalk -v 1 -c public -t 2 ${PW_HOST_IDRACS[${SENSOR}]} .1.3.6.1.4.1.674.10892.5.4.700.12.1.6.1.3 -O vq) + [ ! -f ${PW_TMPFOLDER}/.fanspeed.${SENSOR}.${cdt} ] && until [ -f ${PW_TMPFOLDER}/.fanspeed.${SENSOR}.${cdt} ]; do tmp=tmp; done + [ "${avgdays}" != "noavg" ] && fan_average=$(bc <<< "scale=0; $(ROUNDHALVES $(bc <<< "scale=3; $(AVERAGETEMP ${SENSOR} ${avgdays} FanSpeed)/10"))*10/1") + echo -en "\r\033[K${idsCL[White]}${idsST[Bold]}${SENSOR} Host Sensors ${idsST[Reset]}${idsCL[White]}[${vHOSTiDRACIP}]" + [ "${SENSOR}" == "iDS-vMS-Host6" ] && cSENSOR="iDS-vMS-Host7" || cSENSOR=${SENSOR} + if [ -f ${PW_TMPFOLDER}/.lastfancheck/${cSENSOR}.gl ]; then + FSC="${idsCL[LightGreen]}${idsST[Bold]}" + elif [ -f ${PW_TMPFOLDER}/.lastfancheck/${cSENSOR}.set ]; then + FSC="${idsCL[LightGreen]}" + else + FSC="${idsCL[LightYellow]}" + fi + echo -en "${idsCL[LightCyan]} [FanSpeed=${FSC}$(cat ${PW_TMPFOLDER}/.fanspeed.${SENSOR}.${cdt})${idsST[Reset]}${idsCL[LightCyan]}'% " + if [ "${avgdays}" != "noavg" ]; then + echo -e "${idsCL[LightYellow]} AVG=${fan_average}'%${idsCL[LightCyan]}]${idsCL[Default]}" + else + echo -e "($(IDS_NUMBER_FORMAT ${RPM})'RPM)]${idsCL[Default]}" fi - else #host down - echo -e "\r\033[K${idsCL[LightRed]}${SENSOR} Host is down${idsCL[Default]}" - - # if [ ! -f ${PW_TMPFOLDER}/${SENSOR}.down ] || [ $(expr `date +%s` - $(stat -c %Y ${PW_TMPFOLDER}/${SENSOR}.down)) -ge 1800 ]; then - # SENDNOTICE "${vHOSTiDRACIP} ERROR" "${vHOSTNAME} Host is down" 1 - # echo "($(date +'%Y-%m-%d %H:%M:%S')) - ${vHOSTiDRACIP} - ${vHOSTNAME} Host is down" >> ${logtemp} - # touch ${PW_TMPFOLDER}/${EHOST}.down - # fi + else + echo -e "${idsCL[Default]}" fi - # fi - echo - fi - done + # if [ "${temptype}" != "fans" ]; then + DIVIDER . lightCyan 70 + echo -en "${idsCL[Yellow]}Pulling data for '${SENSOR}' ... " + + # if [ ! -f ${PW_TMPFOLDER}/${SENSOR}.down ] && [ "$(CHECK_HOST ${vHOSTIP})" != "false" ]; then + if [ ! -f ${PW_TMPFOLDER}/${SENSOR}.down ]; then + vHOST_TEMPNAMES=$(snmpwalk -v 1 -c public -t 2 ${vHOSTiDRACIP} .1.3.6.1.4.1.674.10892.5.4.700.20.1.8 -O vq | sed -e 's/"//g' | sed -e 's/ Temp//g') + IFS=$'\n' + read -rd '' -a vHOST_TEMPNAMES <<<"${vHOST_TEMPNAMES}" + unset IFS + echo -en "\r\033[K" + if [ ${#vHOST_TEMPNAMES[@]} -gt 1 ]; then + t=1 + for sensorname in "${vHOST_TEMPNAMES[@]}"; do + if [ "${temptype}" != "fans" ] || ([ "${temptype}" == "fans" ] && [[ "${sensorname}" = *"Exhaust"* ]]); then + temp_c=$(snmpwalk -v 1 -c public -t 2 ${vHOSTiDRACIP} .1.3.6.1.4.1.674.10892.5.4.700.20.1.6.1.${t} -O vq | sed -e 's/"//g') + temp_c=`echo "scale=1; ${temp_c}/10" | bc` + temp_warn=$(snmpwalk -v 1 -c public -t 2 ${vHOSTiDRACIP} .1.3.6.1.4.1.674.10892.5.4.700.20.1.11.1.${t} -O vq | sed -e 's/"//g') + temp_warn=`echo "scale=1; ${temp_warn}/10" | bc` + temp_crit=$(snmpwalk -v 1 -c public -t 2 ${vHOSTiDRACIP} .1.3.6.1.4.1.674.10892.5.4.700.20.1.10.1.${t} -O vq | sed -e 's/"//g') + temp_crit=`echo "scale=1; ${temp_crit}/10" | bc` + c=0; spc=''; spc1=`expr ${cw} - ${#sensorname} - 1`; until [ ${c} = ${spc1} ]; do spc="${spc} "; c=`expr ${c} + 1`; done + [ "${avgdays}" != "noavg" ] && echo -en "${idsCL[LightCyan]} ${sensorname}${spc}${idsCL[Default]}: ${idsCL[Yellow]}Calculating ${avgdays_disp} average ... " + reading=$(CHECKTEMPSENSOR ${SENSOR} ${temp_c} ${temp_warn} ${temp_crit} ${sensorname// /_} ${avgdays} ${temptype}) + [ "${avgdays}" != "noavg" ] && echo -en "\r\033[K" + echo -e "${idsCL[LightCyan]} ${sensorname}${spc}${idsCL[Default]}: ${reading}" + if [ "${temptype}" == "fans" ]; then + if [ -f ${PW_TMPFOLDER}/.lastfancheck/${cSENSOR}.gl ]; then + FSC="${idsCL[LightGreen]}" + elif [ -f ${PW_TMPFOLDER}/.lastfancheck/${cSENSOR}.set ]; then + FSC="${idsCL[Green]}" + else + FSC="${idsCL[LightYellow]}" + fi + echo -e " Golidlock Zone : ${idsCL[LightGreen]}${DEFAULT_ESXI_EXHAUST_MIN}'F${idsCL[Default]} +-${ESXI_FANSPEED_GL_ZONE}'F [ ${idsCL[Green]}${GL_LOW}${idsCL[Default]} <--> ${idsCL[LightYellow]}${GL_HIGH}${idsCL[Default]} ]" + echo -e " Last checked : ${idsCL[LightCyan]}$(date -r ${PW_TMPFOLDER}/.lastfancheck/${SENSOR} "+%m/%d @ %l:%M%p")${idsCL[Default]}" + echo -e " Last set : ${FSC}$(date -r ${PW_TMPFOLDER}/.lastfancheck/${SENSOR}.set "+%m/%d @ %l:%M%p")${idsCL[Default]}" + fi + fi + ((t++)) + done + else + echo -e "${idsCL[LightCyan]} ${vHOSTNAME}${spc}${idsCL[Default]}: No Data" + fi + + else #host down + echo -e "\r\033[K${idsCL[LightRed]}${SENSOR} Host is down${idsCL[Default]}" + + # if [ ! -f ${PW_TMPFOLDER}/${SENSOR}.down ] || [ $(expr `date +%s` - $(stat -c %Y ${PW_TMPFOLDER}/${SENSOR}.down)) -ge 1800 ]; then + # SENDNOTICE "${vHOSTiDRACIP} ERROR" "${vHOSTNAME} Host is down" 1 + # echo "($(date +'%Y-%m-%d %H:%M:%S')) - ${vHOSTiDRACIP} - ${vHOSTNAME} Host is down" >> ${logtemp} + # touch ${PW_TMPFOLDER}/${EHOST}.down + # fi + fi + # fi + echo + fi + done + fi rm -f ${PW_TMPFOLDER}/.fanspeed.* end=`date +%s`; runtime=$((end-start)); echo -e "runtime: ${runtime}s" [ "${PW_ACTION}" != "" ] && echo -e "${idsCL[Default]}"