ipmitool — IPMI 平台管理工具详细指南 ← 返回

ipmitool — IPMI 平台管理工具详细指南

1. 概述

1.1 什么是 IPMI

IPMI(Intelligent Platform Management Interface,智能平台管理接口)是一种开放标准的硬件管理接口规范,允许系统管理员独立于 CPU、BIOS 和操作系统之外对服务器进行监控、日志记录、恢复和资产管理。其核心部件是BMC(Baseboard Management Controller,基板管理控制器),负责自主传感器监控和事件日志记录。

1.2 什么是 ipmitool

ipmitool 是一个命令行实用程序,用于管理和配置支持 IPMI 的设备。它提供了简单易用的命令行界面来与 BMC 交互,可以:

1.3 版本信息

项目信息
**当前版本**1.8.16(2015-11-22)
**本地 RPM 版本**1.8.13-8.el7_1(CentOS/RHEL 7)
**许可证**BSD License(Sun Microsystems, Inc.)
**原作者**Duncan Laurie(Sun Microsystems)
**主页**http://ipmitool.sourceforge.net

1.4 支持的平台接口


2. 目录结构

ipmitool/
├── IPMItool/
│   └── ipmitool-1.8.16/               # ipmitool 1.8.16 完整源码
│       ├── README                      # 项目概述、接口说明、使用指南
│       ├── COPYING                     # BSD 许可证
│       ├── AUTHORS                     # 作者列表
│       ├── ChangeLog                   # 版本变更日志
│       ├── configure                   # 配置脚本
│       ├── configure.ac                # Autoconf 配置源文件
│       ├── Makefile.am / Makefile.in   # 构建系统文件
│       ├── ipmitool.spec               # RPM 打包规格文件
│       ├── lib/                        # ★ 核心源码(C 语言)
│       │   ├── ipmi_main.c             # 程序入口点、命令行参数解析
│       │   ├── ipmi_chassis.c          # 机箱电源控制 (on/off/cycle/reset/status)
│       │   ├── ipmi_sdr.c              # 传感器数据存储库 (sdr)
│       │   ├── ipmi_sel.c              # 系统事件日志 (sel)
│       │   ├── ipmi_fru.c              # 现场可更换单元库存 (fru)
│       │   ├── ipmi_lanp.c             # LAN 通道配置 (lan print/set)
│       │   ├── ipmi_sol.c              # IPMI v2.0 Serial-over-LAN
│       │   ├── ipmi_isol.c             # Intel IPMI v1.5 Serial-over-LAN
│       │   ├── ipmi_tsol.c             # Tyan IPMI v1.5 Serial-over-LAN
│       │   ├── ipmi_sensor.c           # 详细传感器信息
│       │   ├── ipmi_mc.c               # BMC 管理和全局控制
│       │   ├── ipmi_channel.c          # 通道信息与配置
│       │   ├── ipmi_user.c             # BMC 用户管理
│       │   ├── ipmi_event.c            # 事件发送
│       │   ├── ipmi_pef.c              # 平台事件过滤
│       │   ├── ipmi_raw.c              # 原始 IPMI 命令
│       │   ├── ipmi_dcmi.c             # 数据中心管理接口
│       │   ├── ipmi_picmg.c            # PICMG/ATCA 扩展
│       │   ├── ipmi_ekanalyzer.c       # FRU E-Keying 分析器
│       │   ├── ipmi_firewall.c         # 固件防火墙
│       │   ├── ipmi_hpmfwupg.c         # PICMG HPM.1 固件升级
│       │   ├── ipmi_fwum.c             # Kontron OEM 固件更新管理器
│       │   ├── ipmi_ime.c              # Intel ME 固件升级
│       │   ├── ipmi_gendev.c           # 通用设备读写
│       │   ├── ipmi_delloem.c          # Dell OEM 扩展
│       │   ├── ipmi_kontronoem.c       # Kontron OEM 扩展
│       │   ├── ipmi_sunoem.c           # Sun OEM 扩展
│       │   ├── ipmi_oem.c              # OEM 命令调度
│       │   ├── ipmi_session.c          # 会话管理
│       │   ├── ipmi_strings.c          # 字符串处理
│       │   ├── ipmi_entity.c           # 实体 ID 映射
│       │   ├── ipmi_vita.c             # VITA 46.11 扩展
│       │   ├── helper.c                # 通用辅助函数
│       │   └── dimm_spd.c              # 远程 I2C SPD 读取 (spd)
│       ├── include/ipmitool/           # 头文件(函数声明与数据结构)
│       ├── src/                        # 接口插件(open/lan/lanplus/imb)
│       ├── doc/                        # 文档
│       │   ├── ipmitool.1              # ★ Man page(完整命令参考)
│       │   └── ipmievd.8               # ipmievd 守护进程 man page
│       ├── contrib/                    # 辅助脚本
│       │   ├── README                  # RRDtool 图表生成说明
│       │   ├── bmclanconf              # BMC LAN 配置向导脚本
│       │   ├── bmc-snmp-proxy          # BMC SNMP 代理
│       │   ├── collect_data.sh         # 传感器数据采集脚本
│       │   ├── create_rrds.sh          # RRDtool 数据库创建
│       │   ├── create_webpage.sh       # 传感器图表网页生成
│       │   ├── create_webpage_compact.sh # 紧凑版图表网页
│       │   ├── log_bmc.sh              # BMC 日志脚本
│       │   ├── exchange-bmc-os-info.*  # BMC-OS 信息交换(systemd)
│       │   ├── ipmi.init.basic         # 基础 IPMI 初始化脚本
│       │   ├── ipmi.init.redhat        # RHEL IPMI 初始化脚本
│       │   ├── ipmievd.init.debian     # Debian ipmievd 启动脚本
│       │   ├── ipmievd.init.redhat     # RHEL ipmievd 启动脚本
│       │   ├── ipmievd.init.suse       # SUSE ipmievd 启动脚本
│       │   └── oem_ibm_sel_map         # IBM OEM SEL 事件映射
│       └── control/                    # 打包控制文件
│           ├── ipmitool.spec.in         # RPM spec 模板
│           ├── pkginfo.in / prototype.in / rpmmacros.in
│           └── rpmrc
├── 7.2 ipmitool/                       # ★ CentOS/RHEL 7 预编译 RPM 包
│   ├── ipmitool-1.8.13-8.el7_1.x86_64.rpm
│   └── OpenIPMI-modalias-2.0.19-11.el7.x86_64.rpm
├── IPMItool命令大全.txt                 # ★ IPMI 风扇控速命令速查表
├── RV Script Generator.txt             # ★ FIO + IPMI 风扇控速脚本生成器(Python GUI)
├── ipmitool.docx                       # ipmitool 使用说明文档
├── 安装ipmitool.docx                    # ipmitool 安装指南文档
├── HP 控速 脚本问题.docx                # HP 服务器风扇控速脚本问题
├── 风扇测速.docx                        # 风扇测速方法说明
├── trident问题汇总.pdf                  # Trident 设备相关问题汇总
└── 新增資料夾/                          # 参考截图
    ├── IMG_3449.JPG ~ IMG_3861.JPG
    └── WYBR1844.jpg

3. 下载路径

3.1 官方源码下载

IPMITool 官方发布地址为 SourceForge:

# 下载最新版本 (替换版本号)
wget https://sourceforge.net/projects/ipmitool/files/ipmitool/1.8.18/ipmitool-1.8.18.tar.gz

# 历史版本示例
wget https://sourceforge.net/projects/ipmitool/files/ipmitool/1.8.16/ipmitool-1.8.16.tar.gz
wget https://sourceforge.net/projects/ipmitool/files/ipmitool/1.8.13/ipmitool-1.8.13.tar.gz

3.2 Git 仓库

# 官方 Git (SourceForge)
git clone https://git.code.sf.net/p/ipmitool/source ipmitool-source

# GitHub 镜像
git clone https://github.com/ipmitool/ipmitool.git

3.3 YUM / DNF 安装 (RHEL/CentOS/Fedora)

# EPEL 仓库中的 ipmitool
yum install ipmitool -y          # CentOS/RHEL 7
dnf install ipmitool -y          # CentOS/RHEL 8+ / Fedora

3.4 APT 安装 (Debian/Ubuntu)

apt-get install ipmitool -y

3.5 本地 RPM 包📁 本地下载

提示:点击按钮将打开网络文件夹,点击即可下载

本目录提供 CentOS/RHEL 7 的预编译 RPM 包,可直接使用:

文件适用系统版本
ipmitool-1.8.13-8.el7_1.x86_64.rpmRHEL/CentOS 7.x (EL7)1.8.13
OpenIPMI-modalias-2.0.19-11.el7.x86_64.rpmRHEL/CentOS 7.x (EL7)2.0.19 (依赖)

3.6 本地源码包

文件版本格式
ipmitool-1.8.16.tar.gz1.8.16gzip

注意: 本目录包含 ipmitool-1.8.16 完整源码(IPMItool/ipmitool-1.8.16/)。


4. 安装说明

4.1 RPM 安装(CentOS/RHEL 7)

步骤 1 — 安装依赖包:

cd /path/to/ipmitool/7.2\ ipmitool/

# 先安装 OpenIPMI 内核模块别名(依赖)
rpm -ivh OpenIPMI-modalias-2.0.19-11.el7.x86_64.rpm

# 再安装 ipmitool
rpm -ivh ipmitool-1.8.13-8.el7_1.x86_64.rpm

或使用 yum 自动解决依赖:

yum localinstall ipmitool-1.8.13-8.el7_1.x86_64.rpm

4.2 源码编译安装

步骤 1 — 安装编译依赖:

# CentOS/RHEL
yum install gcc make autoconf automake libtool \
    openssl-devel readline-devel ncurses-devel

# Debian/Ubuntu
apt-get install build-essential autoconf automake libtool \
    libssl-dev libreadline-dev libncurses5-dev

步骤 2 — 配置与编译:

cd IPMItool/ipmitool-1.8.16

# 配置(使用默认选项)
./configure

# 配置(启用所有功能)
./configure --enable-intf-lan --enable-intf-lanplus \
    --enable-intf-open --enable-intf-imb \
    --enable-intf-usb --enable-intf-serial

# 编译
make -j$(nproc)

# 安装(需要 root 权限)
make install

configure 常用选项:

选项说明
`--prefix=/usr`安装路径前缀
`--enable-intf-lan`启用 IPMI v1.5 LAN 接口
`--enable-intf-lanplus`启用 IPMI v2.0 RMCP+ 接口(需要 OpenSSL)
`--enable-intf-open`启用 Linux OpenIPMI 接口(默认)
`--enable-intf-imb`启用 Intel IMB 接口
`--enable-intf-usb`启用 USB 接口
`--enable-intf-serial`启用串口接口
`--enable-ipmishell`启用交互式 IPMI shell
`--enable-ipmievd`启用 ipmievd 守护进程

4.3 内核模块配置

ipmitool 本地访问需要加载 OpenIPMI 内核驱动:

# 加载 IPMI 内核模块
modprobe ipmi_msghandler     # IPMI 消息处理器
modprobe ipmi_devintf         # IPMI 字符设备接口
modprobe ipmi_si              # 通用 IPMI 系统接口驱动

# 检查模块是否加载成功
lsmod | grep ipmi

# 设置开机自动加载
echo "ipmi_msghandler" >> /etc/modules-load.d/ipmi.conf
echo "ipmi_devintf" >> /etc/modules-load.d/ipmi.conf
echo "ipmi_si" >> /etc/modules-load.d/ipmi.conf

设备节点检查:

ls -la /dev/ipmi0
# crw------- 1 root root 253, 0 ... /dev/ipmi0

# 如果设备不存在,查看内核消息
dmesg | grep -i ipmi

配置设备权限(允许非 root 用户使用):

# 创建 udev 规则
echo 'KERNEL=="ipmi0", MODE="0660", GROUP="ipmi"' > /etc/udev/rules.d/99-ipmi.rules
udevadm trigger

4.4 验证安装

# 查看版本
ipmitool -V

# 查看 BMC 信息(本地)
ipmitool mc info

# 查看帮助
ipmitool -h

输出示例:

Device Information
Device ID                 : 32
Device Revision           : 1
Firmware Revision         : 1.25
IPMI Version              : 2.0
Manufacturer ID           : 47488
Manufacturer Name         : Unknown
Product ID                : 1231 (0x04cf)
Device Available          : yes
Provides Device SDRs      : yes

5. 命令行选项

5.1 通用选项

ipmitool [<options>] <command> [<sub-commands and sub-options>]
选项参数说明
`-h`显示帮助信息
`-V`显示版本信息
`-v`详细输出(可重复使用,最多5次)
`-c`CSV(逗号分隔)格式输出
`-I```选择 IPMI 接口(见第6章)
`-H``
`
远程 BMC IP 地址或主机名
`-p```远程 RMCP UDP 端口(默认 623)
`-U```远程会话用户名(默认 NULL)
`-P```远程会话密码(不推荐命令行指定)
`-f```从文件读取密码
`-a`交互式提示输入密码
`-E`从环境变量 `IPMI_PASSWORD` 读取密码
`-L```会话权限级别:CALLBACK / USER / OPERATOR / ADMINISTRATOR(默认 ADMINISTRATOR)
`-A```IPMI v1.5 认证类型:NONE / PASSWORD / MD2 / MD5 / OEM
`-C```IPMI v2.0 加密套件(默认 3)
`-k```IPMI v2.0 Kg 密钥(ASCII)
`-y```IPMI v2.0 Kg 密钥(十六进制)
`-K`从环境变量 `IPMI_KGKEY` 读取 Kg 密钥
`-Y`交互式提示输入 Kg 密钥

5.2 高级选项

选项参数说明
`-d```指定 /dev/ipmiN 设备号(默认 0),用于多节点系统
`-l```设置目标 LUN(逻辑单元号)
`-m```设置本地 IPMB 地址(默认 0x20)
`-t```桥接请求到目标地址
`-b```设置桥接目标通道
`-B```设置桥接传输通道(双桥接)
`-T``
`
设置桥接传输地址(双桥接)
`-S```使用本地 SDR 缓存文件(显著提升性能)
`-O```SEL OEM 事件描述文件
`-o```选择 OEM 类型(`-o list` 查看可用类型)
`-N```LAN/LAN+ 消息重传间隔秒数(默认 lan=2, lanplus=1)
`-R```LAN/LAN+ 重试次数(默认 4)
`-e```SOL 会话转义字符(默认 `~`)

5.3 密码安全建议

优先级(从高到低):
1. -a    交互式输入(不会被进程列表暴露)
2. -f    从受保护的文件读取
3. -E    从环境变量读取(推荐脚本使用)
4. -P    命令行指定(不安全,进程列表中可见)

6. 接口类型

6.1 open — 本地系统接口(默认)

通过 Linux 内核驱动 /dev/ipmi0 直接访问本地 BMC。这是默认接口,不需要网络配置。

ipmitool mc info
# 等价于
ipmitool -I open mc info

适用场景: 本地服务器管理,无需网络配置,速度最快。

6.2 lan — IPMI v1.5 LAN 接口

通过 UDP 623 端口远程访问 BMC,使用 RMCP 协议。认证信息以明文传输。

ipmitool -I lan -H 192.168.1.100 -U admin -P admin mc info

适用场景: 旧版 BMC 或不支持 IPMI v2.0 的设备。

安全警告: 密码明文传输,仅在可信网络中使用。

6.3 lanplus — IPMI v2.0 RMCP+ LAN 接口(推荐)

通过加密的 RMCP+ 协议远程访问 BMC,支持认证、完整性和加密。

ipmitool -I lanplus -H 192.168.1.100 -U admin -P password mc info

# 指定加密套件(3 = RAKP-HMAC-SHA1 + AES-CBC-128)
ipmitool -I lanplus -H 192.168.1.100 -U admin -P password -C 3 mc info

适用场景: 远程服务器管理,推荐用于所有支持 IPMI v2.0 的设备。

6.4 接口对比

特性openlanlanplus
访问方式本地 `/dev/ipmi0`远程 UDP 623远程 UDP 623
IPMI 版本v1.5v2.0
加密不适用无(明文)AES-CBC-128
认证驱动级别明文密码RAKP-HMAC-SHA1
速度最快较快较快
安全性需 root 权限
推荐场景本地管理隔离管理网络通用远程管理

7. 命令详解

7.1 mc / bmc — BMC 管理与状态

# 查看 BMC 信息
ipmitool mc info

# BMC 自检
ipmitool mc selftest

# 查看 BMC 全局使能状态
ipmitool mc getsysinfo

# 重启 BMC(冷复位)
ipmitool mc reset cold

# 热复位 BMC
ipmitool mc reset warm

# 查看 BMC 看门狗
ipmitool mc watchdog

# 关闭 BMC 看门狗
ipmitool mc watchdog off

输出示例:

Device Information
Device ID                 : 32
Device Revision           : 1
Firmware Revision         : 1.25
IPMI Version              : 2.0
Manufacturer ID           : 47488
Manufacturer Name         : Unknown
Product ID                : 1231 (0x04cf)
Device Available          : yes
Provides Device SDRs      : yes
Additional Device Support :
    Sensor Device
    SDR Repository Device
    SEL Device
    FRU Inventory Device
    Chassis Device

7.2 chassis — 机箱电源管理

电源控制

# 查看机箱状态
ipmitool chassis status

# 开机
ipmitool chassis power on

# 关机
ipmitool chassis power off

# 重启(先关后开)
ipmitool chassis power cycle

# 硬复位
ipmitool chassis power reset

# 软关机(通过操作系统)
ipmitool chassis power soft

# 诊断中断
ipmitool chassis power diag

机箱功能

# 查看电源状态
ipmitool chassis status

# 查看开机策略(断电恢复行为)
ipmitool chassis policy list

# 设置断电后自动开机
ipmitool chassis policy always-on

# 设置断电后恢复之前状态
ipmitool chassis policy previous

# 设置断电后保持关机
ipmitool chassis policy always-off

# 查看上次重启原因
ipmitool chassis restart_cause

# 查看累计开机时间
ipmitool chassis poh

# 设置启动设备
ipmitool chassis bootdev pxe     # PXE 网络启动
ipmitool chassis bootdev disk    # 硬盘启动
ipmitool chassis bootdev cdrom   # 光驱启动
ipmitool chassis bootdev bios    # BIOS 设置

# 设置启动设备(带持久选项)
ipmitool chassis bootdev pxe options=persistent

# UID 指示灯(定位灯)
ipmitool chassis identify        # 闪烁 15 秒(默认)
ipmitool chassis identify 60     # 闪烁 60 秒
ipmitool chassis identify 0      # 关闭
ipmitool chassis identify force  # 常亮

7.3 sdr — 传感器数据存储库

# 列出所有传感器(简表)
ipmitool sdr list

# 列出所有传感器(详细信息)
ipmitool sdr elist

# 查看特定类型传感器
ipmitool sdr type list                     # 查看可用类型
ipmitool sdr type Temperature              # 温度传感器
ipmitool sdr type "Fan"                    # 风扇传感器
ipmitool sdr type "Power Supply"           # 电源传感器

# 查看传感器信息
ipmitool sdr info

# 导出 SDR 缓存(用于远程系统加速)
ipmitool sdr dump sdr.cache

# 使用 SDR 缓存
ipmitool -S sdr.cache sdr list

# 查看实体信息
ipmitool sdr entity all
ipmitool sdr entity 7    # 7 = 处理器实体

常用过滤:

# 查看风扇转速
ipmitool sdr | grep RPM

# 查看风扇 Duty
ipmitool sdr | grep Duty

# 查看温度
ipmitool sdr | grep degrees

# 查看电压
ipmitool sdr | grep Volts

# 查看电源
ipmitool sdr | grep PSU

7.4 sensor — 详细传感器读数

# 列出所有传感器详细数据
ipmitool sensor list

# 获取特定传感器
ipmitool sensor get "CPU0_Temp"
ipmitool sensor get "FAN1"

# 设置传感器阈值(需要知道传感器名称)
ipmitool sensor thresh "CPU0_Temp" upper 80.0
ipmitool sensor thresh "CPU0_Temp" lower 10.0

7.5 sel — 系统事件日志

# 查看 SEL 信息
ipmitool sel info

# 列出所有 SEL 事件
ipmitool sel list

# 列出所有 SEL 事件(扩展格式)
ipmitool sel elist

# 查看最近 10 条事件
ipmitool sel list last 10

# 按时间顺序排列
ipmitool sel list first 20

# 清除 SEL
ipmitool sel clear

# 查看 SEL 时间
ipmitool sel time get

# 设置 SEL 时间(与系统同步)
ipmitool sel time set "$(date +'%m/%d/%Y %H:%M:%S')"

# 保存 SEL 到文件
ipmitool sel save sel_backup.txt

7.6 fru — 现场可更换单元库存

# 查看所有 FRU 信息
ipmitool fru print

# 查看特定 FRU 设备
ipmitool fru print 0       # 主板 FRU

# 列出 FRU 清单
ipmitool fru list

# 读取 FRU 原始数据
ipmitool fru read 0 fru_data.bin

# 写入 FRU 数据
ipmitool fru write 0 fru_data.bin

7.7 lan — LAN 通道配置

# 查看当前 LAN 信息(通道1通常是第一个LAN通道)
ipmitool lan print 1

# 查看 LAN 统计信息
ipmitool lan stats get 1

# 设置静态 IP
ipmitool lan set 1 ipsrc static
ipmitool lan set 1 ipaddr 192.168.1.100
ipmitool lan set 1 netmask 255.255.255.0
ipmitool lan set 1 defgw ipaddr 192.168.1.1

# 设置 DHCP
ipmitool lan set 1 ipsrc dhcp

# 设置 BIOS 指定
ipmitool lan set 1 ipsrc bios

# 设置 VLAN
ipmitool lan set 1 vlan id 100
ipmitool lan set 1 vlan on

# 设置认证类型
ipmitool lan set 1 auth USER MD5,PASSWORD

# 查看加密套件
ipmitool lan set 1 cipher_privs

# 设置 SNMP 社区字符串
ipmitool lan set 1 snmp COMMUNITY

7.8 user — BMC 用户管理

# 列出用户
ipmitool user list 1         # 通道 1

# 查看用户详细信息
ipmitool user list 1 2       # 通道 1,用户 ID 2

# 设置用户名
ipmitool user set name 2 newuser

# 设置密码
ipmitool user set password 2 newpassword

# 启用/禁用用户
ipmitool user enable 2
ipmitool user disable 2

# 设置用户权限
ipmitool user priv 2 ADMINISTRATOR 1    # 用户2,通道1,管理员权限

# 测试用户(验证凭据)
ipmitool user test 2 16 password

权限级别:

级别说明
CALLBACK1最低权限
USER2基本只读
OPERATOR3可执行控制操作
ADMINISTRATOR4完全控制
OEM5厂商自定义

7.9 channel — 通道管理

# 查看通道信息
ipmitool channel info 1

# 查看认证能力
ipmitool channel authcap 1 4    # 通道1,管理员级别

# 查看用户访问权限
ipmitool channel getaccess 1 2  # 通道1,用户2

# 设置用户访问权限
ipmitool channel setaccess 1 2 callin=on ipmi=on link=on privilege=4

# 查看加密套件
ipmitool channel getciphers ipmi 1
ipmitool channel getciphers sol 1

7.10 sol — Serial-over-LAN(IPMI v2.0)

# 查看 SOL 信息
ipmitool sol info 1

# 设置 SOL 参数
ipmitool sol set enabled true 1
ipmitool sol set baud-rate 115.2 1

# 激活 SOL 会话(进入串口控制台)
ipmitool -I lanplus -H 192.168.1.100 -U admin -P password sol activate

# 停用 SOL
ipmitool sol deactivate

7.11 raw — 原始 IPMI 命令

# 基本格式
ipmitool raw <netfn> <cmd> [data...]

# 示例:获取设备 ID(netfn=6, cmd=1)
ipmitool raw 6 1

# 示例:chassis status(netfn=0, cmd=1)
ipmitool raw 0 1

# 风扇控制(详见第8章)
ipmitool raw 0x30 0xf6 0x01 100 100 0x03

# 带超时和重试的 raw 命令
ipmitool raw -N 5 -R 3 0x30 0xf6 0x01 100 100 0x03

7.12 event — 事件发送

# 查看可用事件类型
ipmitool event help

# 发送测试事件
ipmitool event 1    # 温度传感器 — Upper Critical — Going High
ipmitool event 2    # 电压传感器 — Lower Critical — Going Low
ipmitool event 3    # 内存 — Correctable ECC

# 发送到远程 BMC
ipmitool -I lanplus -H 192.168.1.100 -U admin -P pass event 3

7.13 pef — 平台事件过滤

# 查看 PEF 信息
ipmitool pef info

# 列出 PEF 策略
ipmitool pef list

# 设置 PEF 控制
ipmitool pef control

7.14 dcmi — 数据中心管理接口

# 查看 DCMI 功能
ipmitool dcmi discover

# 读取功耗
ipmitool dcmi power reading

# 设置功耗上限
ipmitool dcmi power set_limit action=Activate limit=500

# 查看温度读数
ipmitool dcmi temperature reading

# 获取资产标签
ipmitool dcmi get asset_tag

7.15 shell — 交互式 IPMI Shell

# 启动交互式 shell
ipmitool shell

# 或指定接口
ipmitool -I open shell

# shell 内部命令示例
ipmitool> chassis status
System Power         : off
Power Overload       : false

ipmitool> sensor list
CPU0_Temp          | 45.000     | degrees C  | ok

ipmitool> sel list
  1 | 05/27/2026 | 10:00:00 | System Event | OS Boot | Asserted

ipmitool> exit

7.16 exec — 脚本化命令执行

# 创建命令脚本
cat > ipmi_setup.scr << 'EOF'
lan set 1 ipsrc static
lan set 1 ipaddr 10.1.1.10
lan set 1 netmask 255.255.255.0
lan set 1 defgw ipaddr 10.1.1.254
EOF

# 执行脚本
ipmitool -I open exec ipmi_setup.scr

7.17 set — 运行时变量设置

在 shell 和 exec 模式中使用:

set hostname sf-v20z-1      # 设置主机名
set username admin           # 设置用户名
set password password        # 设置密码
set privlvl ADMINISTRATOR    # 设置权限级别
set authtype MD5             # 设置认证类型
set localaddr 0x20           # 设置本地 IPMB 地址
set targetaddr 0x7a          # 设置目标地址
set port 623                 # 设置 RMCP 端口
set csv enabled              # 启用 CSV 输出
set verbose on               # 启用详细输出

7.18 OEM 扩展命令

Dell OEM:

ipmitool delloem help
ipmitool delloem mac         # 查看 MAC 地址
ipmitool delloem lan         # LAN 配置
ipmitool delloem powermonitor # 功耗监控

Kontron OEM:

ipmitool kontronoem info      # 查看 OEM 信息

Sun OEM:

ipmitool sunoem help

7.19 其他专用命令

# SPD 信息读取(I2C)
ipmitool spd 0xa0

# FRU E-Keying 分析器
ipmitool ekanalyzer ...

# 固件防火墙
ipmitool firewall info

# HPM 固件升级(PICMG HPM.1)
ipmitool hpm check
ipmitool hpm upgrade firmware.hpm

# Intel ME 固件
ipmitool ime help

# Intel IPMI v1.5 SOL
ipmitool isol ...

# Tyan IPMI v1.5 SOL
ipmitool tsol ...

8. 风扇控制

8.1 读取风扇状态

# 查看所有风扇当前转速
ipmitool sdr | grep RPM

# 查看各风扇 Duty Cycle
ipmitool sdr | grep Duty

# 详细传感器信息
ipmitool sensor list | grep -i fan

8.2 f6 版本 — Seaking / Machamp / Steelix

代码格式:0x30 0xf6 [fan_num] [low_speed] [high_speed] [hysteresis]

# 参数说明
# [fan_num] : 0x01-0x08(风扇编号,需要确认具体设备对应关系)
# [low_speed] : 最低转速(十进制百分比,如 40 表示 40% Duty)
# [high_speed] : 最高转速(十进制百分比)
# [hysteresis] : 延迟时间(默认 0x03 = 3 秒)

# 手动控速 — 固定转速
ipmitool raw 0x30 0xf6 0x01 100 100 0x03   # 风扇1 固定在 100% Duty
ipmitool raw 0x30 0xf6 0x02 50 50 0x03    # 风扇2 固定在 50% Duty

# 手动控速 — 变速范围(20% → 100% 之间自动调节)
ipmitool raw 0x30 0xf6 0x01 0x14 0x64 0x03
# 0x14 = 20, 0x64 = 100

# 恢复自动控速(设置范围为 20-100)
ipmitool raw 0x30 0xf6 0x01 20 100 0x03

适用平台列表(来自 RV Script Generator):

平台命令前缀风扇数恢复方式
Seaking/Machamp`0x30 0xf6`6 (0x01-0x06)设置范围 20-100
Steelix`0x3e 0xf6`5设置范围 30-100
Old IPT`0x30 0xf6` (plain)5设置范围 30-100

8.3 b7 版本 — Pokemon

代码格式:0x30 0xb7 0x4/0x5 0xff [speed]

# 参数说明
# 0x4 : 设置最小风速
# 0x5 : 设置最大风速
# 0xff : 控制所有风扇
# [speed] : 转速百分比(十进制)

# 将所有风扇固定在 100% Duty
ipmitool raw 0x30 0xb7 0x4 0xff 100    # 设置最低风速 = 100
ipmitool raw 0x30 0xb7 0x5 0xff 100    # 设置最高风速 = 100

# 恢复自动控速 — 需要重启 BMC
ipmitool raw 0x30 0xb7 0x4 0xff 20     # 设置最低 = 20
ipmitool raw 0x30 0xb7 0x5 0xff 100    # 设置最高 = 100
/etc/init.d/ipmistack restart           # 重启 BMC 使设置生效

8.4 富士康版本 — Marshadow

代码格式:0x38 0x41 0 [speed] [fan_num]/0xff

# 参数说明
# [fan_num] : 0x01-0x06(单个风扇)或 0xff(所有风扇)
# [speed] : 转速百分比(十进制)

# 所有风扇设置为 80% Duty
ipmitool raw 0x38 0x41 0 80 0xff

# 单个风扇(风扇1)设置为 60%
ipmitool raw 0x38 0x41 0 60 0x01

# 恢复自动控速
ipmitool raw 0x38 0x41 4 0 0xff

8.5 腾讯版本 — Kingler

代码格式:0x2e 0x11 0xa9 0x19 0x00

# 步骤 1 — 切换到手动控速模式
ipmitool raw 0x2e 0x11 0xa9 0x19 0x00 6 1

# 步骤 2 — 设置风扇转速(例如 30% Duty)
ipmitool raw 0x2e 0x11 0xa9 0x19 0x00 7 30

# 恢复自动控速 — 重启 BMC
ipmitool raw 6 2                    # 先发送重启命令
ipmitool mc reset cold              # 冷复位 BMC

8.6 其他平台

Current IPT(0x3e 0x1f):

# 手动控速(10个风扇,$j 为风扇编号 0-9)
ipmitool raw 0x3e 0x1f $j $fan $fan 0 0xff 0xff

# 恢复自动
ipmitool raw 0x3e 0x1f $j 21 100 0 0xff 0xff

Yunhai / U90G5(0x3e 0x31 + 0x38):

# 先切换模式
ipmitool raw 0x3e 0x2f 0x01
# 设置转速
ipmitool raw 0x3e 0x31 0x00 $fan
ipmitool raw 0x3e 0x38 0x02 0x00 $fan
# 恢复
ipmitool raw 0x3e 0x38 0x01 0x01

Kunlun / 2U42(0x3e 0x03):

# 手动控速(8个风扇,$j 为风扇编号)
ipmitool raw 0x3e 0x03 $j $fan
# 恢复(50% 作为默认值)
ipmitool raw 0x3e 0x03 $j 50

8.7 远程风扇控制

在上述所有 raw 命令前添加远程连接参数:

# f6 版本远程控速示例
ipmitool -I lan -H 192.168.2.1 -U jdroot -P 'JCss%%6!8' \
    raw 0x30 0xf6 0x01 100 100 0x03

# b7 版本远程控速示例
ipmitool -I lanplus -H 192.168.2.1 -U admin -P admin \
    raw 0x30 0xb7 0x4 0xff 100
ipmitool -I lanplus -H 192.168.2.1 -U admin -P admin \
    raw 0x30 0xb7 0x5 0xff 100

8.8 平台速查表

平台命令前缀风扇数恢复方式
**Seaking/Machamp** (f6)`0x30 0xf6`6设置范围 20-100
**Pokemon** (b7)`0x30 0xb7`全部BMC 重启
**Marshadow** (Foxconn)`0x38 0x41`6/全部`0x38 0x41 4 0 0xff`
**Kingler** (Tencent)`0x2e 0x11`全部`raw 6 2` + `mc reset cold`
**Current IPT**`0x3e 0x1f`10设置 21-100 范围
**Steelix**`0x3e 0xf6`5设置范围 30-100
**Yunhai/U90G5**`0x3e 0x31+0x38`全部`0x3e 0x38 0x01 0x01`
**Kunlun/2U42**`0x3e 0x03`8设置 50% 默认值
**Old IPT**`0x30 0xf6` (plain)5设置范围 30-100

8.9 FSCTool 替代方案

某些系统可以使用 FSCTool 替代 ipmitool 进行风扇控制:

# 手动控速
./FSCTool duty

# 恢复自动控速
./FSCTool -R

9. ipmievd — 事件守护进程

ipmievd 是 ipmitool 附带的守护进程,用于监听 BMC 发送到 SEL 的事件并将消息记录到 syslog。

9.1 启动

# 基本启动(后台运行,监听 OpenIPMI 设备)
ipmievd

# 前台运行(调试用)
ipmievd -n

# 详细输出
ipmievd -v

# 指定接口
ipmievd -I open

9.2 测试事件发送

# 发送测试事件到远程 BMC
ipmitool -I lan -H <bmc_ip> -U admin -P pass event 1   # 温度告警
ipmitool -I lan -H <bmc_ip> -U admin -P pass event 2   # 电压告警
ipmitool -I lan -H <bmc_ip> -U admin -P pass event 3   # ECC 错误

# 查看 ipmievd 接收的日志
tail /var/log/messages

9.3 syslog 集成

ipmievd 使用 LOG_LOCAL4 设施将事件写入 syslog:

ipmievd: Temperature Sensor 30 - Upper Critical - going high
ipmievd: Voltage Sensor 60 - Lower Critical - going low
ipmievd: Memory Sensor 01 - Correctable ECC

10. 使用示例

10.1 电源控制

# 查看电源状态
ipmitool chassis status

# 远程开机
ipmitool -I lanplus -H 192.168.1.100 -U admin -P pass chassis power on

# 强制重启
ipmitool -I lanplus -H 192.168.1.100 -U admin -P pass chassis power cycle

10.2 传感器监控

# 一键检查所有传感器状态
ipmitool sdr elist | grep -v "ok$"

# 查看 CPU 温度
ipmitool sdr type Temperature

# 导出传感器数据为 CSV
ipmitool -c sdr list > sensors.csv

# 持续监控(每5秒)
watch -n 5 'ipmitool sdr | grep -E "degrees|RPM"'

10.3 SEL 日志

# 查看最近事件并格式化
ipmitool sel elist | tail -20

# 检查是否有严重错误
ipmitool sel list | grep -iE "critical|error|fail"

# 清理旧日志
ipmitool sel clear

# 定时备份 SEL
ipmitool sel save sel_$(date +%Y%m%d_%H%M%S).log

10.4 FRU 信息

# 查看完整硬件库存
ipmitool fru print

# 查看特定信息
ipmitool fru print | grep -E "Product|Serial|Part"

10.5 LAN 配置

# 配置静态 IP
ipmitool lan set 1 ipsrc static
ipmitool lan set 1 ipaddr 192.168.0.100
ipmitool lan set 1 netmask 255.255.255.0
ipmitool lan set 1 defgw ipaddr 192.168.0.1

# 验证配置
ipmitool lan print 1

# 配置 DHCP
ipmitool lan set 1 ipsrc dhcp

10.6 用户管理

# 添加管理员用户
ipmitool user set name 3 monitor
ipmitool user set password 3 MyP@ss123
ipmitool user priv 3 ADMINISTRATOR 1
ipmitool user enable 3

# 查看所有用户
ipmitool user list 1

# 删除用户(禁用)
ipmitool user disable 2

10.7 风扇控制完整流程

# 1. 查看当前风扇状态
ipmitool sdr | grep -E "RPM|Duty"

# 2. 手动控速到 100%(以 Seaking/f6 为例)
for i in 1 2 3 4 5 6; do
    ipmitool raw 0x30 0xf6 0x0$i 100 100 0x03
done

# 3. 确认转速已变化
sleep 5
ipmitool sdr | grep RPM

# 4. 恢复自动控速
for i in 1 2 3 4 5 6; do
    ipmitool raw 0x30 0xf6 0x0$i 20 100 0x03
done

10.8 远程管理

# 设置环境变量(避免命令行暴露密码)
export IPMI_PASSWORD="my_password"

# 远程批量操作
for host in 192.168.1.101 192.168.1.102 192.168.1.103; do
    echo "=== Checking $host ==="
    ipmitool -I lanplus -H $host -U admin -E chassis status
    ipmitool -I lanplus -H $host -U admin -E sdr | grep degrees
done

10.9 脚本化

# 创建自动化脚本
cat > bmc_monitor.sh << 'SCRIPT'
#!/bin/bash
IPMI_CMD="ipmitool -I lanplus -H 192.168.1.100 -U admin -a"

echo "=== BMC Monitor Report ==="
echo "Time: $(date)"
echo ""

echo "--- Power Status ---"
$IPMI_CMD chassis status | grep "System Power"

echo ""
echo "--- Sensors ---"
$IPMI_CMD sdr | grep -E "degrees|RPM|Volts"

echo ""
echo "--- Recent Events ---"
$IPMI_CMD sel elist | tail -5
SCRIPT

chmod +x bmc_monitor.sh
./bmc_monitor.sh

10.10 交互模式

# 进入交互式 shell
ipmitool -I open shell

# 在 shell 中执行命令
ipmitool> chassis status
ipmitool> sensor list | head -20
ipmitool> sel elist last 5
ipmitool> fru print
ipmitool> user list 1
ipmitool> exit

11. 高级用法

11.1 桥接命令

单级桥接 — 通过 BMC 访问 IPMB 上的设备:

# 格式
ipmitool -m <local_addr> -t <target_addr> <command>

# 示例:通过本地 BMC (0x94) 访问 IPMB 上的设备 (0x9a)
ipmitool -m 0x94 -t 0x9a mc selftest
ipmitool -m 0x94 -t 0x9a raw 6 4

双级桥接 — 通过中间 BMC 访问更远的设备:

ipmitool -H <ip> -U <user> -P <pass> \
    -B 0 -T 0x8a -m 0x94 -t 0x7a -b 7 \
    mc selftest

参数说明:

参数含义示例值
`-B`传输通道(第一级桥接)0
`-T`传输目标地址(中间 BMC)0x8a
`-m`源地址(本地 BMC IPMB 地址)0x94
`-t`远程目标地址0x7a
`-b`远程通道(目标 BMC 的 IPMB-L)7

11.2 SDR 缓存

远程系统使用本地 SDR 缓存可大幅提升性能:

# 首次从远程 BMC 导出 SDR 缓存
ipmitool -I lanplus -H 192.168.1.100 -U admin -P pass sdr dump sdr_cache.bin

# 后续使用缓存(不再从 BMC 读取 SDR 结构)
ipmitool -I lanplus -H 192.168.1.100 -U admin -P pass -S sdr_cache.bin sdr list
ipmitool -I lanplus -H 192.168.1.100 -U admin -P pass -S sdr_cache.bin sensor list

11.3 CSV 输出

# CSV 格式便于脚本解析
ipmitool -c sdr list
ipmitool -c sensor list
ipmitool -c sel list
ipmitool -c fru print

11.4 OEM 类型支持

# 查看可用的 OEM 类型
ipmitool -o list

# 常见 OEM 类型
ipmitool -o intelplus ...  # Intel 增强型
ipmitool -o supermicro ... # Supermicro

11.5 多 BMC 环境

# N 号设备(多节点/多 BMC 系统)
ipmitool -d 0 mc info    # BMC 0
ipmitool -d 1 mc info    # BMC 1

12. 故障排查

12.1 设备节点问题

# 症状:无法打开 /dev/ipmi0
# 检查内核模块
lsmod | grep ipmi

# 加载缺失模块
modprobe ipmi_msghandler ipmi_devintf ipmi_si

# 检查设备
ls -la /dev/ipmi*
dmesg | grep -i ipmi

# 手动创建设备(如果模块已加载但无设备节点)
mknod /dev/ipmi0 c 253 0

12.2 LAN 连接问题

# 检查端口连通性
nc -zu 192.168.1.100 623

# 增加重试和超时
ipmitool -I lanplus -H 192.168.1.100 -U admin -P pass -N 5 -R 10 mc info

# 检查网卡是否共享管理网络
# 某些 BMC 使用共享 NIC,需要检查 VLAN、Bonding 等设置

12.3 认证问题

# 确认用户名和密码
ipmitool user list 1

# 密码为空时显式指定
ipmitool -I lanplus -H 192.168.1.100 -U "" -P "" mc info

# IPMI v1.5 认证类型尝试
ipmitool -I lan -H 192.168.1.100 -U admin -P pass -A NONE mc info
ipmitool -I lan -H 192.168.1.100 -U admin -P pass -A PASSWORD mc info
ipmitool -I lan -H 192.168.1.100 -U admin -P pass -A MD5 mc info

12.4 安全建议

  1. 优先使用 lanplus(IPMI v2.0)而非 lan(IPMI v1.5)
  2. 不要在命令行中暴露密码,使用 -a-f-E 选项
  3. 专用管理网络,将 IPMI 接口隔离到独立的物理或 VLAN 网络
  4. 强密码策略,IPMI v1.5 最大 16 字符,v2.0 最大 20 字符
  5. 禁用不需要的用户ipmitool user disable
  6. 定期审计 SEL,检查异常登录和操作

13. 相关文档

文档路径说明
ipmitool Man Page`IPMItool/ipmitool-1.8.16/doc/ipmitool.1`完整命令参考
ipmitool README`IPMItool/ipmitool-1.8.16/README`架构、接口说明
ipmitool 使用说明`ipmitool.docx`ipmitool 详细使用文档
安装 ipmitool`安装ipmitool.docx`安装步骤指南

外部资源:

资源URL
ipmitool 主页http://ipmitool.sourceforge.net
ipmitool Man Pagehttp://ipmitool.sourceforge.net/manpage.html
IPMI 规范http://www.intel.com/design/servers/ipmi/spec.htm
OpenIPMI 项目http://openipmi.sourceforge.net
ipmitool GitHubhttps://github.com/ipmitool/ipmitool
ipmitool (LCA 2004)http://ipmitool.sourceforge.net/lca2004_ipmitool.pdf

14. 版本历史

版本日期变更
1.8.162015-11-22安全修复(Coverity扫描),用户管理和通道函数重构,多 OEM 扩展改进
1.8.15
1.8.14
1.8.132015-03-24EL7 RPM 发布版本(本地包)

维护者: Charles Qin 适用范围: CentOS 7 / RHEL 7 / Debian / Ubuntu 支持的 BMC 平台: Seaking / Machamp / Pokemon / Marshadow / Kingler / Steelix / IPT / Yunhai / U90G5 / Kunlun / 2U42 参考: 本文档整合了 ipmitool-1.8.16 源码、man page、IPMItool命令大全.txt、RV Script Generator 以及多个项目参考文档