简介:智能平台管理界面(IPMI,Intelligent Platform Management Interface)是管理基于 Intel® 结构的企业系统中所使用的外围设备采用的一种工业标准,用户可以利用IPMI监视服务器的物理健康特征,如温度、电压、风扇工作状态、电源状态等。该标准由美国英特尔、惠普(Hewlett-Packard)、NEC、美国戴尔电脑和SuperMicro等公司制定。新的版本是IPMI2.0(http://www.intel.com/design/servers/ipmi/)。
新版本的IPMI可以通过串口、Modem以及Lan等远程环境管理服务器系统(包括远程开关机),同时在系统发生错误时能自动发出警告。要对服务器进行IPMI管理,需要被监控的系统具有支持IPMI的硬件设备。如果服务器具有底板管理控制器 (Baseboard Management Controller ,BMC),并且支持IPMI规范,则通过BMC与主机板上的不同传感器通信来监视系统是否有严重事件,并在某些参数超出其预置阈值时发出警报和日志事件。BMC具有以下功能:
● 通过系统的串行端口进行访问
● 故障日志记录和 SNMP 警报发送
● 访问系统事件日志 (System Event Log ,SEL) 和传感器状况
● 控制包括开机和关机
● 独立于系统电源或工作状态的支持
● 用于系统设置、基于文本公用程序和操作系统控制台的文本控制台重定向
● 使用 LAN访问 Red Hat® Enterprise Linux 串行控制台界面
简单来讲,IPMI是Intelligent Platform Management Interface
是一种开放标准的硬件管理系统接口,可以在服务器、计算机等设备中实现远程管理和监测。通过IPMI,系统管理员可以在不开机的情况下对硬件进行故障排查、电源控制、BIOS 配置管理、日志记录等操作。这样可以提高管理效率,并且在紧急情况下快速响应的能力。
OpenIPMI
OpenIPMI 是一个开源项目,旨在提供用于 IPMI 的开放源代码实现。它包括一组库和工具,允许访问基于 IPMI 的 BMC(Baseboard Management Controller)功能。OpenIPMI 提供了用于与 IPMI 设备通信的编程接口和命令行工具。
centos下可以直接使用yum安装的方式进行
yum -y install OpenIPMI
或者使用二进制离线安装
官方链接:https://sourceforge.net/projects/openipmi/
wget https://sourceforge.net/projects/openipmi/files/latest/download/OpenIPMI-2.0.34.tar.gz tar -zxf OpenIPMI-2.0.34.tar.gz ./configure && make && make install
装完OpenIPMI后,启用IPMI服务 /etc/rc.d/init.d/ipmi start 一般如果内核支持的话,能正常启动
ipmitool
ipmitool 是一个命令行实用程序,用于与支持 IPMI 的硬件设备进行通信。它允许用户执行各种 IPMI 相关操作,如读取传感器数据、控制系统电源、重置系统等。ipmitool 是一个独立的工具,而不是库或框架。
centos下可以直接使用yum安装的方式进行
yum -y install ipmitool
二进制安装的方式有待探索,日后慢慢更新
用法:
ipmitool 的所有调用都需要指定要使用的接口,除非您想使用编译时设置的默认接口。每次通话还必须指定要运行的命令。您可以看到支持的列表接口和默认值以及顶级命令列表 -h 选项提供的使用输出:
用法: ipmitool [选项...] <命令> -h 这个帮助 -V 显示版本信息 -v Verbose(可以使用多次) -c 以逗号分隔格式显示输出 -I intf 使用的接口 -H 主机名 LAN 接口的远程主机名 -p port 远程 RMCP 端口 [默认=623] -L level 远程会话权限级别 [默认=USER] -A authtype 强制使用 authtype NONE、PASSWORD、MD2 或 MD5 -U 用户名 远程会话用户名 -P 密码 远程会话密码 -f file 从文件中读取远程会话密码 -a 提示输入远程密码 -E 从IPMI_PASSWORD环境变量读取密码 -m 地址 设置本地 IPMB 地址 -t 地址 桥接请求到远程目标地址
命令: raw 发送 RAW IPMI 请求并打印响应 lan 配置 LAN 通道 chassis 获取机箱状态并设置电源状态 event 将预定义事件发送到 BMC bmc 打印 BMC 状态并配置全局启用 sdr 打印传感器数据存储库条目和读数 sensor 打印详细的传感器信息 fru 打印内置 FRU 并扫描 SDR 查找 FRU 定位器 sel 打印系统 Evelnt 日志 sol 配置 IPMIv2.0 Serial-over LAN user 配置BMC用户 channel 配置BMC通道 session 打印会话信息 shell 启动交互式IPMI shell exec 从文件运行命令列表 set 为shell和exec设置运行时变量
命令的运行时变量
有关受支持命令的更多帮助,可以通过运行以下命令来找到帮助参数,例如 “chassis help”。有一些命令具有特殊含义:
shell:该命令将启动 ipmitool 命令集的 shell 界面。您可以使用它以交互方式输入命令来监控系统状态。
示例会话:
# ipmitool -I open shell ipmitool> chassis status System Power : off Power Overload : false Power Interlock : inactive Main Power Fault : false Power Control Fault : false Power Restore Policy : always-off Last Power Event : command Chassis Intrusion : active Front-Panel Lockout : inactive Drive Fault : false Cooling/Fan Fault : false ipmitool> user list 7 ID Name Callin Link Auth IPMI Msg Channel Priv Limit 1 true false true ADMINISTRATOR ipmitool> exit
exec: 此命令将读取文本文件并按顺序执行 ipmitool 命令。它可用于可编写脚本的命令:
# cat lansetup.scr lan set 7 ipsrc static lan set 7 ipaddr 10.1.1.10 lan set 7 netmask 255.255.255.0 lan set 7 defgw ipaddr 10.1.1.254 # ipmitool -I open exec lansetup.scr 设置LAN IP 地址为 10.1.1.10 将 Lan 子网掩码设置为 255.255.255.0 将 Lan 默认网关 IP 设置为 10.1.1.254
set:shell 和 exec 模式可以使用此命令来配置 各种会话参数:
hostname <host> 会话主机名 username <user> 会话用户名 password <pass> 会话密码 privlvl <level> 会话权限级别force authtype <type> 身份验证类型force localaddr <addr> 本地IPMB 地址 targetaddr <addr> 远程目标IPMB 地址 端口 <port> 远程RMCP 端口 csv [level] 启用以逗号分隔格式输出 verbose [level] 详细级别
参考文档:https://github.com/ipmitool/ipmitool
区分
OpenIPMI
和 ipmitool
是两个不同的工具,但它们都涉及管理基于 IPMI 标准的服务器硬件。
OpenIPMI 是一个开源项目,提供了一整套 IPMI 功能的库和工具,可以用于编程接口和脚本化任务。它提供了更灵活的方式来与 IPMI 兼容硬件进行交互。
ipmitool 是一个命令行实用程序,用于在命令行界面下执行 IPMI 相关操作。它更适合于一次性或交互式任务,允许用户直接输入命令来执行特定的 IPMI 命令。
ipmi 操作
登录ipmi
ipmitool -I lanplus -H "192.168.10.13" -U "root” -P "password"
打印当前 lan 信息
ipmitool lan print 1
在系统内使用工具更改ipmi IP
ipmitool lan set 1 ipsrc static #设置ID 1 为静态IP ipmitool lan set 1 ipaddr 192.168.1.2 #设置IPMI IP地址 ipmitool lan set 1 netmask 255.255.0.0 #设置IPMI 掩码 ipmitool lan set 1 defgw ipaddr 192.168.1.1 #设置IPMI网关
查看用户信息
ipmitool user list 1
修改id 2 的密码为 Password
ipmitool user set password 2 <newPassword>
查看电源状态
ipmitool chassis power status
关闭电源
ipmitool chassis power off
开启电源
ipmitool chassis power on
查看上次重启原因
ipmitool chassis power restart_cause
重启
ipmitool chassis power reset
列出服务器传感信息
ipmitool sensor
IPMI取得硬件信息
ipmitool fru print | grep '^FRU.*(ID 0)' -A10
IPMI风扇控制
首先要关闭风扇自动调速功能,否则我们手动设置的转速是不会生效的。最后的 0x00 表示关闭自动调速 0x01 表示开启自动调速。
ipmitool -I lanplus -H 192.168.1.2 -U 'root' -P 'passwd' raw 0x30 0x30 0x01 0x00
关闭自动调速之后,我们就可以按照我们自己的意愿来调整转速了,我这边设置为10%
ipmitool -I lanplus -H 192.168.1.2 -U 'root' -P 'passwd' raw 0x30 0x30 0x02 0xff 0x20
最后的 0x20 表示转速的百分比的十六进制,0x20 表示32%(大约 6600RPM) 最大 0x64
设置完成后我们可以通过iDRAC管理页面查看设置的结果。
或者执行以下代码块
__fszs() { #转换十进制为十六进制 hm=$(printf '%x' $1) ipmitool raw 0x30 0x30 0x01 0x00 >/dev/null ipmitool raw 0x30 0x30 0x02 0xff 0x$hm >/dev/null } __fszu 20