Сделаем 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 я не нашел.
Теоретически, механизм можно улучшить, добавив различные настройки. В частности, если продуваемость корпуса позволяет, можно менять обороты только на процессорных кулерах.
Это может быть полезно, если сервер установлен в обычном доме\квартире, где немаловажен уровень шума.