Linux命令:ipmitool

发布于:2024-03-29 ⋅ 阅读:(21) ⋅ 点赞:(0)

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]:显示所选通道的信息,如果没有写,则显示当前正在使用的通道。如:
> 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 # 电压阈值:下临界值:降低
  • 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:电源机箱命令
  • 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(五):监控物理机并进行数据展示

本文含有隐藏内容,请 开通VIP 后查看