这是一个基于 Golang 重写的工具,移植自原本的 fan_control.sh 脚本。该工具用于自动控制 Dell 第 12 代 PowerEdge 服务器(如 T320, T420, T620 等)的风扇转速。
它根据进气口温度自动调节风扇,在保持服务器凉爽的同时尽可能降低噪音。项目包含一个现代化的 Web 仪表盘用于查看实时状态。
纯 Go 实现:单二进制文件,部署简单。
Web 仪表盘:内置美观的状态监控页面。
安全机制:如果读取温度失败或出现错误,自动切换回 iDRAC 原生动态控制模式,防止过热。
高度可配置:支持自定义风扇曲线、轮询间隔等。
Golang: 用于编译程序。
ipmitool: 系统路径中必须包含此工具,程序依赖它与 iDRAC 通信。
确保 main.go 和 static/index.html 都在正确的目录结构中:
.
├── main.go
└── static
└── index.html
编译二进制文件:
go build -o fancontrol main.go
注意:HTML 资源文件会被自动打包进 exe/二进制文件中,编译后无需拷贝 static 文件夹。
您可以通过 命令行参数 (Flags) 或 环境变量 (Environment Variables) 进行配置。
./fancontrol -ip 192.168.1.100 -user root -password calvin
| 参数 Flag | 环境变量 | 默认值 | 说明 |
|---|---|---|---|
-ip | IDRAC_IP | - | 必填. iDRAC 的 IP 地址。 |
-user | IDRAC_USER | - | 必填. iDRAC 用户名。 |
-password | IDRAC_PASSWORD | - | 必填. iDRAC 密码。 |
-interval | POLL_INTERVAL | 30s | 检查温度的频率 (例如 10s, 1m)。 |
-sensor | TEMP_SENSOR | 04h | 温度传感器的十六进制 ID。 |
-port | WEB_PORT | 8080 | Web 仪表盘的端口。 |
-curve | FAN_CURVE | (见下文) | 自定义风扇转速曲线。 |
TEMP_OFFSET | TEMP_OFFSET | t420填写-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
程序启动后,打开浏览器访问: http://localhost:8080
界面会自动刷新,显示当前进气温度、风扇转速设定以及运行模式(手动/动态)。
Content type
Image
Digest
sha256:2e80682ec…
Size
5 MB
Last updated
9 months ago
docker pull mrxianyu/fanctl