Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- set -x #for debugging
- #Stops script on errors, unset variables or failing pipeline
- set -euo pipefail
- # ensure manual controls are available
- ipmitool -I open raw 0x30 0x30 0x01 0x00
- #variables definitions
- LOG=/var/log/ipmi.log
- #functions
- ##Set Fan Speed, accept one argument to set speed
- FanSpeed()
- {
- ipmitool -I open raw 0x30 0x30 0x02 $1
- }
- ##Get Temp values
- GetValues()
- {
- #Get motherboard, cpu1 and cpu2 temperature
- OUTPUT=$(/usr/bin/ipmitool -I open sdr type temperature |egrep '0Eh|04h' | awk -F'|' '{ print $5 $9 $13 }' | awk '{ print $1 }'|tr '\n' "+" |sed s/+$//g)
- #motherboard+cpu1+cpu2 temp
- LOG_TOTAL=$(($OUTPUT))
- #Get Fan1 speed
- FANS=$(ipmitool -I open sensor reading "Sys Fan1" | awk '{ print $3 }')
- }
- GetValues
- echo "$(date "+%Y-%m-%d %H:%M:%S")" "LOG_TOTAL : $LOG_TOTAL"
- while :
- do
- if [ "$LOG_TOTAL" -le 60 ] && [ $FANS -le 2520 ]; then
- echo "$(date "+%Y-%m-%d %H:%M:%S")" "FAN speed : 2520, <= 2520 don't do anything" | tee -a "$LOG"
- elif [ "$LOG_TOTAL" -le 60 ] && [ $FANS -ne 2520 ]; then
- FanSpeed "0xff 0x05" #Set speed to 2520
- echo "$(date "+%Y-%m-%d %H:%M:%S")" "Set speed to 2520" | tee -a "$LOG"
- elif [ "$LOG_TOTAL" -gt 60 ] && [ "$LOG_TOTAL" -le 65 ] && [ $FANS -ne 2880 ]; then
- FanSpeed "0xff 0x07" #Set speed to 2880
- echo "$(date "+%Y-%m-%d %H:%M:%S")" "Set speed to 2880" | tee -a "$LOG"
- elif [ "$LOG_TOTAL" -gt 65 ] && [ "$LOG_TOTAL" -le 75 ] && [ $FANS -ne 2040 ]; then
- FanSpeed "0xff 0x0A" #Set speed to 3240
- echo "$(date "+%Y-%m-%d %H:%M:%S")" "Set speed to 3240" | tee -a "$LOG"
- elif [ "$LOG_TOTAL" -gt 75 ] && [ "$LOG_TOTAL" -le 85 ] && [ $FANS -ne 7320 ]; then
- FanSpeed "0xff 0x23" #Set speed to 7320
- echo "$(date "+%Y-%m-%d %H:%M:%S")" "Set speed to 7320" | tee -a "$LOG"
- elif [ "$LOG_TOTAL" -gt 90 ] && [ $FANS -ne 10200 ]; then
- FanSpeed "0xff 0x32" #Set speed to 10200
- echo "$(date "+%Y-%m-%d %H:%M:%S")" "Set speed to 10200" | tee -a "$LOG"
- fi
- sleep 30s
- GetValues
- echo "$(date "+%Y-%m-%d %H:%M:%S")" "$LOG_TOTAL" >> "$LOG"
- echo "$(date "+%Y-%m-%d %H:%M:%S")" "FAN speed : $FANS" | tee -a "$LOG"
- done
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement