팬 제어(1) 및 ipmi

팬 제어(1) 및 ipmi

내 서버는 IPMI를 지원하므로 다음과 같은 스크립트를 실행할 수 있습니다.

fanspeed() {
    # 0 C => 10, 55 C => 10, 65 C => 100
    sensors -j |
        jq '[.[]["temp1"]["temp1_input"]] |                                                   
              (max-55)*(100/(65-55)) |                                                        
               if . < 10 then 10 else if . > 100 then 100 else .|floor end end';
}

autofan() {
    setspeed() {
        ipmitool -I lanplus -H drac -U root -P password raw 0x30 0x30 0x02 0xff $@
    }
    while true; do
        fanspeed=`fanspeed`
        printf "$fanspeed "$(setspeed $fanspeed)
        sleep 1
    done
}

CPU 온도가 55C를 초과하는 경우 팬 속도를 높여 CPU 온도를 65C 미만으로 유지하십시오.

하지만 그것은 직업처럼 들리네요 fancontrol. fancontrolIPMI를 사용하여 팬을 제어 할 수 있습니까 ?

답변1

매분 crontab의 내 ash 스크립트는 다음과 같습니다. (TODO가 어딘가에 기록됨)

#!/bin/ash
t='ipmitool  -I lanplus -H drac -U root -P password '
f=' raw 0x30 0x30 0x02 0xff '
$t  raw 0x30 0x30 0x01 0x00 # stop auto fan
TEMP=$(${t} sdr type temperature |tee /dev/tty |awk '{print $(NF-2)}' |sort -n |tail -1)
echo max TEMP=$TEMP
[ $TEMP -gt 65 ] && $t $f 0x2a || ( [ $TEMP -gt 55 ] && $t $f 0x1f ) || $t $f 0x0f

즉, 팬이 65개 이상인 경우 0x2a, 팬이 55개 이상인 경우 0x1f, 그렇지 않으면 0x0f입니다.

관련 정보