目录
1 ipmitool
1.1 ipmitool简介
ipmitool 是一个功能强大的命令行工具,用于管理和监控支持智能平台管理接口(IPMI)的设备。
智能平台管理接口 (IPMI) 是一种开放标准的硬件管理接口规格,定义了嵌入式管理子系统进行通信的特定方法。IPMI 信息通过基板管理控制器 (BMC)(位于 IPMI 规格的硬件组件上)进行交流。使用低级硬件智能管理而不使用操作系统进行管理。
具有两个主要优点:1)配置允许进行带外服务器管理;2)操作系统不必负担传输系统状态数据的任务。
IPMI的核心是一个专用芯片/控制器(叫做服务器处理器或基板管理控制器(BMC)),其并不依赖于服务器的处理器、BIOS或操作系统来工作,可谓非常地独立,是一个单独在系统内运行的无代理管理子系统。
ipmitool的作用:
- 远程监控服务器的电源状态和环境传感器(如温度、风扇速度等)。
- 远程控制服务器的电源操作,如开机、关机、重启。
- 查看和配置设备的系统事件日志(SEL)。
- 管理用户权限和网络设置。
- 访问和控制服务器的串行控制台(SOL)。
要想使用ipmitool命令需要安装,安装方法如下:
# ubuntu 系统
apt install ipmitool
# centos7
yum -y install ipmitool
1.2 命令说明
使用:ipmitool [ options ] command [ sub-commands and sub-options ]
1、选项/options :
- -a:提示远程服务器密码
- -A authtype:指定在IPMIv1.5 lan会话激活期间使用的身份验证类型,有:NONE, PASSWORD, MD2, MD5, or OEM.
- -b channel:为桥接请求设置目标通道。
- -B channel:为桥接请求设置中转通道(双桥接)。
- -b channel:为桥接请求设置目标通道。
- -B channel:为桥接请求设置中转通道。(双桥接)
- -C ciphersuite:用于IPMIv2.0 lanplus连接的远程服务器认证、完整性和加密算法。默认值是3,它指定了RAKP-HMAC-SHA1认证、HMAC-SHA1-96完整性和AES-CBC-128加密算法。
- -d N:使用设备号N来指定用于带内BMC通信的/dev/ipmiN(或/dev/ipmi/N或/dev/ipmidev/N)设备。通过ipmi设备驱动程序接口,在具有多个节点和多个BMC的系统上定位特定的BMC。默认值是0。
- -e <sol_escape_char>:使用提供的字符作为SOL会话转义字符。默认值是~,但这可能与ssh会话冲突。
- -E:远程服务器的密码由环境变量IPMI_PASSWORD或IPMITOOL_PASSWORD指定。IPMITOOL_PASSWORD优先。
- -f <password_file>:包含远程服务器密码的文件。如果该选项没有设置或者 password_file 为空,密码默认为空
- -h:获取基础用法的帮助信息
- -H address:远程服务器地址,可以是IP地址也可以是主机名。对于 lan 和 lanplus 接口来说是有必要的
- -I interface:选择使用的impi接口
- -k key:使用提供的Kg密钥进行IPMIv2.0身份验证。
- -K:从IPMI_KGKEY 环境变量中读取Kg
- -l lun:为raw命令设置“目的lun”
- -L privlvl:强制会话特权级别,可以是:CALLBACK, USER, OPERATOR,ADMINISTRATOR。 默认是ADMINISTRATOR。当与-t目标地址结合使用时,该值将被忽略并始终设置为ADMINISTRATOR。
- -m local_address:设置本地的ipmb地址
- -N sec:指定lan和lanplus消息重传的间隔时间(秒数)。对于lan接口的默认值是2秒,对于lanplus接口的默认值是1秒。命令raw使用固定的15秒值。命令sol使用固定的1秒值。
- -o oemtype:选择要支持的OEM类型。使用-o list可以查看当前支持的OEM类型列表。
- -O sel oem:打开所选文件并读取OEM SEL事件描述,以在SEL列表中使用。有关文件格式的示例,请参阅contrib目录。
- -p port:连接远程主机的UDP端口,默认是 623
- -P password:在命令行指定远程服务密码。不推荐
- -R count:设置lan/lanplus接口的重试次数(默认为4)。命令raw使用固定的值,即尝试一次(不重试)。命令hpm使用固定的值,即重试10次。
- -S <sdr_cache_file>:使用本地文件作为远程SDR缓存。可以使用sdr dump命令从远程系统创建本地SDR缓存。
- -t <target_address>:将IPMI请求桥接到远程目标地址。默认是32。选项-L privlvl总是被忽略,并将其值设置为ADMINISTRATOR。
- -T address / -T <transmit_address> :设置网桥请求的中转地址(双网桥)
- -U username:远程服务用户名,默认为空
- -v:增加详细的输出级别。这个选项可以多次指定,以增加调试输出的级别。如果指定三次,将会得到所有传入和传出数据包的十六进制转储。使用五次则提供请求和预期回复处理的详细信息。hpm命令中的targetcap、compprop、abort、upgstatus、rollback、rollbackstatus和selftestresult会增加详细级别。
- -V:显示版本信息
- -y hex key:使用提供的Kg密钥进行IPMIv2.0身份验证。密钥应为十六进制格式,并可用于指定包含非打印字符的密钥。例如,‘-k PASSWORD’和’-y 50415353574F5244’是等价的。默认是不使用任何Kg密钥
- -Y:提示输入IPMIv2.0认证的Kg密钥。
- -z size:改变通信通道的大小。(OEM)
2、命令/COMMANDS :
- help:显示帮助信息,如:ipmitool help
- channel:通道信息
- authcap (channel number) (max priv):显示所选通道在指定特权级别下的身份验证功能信息。可能的特权级别包括:
- 1 回调级别
- 2 用户级别
- 3 操作员级别
- 4 管理员级别
- 5 OEM 专有级别
- 15 无访问权限
- info [channel number]:显示所选通道的信息,如果没有写,则显示当前正在使用的通道。如:
- authcap (channel number) (max priv):显示所选通道在指定特权级别下的身份验证功能信息。可能的特权级别包括:
> ipmitool channel info
Channel 0xf info:
Channel Medium Type : System Interface
Channel Protocol Type : KCS
Session Support : session-less
Active Session Count : 0
Protocol Vendor ID : 7154
- chassis:用于管理机箱相关的设置
- status:显示状态信息,包括:电源、按钮、冷却、驱动器和故障相关的信息。
- power status/on/off/cycle/reset/diag/soft 电源
- identify [ seconds |force]
- policy:电源什么时候恢复,参数有:list、always-on、previous、always-off
- restart_cause:最后一次重启的原因
- poh:获取开机时长
- bootdev:启动设备
- none:不更改启动设备顺序
- pxe:强制pxe启动
- disk:强制从默认硬盘驱动器启动
- safe:强制从默认硬盘驱动器启动,请求进入安全模式。
- diag:从诊断分区强制启动
- cdrom:强制从 CD/DVD 启动
- bios:BIOS启动
- dcmi:(Data Center Management Interface(数据中心管理接口))
- discover:在DCMI中发现支持的功能
- power command:(用于设置或查询服务器的电源使用限制)
- reading / get_limit / set_limit / deactivate
- sensors :打印可用的DCMI传感器。
- asset_tag:打印平台的资产标签。
- set_asset_tag string:设置平台的资产标签。
- get_mc_id_string:获取管理控制器的标识符字符串。
- set_mc_id_string string:设置管理控制器的标识符字符串。最大长度是64字节,包括一个空字符终止符
- thermalpolicy [get | set]:获取或设置热限制策略
- get_temp_reading:获取温度传感器读数。
- get_conf_param:获取DCMI配置参数。
- set_conf_param parameters:设置DCMI配置参数。
- oob_discover:用于DCMI发现的Ping/Pong消息。
- echo:在脚本中,将echo中的内容输出到标准输出
- event:
- predefined event number N:预定义事件编号 N。该命令用于向系统事件日志发送一个预定义的测试事件。这些事件作为测试BMC(基板管理控制器)的系统事件日志组件功能的一种方式被包含在内(每次执行事件 N 命令时,都会在日志中添加一条记录)。目前支持的值 N 包括:
- 1.温度:上临界值:升高
- 2.电压阈值:下临界值:降低
- 3.内存:可校正的ECC(错误检查和纠正)
- file filename:文件 filename 中指定的事件日志记录将被添加到系统事件日志中。文件中每行的格式如下:<{EvM 修订号} {传感器类型} {传感器编号} {事件方向/类型} {事件数据0} {事件数据1} {事件数据2}>[# 注释]。例如:0x4 0x2 0x60 0x1 0x52 0x0 0x0 # 电压阈值:下临界值:降低
- predefined event number N:预定义事件编号 N。该命令用于向系统事件日志发送一个预定义的测试事件。这些事件作为测试BMC(基板管理控制器)的系统事件日志组件功能的一种方式被包含在内(每次执行事件 N 命令时,都会在日志中添加一条记录)。目前支持的值 N 包括:
- exec :执行文件中的ipmitool命令。文件中的每一行是一个完整的命令
# 如:下面是一个文件中的两行
sdr list # get a list of sdr records
sel list # get a list of sel records
- firewall:支持固件防火墙功能。可用于添加或删除对特定命令/命令子功能的基于安全性的限制,或列出任何命令上设置的当前固件防火墙限制。固件防火墙命令如下:
- info [Parms as described above]:列出固件防火墙的信息,可加参数。
- enable [Parms as described above]:启用
- disable [Parms as described above] [force]:禁用
- reset [Parms as described above]:重置
- lan:配置带有网络信息的IPMI LAN通道。如:
> ipmitool -I open channel info 1
Channel 0x1 info:
Channel Medium Type : 802.3 LAN
Channel Protocol Type : IPMB-1.0
Session Support : session-based
Active Session Count : 8
Protocol Vendor ID : 7154
- print [channel]:输出当前通道信息。默认是输出第一个发现的LAN通道
- set (channel number) (command) (parameter):给指定通道设置命令/参数
# 示例:
ipaddr <x.x.x.x> # 设置通道IP
netmask <x.x.x.x> # 设置这个通道掩码
macaddr <xx:xx:xx:xx:xx:xx> # 设置这个通道的MAC地址
defgw ipaddr <x.x.x.x> # 设置默认网关的IP
defgw macaddr <xx:xx:xx:xx:xx:xx> # 设置默认网关的MAC地址
bakgw ipaddr <x.x.x.x> # 备份网关IP地址
bakgw macaddr <xx:xx:xx:xx:xx:xx> # 备份网关的MAC地址
password <pass> # 设置空用户密码
snmp <community string> # 设置snmp团体字
access <on|off> # 设置 LAN 通道访问模式
alert <on|off> # 设置通道警报状态
ipsrc <source> # 设置IP来源,默认来源有:
# none 未指定
# static 手动配置的静态IP地址
# dhcp 通过BMC运行的DHCP获得的地址
# bios 由BIOS或系统软件加载的地址
arp respond <on|off> # 设置BMC生成的ARP响应。
arp generate <on|off> # 设置BMC生成的无偿ARP(gratuitous ARP)
arp interval <seconds> # 设置BMC生成的无偿ARP的间隔(以秒为单位)
vlan id <off|id> # 禁用VLAN操作或启用VLAN并设置其ID
vlan priority <priority> # 配置VLAN帧的优先级,0-7
auth <level,...> <type,...> # 为给定的认证级别设置有效的认证类型。级别:callback(回调)、user(用户)、operator(操作员)、admin(管理员)。类型:none(无)、md2、md5、password(密码)、oem
- alert print [channel] [alert destination]:打印指定通道和目的地的警报信息。
- alert set (channel number) (alert destination) (command) (parameter):在指定的LAN通道和目的地上设置警报。
- stats get [channel number] # 检索指定通道上IP连接的信息。
- stats clear [<通道号>] # 清除指定通道上的所有IP/UDP/RMCP统计信息,将其重置为0。
- mc | bmc
- info:显示BMC的硬件信息
- reset <warm|cold>:指示BMC进行热复位或冷复位
- guid:显示管理控制器全局唯一标识。
- watchdog:允许用户查看和更改看门狗定时器的当前状态。
- get:获取watchdog定时器的设置和倒计时状态
- reset:将watchdog定时器重置为其最近的状态,并重新启动倒计时定时器。
- off:关闭当前正在运行的watchdog倒计时定时器。
- selftest:通过执行获取自检结果命令来检查BMC的基本健康状况,并报告结果
- getenables:显示BMC中为 enabled 的选项
- setenables option=[on|off]:设置选项是 enable 还是 disable。主要选项有:recv_msg_intr、event_msg_intr、event_msg、system_event_log、oem0、oem1、oem2
- getsysinfo argument:在bmc的系统信息中检索 argument
- setsysinfo argument string:将给定参数的系统信息字符串存储到bmc。常用的 argument 有:primary_os_name、os_name、system_name、delloem_os_version、delloem_URL
- chassis status | poh | identify | restart_cause | selftest | policy | power | bootdev | bootparam
- nm:节点管理器的操作
- alert:警报
- clear dest :清除节点管理器警报LAN目标。
- get:获取节点管理器的告警设置
- set chan (chan) dest (dest) string (string):设置节点管理器警报通道、LAN目标以及警报字符串编号。
- capability:获取节点管理器的电源控制能力和范围。
- control:enable|disable
- discover:发现节点管理器的存在,以及节点管理器的版本、修订版和补丁编号
- policy:add | get policy_id <0-7> | limiting | remove policy_id <0-7> [domain <platform|CPU|Memory>]
- power min max [domain <platform|CPU|Memory>]:配置节点管理器的最小和最大功耗限制。最小值和最大值必须在0到65535的范围内
- reset
- power chassis power command:电源机箱命令
- alert:警报
- sensor:传感器
- list:以表格形式列出传感器和阈值
- get id … [id]:列出给定名字的传感器的信息
- thresh id threshold setting:设置特定传感器的阈值(threshold)
- thresh id lower lnr lcr lnc:可以在同一时间给多个传感器设置最小值
- thresh id upper unc ucr unr:可以在同一时间给多个传感器设置最大值
- session info <active|all|id 0xnnnnnnnn|handle 0xnn>
- set:设置
- hostname host : 会话主机名
- username user:会话用户名
- password pass:会话密码
- privlvl level:会话特权水平
- authtype type:强制认证类型
- localaddr addr:本地IPMB地址
- targetaddr addr:远程目标 IPMB 地址
- port port:远程 RMCP 端口
- verbose [verbose]:设置详细级别
- shell:会启动一个交互式shell,可以使用这个shell向BMC(基板管理控制器)发送多个ipmitool命令并查看响应。
- user:
- list:显示所有已定义用户ID的用户信息列表
- set:
- name userid username:设置给定 userid 的用户名
- password userid [password]:设置给定 userid 的密码
- disable userid:通过给定userid禁用对BMC的访问。
- enable userid:通过给定userid启用对BMC的访问。
- priv userid privilege level [channel number]:设置指定用户在特定通道上的特权级别
- test userid <16|20> [password]:确定密码是以16字节还是20字节的形式存储的
3、开放接口:
为了使 ipmitool 在基于 2.4 的内核上正常工作,必须加载以下内核模块:
- ipmi_msghandler:IPMI 接口的传入和传出消息处理程序。
- ipmi_kcs_drv:为消息处理程序提供的 IPMI 键盘控制器样式(KCS)接口驱动程序。
- ipmi_devintf:为消息处理程序提供的 Linux 字符设备接口。
为了使 ipmitool 在基于 2.6 的内核上正常工作,必须加载以下内核模块: - ipmi_msghandler:IPMI 接口的传入和传出消息处理程序(与 2.4 内核中的功能相同)。
- ipmi_si:为消息处理程序提供的 IPMI 系统接口驱动程序。此模块支持 2.6 内核中的各种 IPMI 系统接口,如 KCS、BT、SMIC,甚至 SMBus。
4、BMC 接口:
ipmitool 的 BMC 接口使用 Solaris 10 及更高版本提供的 bmc 设备驱动程序。为了强制 ipmitool 使用此接口,可以在命令行中指定它:
ipmitool -I bmc command
与 bmc 驱动程序相关的文件如下:
- /platform/i86pc/kernel/drv/bmc:这是 bmc 驱动程序的 32 位 ELF 内核模块。
- /platform/i86pc/kernel/drv/amd64/bmc:这是 bmc 驱动程序的 64 位 ELF 内核模块。
- /dev/bmc:这是用于与 bmc 驱动程序通信的字符设备节点。
1.3 案例
1、列出所有远程传感器
> ipmitool -I lan -H 1.2.3.4 -f passfile sdr list
Baseboard 1.25V | 1.24 Volts | ok
Baseboard 2.5V | 2.49 Volts | ok
Baseboard 3.3V | 3.32 Volts | ok
2、显示一个远程传感器的状态
> ipmitool -I lan -H 1.2.3.4 -f passfile sensor get "Baseboard
1.25V"
Locating sensor record...
Sensor ID : Baseboard 1.25V (0x10)
Sensor Type (Analog) : Voltage
Sensor Reading : 1.245 (+/- 0.039) Volts
Status : ok
Lower Non-Recoverable : na
Lower Critical : 1.078
Lower Non-Critical : 1.107
Upper Non-Critical : 1.382
Upper Critical : 1.431
Upper Non-Recoverable : na
3、显示远程机箱的电源状态
> ipmitool -I lan -H 1.2.3.4 -f passfile chassis power status
Chassis Power is on
控制远程机箱的电源
> ipmitool -I lan -H 1.2.3.4 -f passfile chassis power on Chassis Power Control: Up/On
总结
ipmitool的一个重要使用:在Prometheus中,使用 impi exporter,来获取物理机。使用的是impitool。
更多使用案例可以参考:Prometheus(五):监控物理机并进行数据展示