dell_r720_ipmi_fanspeed_ctrl
#!/bin/bash
now="0x08"
setFanSpeed(){
if [ "$1"x != "$now"x ]
then
now=$1
#echo $now
ipmitool raw 0x30 0x30 0x02 0xff $now;
fi
}
getCpuTemp(){
vals=`sensors| grep Package|awk '{print $4}'| awk '{print gensub("°C","","g",$0)}'| awk '{print gensub("+","","g",$0)}'`;
tmp="0"
count=0
for val in $vals; do
tmp="${tmp}+(${val})"
count=`echo "${count}+1"|bc`
done
result=`echo "($tmp)/${count}" | bc`
echo $result
}
ipmitool raw 0x30 0x30 0x01 0x00;
ipmitool raw 0x30 0x30 0x02 0xff $now;
while true;
do
#temp_val=`ipmitool sensor reading "Temp" | cut -d "|" -f 2 | cut -d " " -f 2`;
temp_val=`getCpuTemp`
if [[ $temp_val < 40 ]]
then
setFanSpeed "0x08";
else
if [[ $temp_val > 65 ]]
then
setFanSpeed "0x64";
else
case $temp_val in
40)
setFanSpeed "0x09";
;;
41)
setFanSpeed "0x0a";
;;
42)
setFanSpeed "0x0d";
;;
43)
setFanSpeed "0x0e";
;;
44)
setFanSpeed "0x0f";
;;
45)
setFanSpeed "0x10";
;;
46)
setFanSpeed "0x11";
;;
47)
setFanSpeed "0x12";
;;
48)
setFanSpeed "0x13";
;;
49)
setFanSpeed "0x14";
;;
50)
setFanSpeed "0x15";
;;
51)
setFanSpeed "0x16";
;;
52)
setFanSpeed "0x17";
;;
53)
setFanSpeed "0x18";
;;
54)
setFanSpeed "0x19";
;;
55)
setFanSpeed "0x1a";
;;
56)
setFanSpeed "0x1b";
;;
57)
setFanSpeed "0x1c";
;;
58)
setFanSpeed "0x1d";
;;
59)
setFanSpeed "0x1e";
;;
60)
setFanSpeed "0x1f";
;;
61)
setFanSpeed "0x20";
;;
62)
setFanSpeed "0x21";
;;
63)
setFanSpeed "0x22";
;;
64)
setFanSpeed "0x23";
;;
65)
setFanSpeed "0x24";
;;
*)
setFanSpeed "0x30";
esac
fi
fi
#echo $temp_val $now;
sleep 1;
doneLast updated
Was this helpful?