Sign inSign up

mrxianyu/fanctl

By mrxianyu

Updated 9 months ago

Image
0

422

mrxianyu/fanctl repository overview

iDRAC7 风扇控制器 (Go 语言版)

这是一个基于 Golang 重写的工具,移植自原本的 fan_control.sh 脚本。该工具用于自动控制 Dell 第 12 代 PowerEdge 服务器(如 T320, T420, T620 等)的风扇转速。

它根据进气口温度自动调节风扇,在保持服务器凉爽的同时尽可能降低噪音。项目包含一个现代化的 Web 仪表盘用于查看实时状态。

功能特点

  • 纯 Go 实现:单二进制文件,部署简单。

  • Web 仪表盘:内置美观的状态监控页面。

  • 安全机制:如果读取温度失败或出现错误,自动切换回 iDRAC 原生动态控制模式,防止过热。

  • 高度可配置:支持自定义风扇曲线、轮询间隔等。

环境要求

  1. Golang: 用于编译程序。

  2. ipmitool: 系统路径中必须包含此工具,程序依赖它与 iDRAC 通信。

安装与编译

  1. 确保 main.gostatic/index.html 都在正确的目录结构中:

    .
    ├── main.go
    └── static
        └── index.html
    
  2. 编译二进制文件:

    go build -o fancontrol main.go
    

    注意:HTML 资源文件会被自动打包进 exe/二进制文件中,编译后无需拷贝 static 文件夹。

使用方法

您可以通过 命令行参数 (Flags) 或 环境变量 (Environment Variables) 进行配置。

基础运行命令
./fancontrol -ip 192.168.1.100 -user root -password calvin
所有配置选项
参数 Flag环境变量默认值说明
-ipIDRAC_IP-必填. iDRAC 的 IP 地址。
-userIDRAC_USER-必填. iDRAC 用户名。
-passwordIDRAC_PASSWORD-必填. iDRAC 密码。
-intervalPOLL_INTERVAL30s检查温度的频率 (例如 10s, 1m)。
-sensorTEMP_SENSOR04h温度传感器的十六进制 ID。
-portWEB_PORT8080Web 仪表盘的端口。
-curveFAN_CURVE(见下文)自定义风扇转速曲线。
TEMP_OFFSETTEMP_OFFSETt420填写-128
自定义风扇曲线

默认曲线与原 Shell 脚本一致: 1-14:10,15-19:15,20-24:20,25-29:25,30-34:30

格式最低温-最高温:风扇转速百分比,多组规则用逗号分隔。

自定义示例

# 设置:10-20度转速10%,21-30度转速20%,31-35度转速40%
export FAN_CURVE="10-20:10,21-30:20,31-35:40"
./fancontrol

Web 仪表盘

程序启动后,打开浏览器访问: http://localhost:8080

界面会自动刷新,显示当前进气温度、风扇转速设定以及运行模式(手动/动态)。

Tag summary

Content type

Image

Digest

sha256:2e80682ec

Size

5 MB

Last updated

9 months ago

docker pull mrxianyu/fanctl