BMC 筆記:IPMITool

 

IPMITool 是一個命令列工具,用來透過 IPMI 協定直接與伺服器的 BMC(Baseboard Management Controller)通訊。

工程師可以在不登入作業系統、甚至主機無法開機的情況下,遠端或本機執行電源控制、讀取硬體感測器、查看事件日誌(SEL)、查詢 FRU 資訊與進行 BMC 診斷。

在閱讀這篇文章前,可以先認識一下  BMC 筆記:BMC 和 BMC 筆記:IPMI 是什麼。


IPMITool 常用參數

這邊目前只列我自己用過的,更詳細的資訊可以參考 ipmitool(1) - Linux man page。 

  • -I:Interface,遠端連線時通常使用 lanplus
  • -H:host
  • -U:使用者名稱
  • -P:密碼
  • -v/-vv/-vvv:通常用於 debug,加入後會顯示詳細資訊,v 越多越詳細 
  • -L:隱私等級 (權限),有 CALLBACK、USER、OPERATOR、ADMINISTRATOR 等,預設是 ADMINISTRATOR
  • -V:版本資訊

 

IPMITool 指令架構

遠端連線會使用: 

ipmitool -I lanplus -H <BMC HOST/IP> -U <USER> -P <PASSWORD> <command>

 

有時為了開發或使用廠商自行開發的功能,我們會使用 raw 來取代 <command>:

ipmitool raw <netfn> <cmd> <data>

<netfn> 為 Network Function,<cmd> 是指令,<data> 是一到數組資料。每個參數都是以 0x?? (16 進位) 的形式輸入,具體要帶些什麼需要查使用手冊或廠商的程式,不過 netfn 有些慣例。

  • 0x00:Chassis,如關機、開機、重啟
  • 0x02:Bridge
  • 0x04:Sensor/Event
  • 0x06:App,應用程式接口,如 Get Device ID、Get NetFn Support、Get Command Support
  • 0x08:Firmware
  • 0x0A:Storage
  • 0x0C:Transport,如配置 IP、MAC 地址。 

廠商自己定義的 OEM Netfn 不在上面,也是需要自己查找使用手冊或程式。


Error message & debug

這邊紀錄之前遇到過的 error message 與處理方法。

  • Error: Unable to establish IPMI v2 / RMCP+ session
    • 檢查 IPMITool 是否有安裝成功
    • 若是遠端連線,要檢查網路、或是 Server 是不是正在更新(ex: BMC 正在進行韌體更新)
  • Insufficient privilege level
    • 使用者權限不足
      • 可用「ipmitool user list 1」查看用戶權限
      • 如果有 Administrator 權限可加入「-L ADMINISTRATOR」指定最高權限
    • command 存在但被禁用
  • Invalid command
    command 不存在,確認是不是輸入錯誤 
  • Invalid data field in request
    • <data> 帶的數量不對,可以增加一些 0x00 試試
    • 部分 <data> 數值不對,可以改成別的值試試


Resource

ipmitool(1) - Linux man page

Intelligent Platform Management Interface Specification Second Generation

 

 

 

留言