В продолжение статьи китайского энтузиаста, выложившего мануал по управлению оборотами через ipmi-tool.
Сделаем bash-скрипт, который будет регулировать обороты на основе температуры датчика "CPU 1"

Основываться будем на показаниях температуры "CPU1":

cpu_temp=`ipmitool -I lanplus -H $host -U $login -P $pass sensor get 'CPU1 Temp' | awk '{if (FNR == 5) print $4}'`

Команда "sensor get" стандартная для IPMI и должна работать на всех версиях.

Далее просто проверяем через условия:
if [ "$cpu_temp" -le "45" ]; then

new_speed='40'
fi

Где:
"40" - новое значение скорости вращения вентеляторов в процентах.
"-le" означает "меньше либо равно".
"45" - температура на датчике "CPU1"

И далее применяем новое значение скорости:
ipmitool -I lanplus -H $host -U $login -P $pass raw 0x2e 0x30 00 00 $new_speed

Команда изменит скорость вращения для ВСЕХ кулеров системы, включая процессорные.

Данный скрипт можно добавить в cron для запуска, например, 1 раз в минуту. Либо даже чаще.
Ограничений по количеству команд в единицу времени для IMPI я не нашел.

Теоретически, механизм можно улучшить, добавив различные настройки. В частности, если продуваемость корпуса позволяет, можно менять обороты только на процессорных кулерах.
Это может быть полезно, если сервер установлен в обычном доме\квартире, где немаловажен уровень шума.