#!/bin/bash # ---------------------------------------------------------------------------------- # Script for checking the temperature reported by the ambient temperature sensor, # and if deemed too high send the raw IPMI command to enable dynamic fan control. # # Requires: # ipmitool – apt-get install ipmitool # slacktee.sh – https://github.com/course-hero/slacktee # ---------------------------------------------------------------------------------- # IPMI SETTINGS: # Modify to suit your needs. # DEFAULT IP: 192.168.0.120 IPMIHOST=10.0.100.20 IPMIUSER=root IPMIPW=calvin IPMIEK=0000000000000000000000000000000000000000 # TEMPERATURE # Change this to the temperature in celcius you are comfortable with. # If the temperature goes above the set degrees it will send raw IPMI command to enable dynamic fan control MAXTEMP=27 # This variable sends a IPMI command to get the temperature, and outputs it as two digits. # Do not edit unless you know what you do. TEMP=$(ipmitool -I lanplus -H $IPMIHOST -U $IPMIUSER -P $IPMIPW -y $IPMIEK sdr type temperature |grep Ambient |grep degrees |grep -Po '\d{2}' | tail -1) if [[ $TEMP > $MAXTEMP ]]; then printf "Warning: Temperature is too high! Activating dynamic fan control! ($TEMP C)" | systemd-cat -t R710-IPMI-TEMP echo "Warning: Temperature is too high! Activating dynamic fan control! ($TEMP C)" | /usr/bin/slacktee.sh -t "R710-IPMI-TEMP [$(hostname)]" ipmitool -I lanplus -H $IPMIHOST -U $IPMIUSER -P $IPMIPW -y $IPMIEK raw 0x30 0x30 0x01 0x01 else # healthchecks.io curl -fsS --retry 3 https://hchk.io/XXX >/dev/null 2>&1 printf "Temperature is OK ($TEMP C)" | systemd-cat -t R710-IPMI-TEMP echo "Temperature is OK ($TEMP C)" fi