Ipmitool —— 對於控制支持IPMI的設備有效.
ipmitool [-c|-h|-v|-V]-I open <command>
ipmitool [-c|-h|-v|-V]-I lan -H <hostname>
[-p <port>]
[-U <username>]
[-A <authtype>]
[-L <privlvl>]
[-a|-E|-P|-f <password>]
[-o <oemtype>]
<command>
ipmitool [-c|-h|-v|-V]-I lanplus -H <hostname>
[-p <port>]
[-U <username>]
[-L <privlvl>]
[-a|-E|-P|-f <password>]
[-o <oemtype>]
[-C <ciphersuite>]
<command>
這個程序能夠使你通過一個kernel設備驅動或者一個遠程系統,利用IPMIv1.5或IPMIv2.0
來
管理本地系統的任何一個智能平臺管理接口(IPMI)功能。這些功能包括打印FRU(現場可替換裝置)信息、LAN配置、傳感器讀數、以及遠程機架電源控
制。
一個本地系統接口的IPMI管理功能需要一個兼容IPMI的kernel驅動程序被安裝以及配置。在Linux中,這個驅動叫做OpenIPMI,他被
包括在了標準化分配中。在Solaris系統中,這個驅動叫做BMC,他被包括在了Solaris
10中。遠程控制的管理需要授權以及配置IPMI-over-LAN接口。根據每個系統獨特的需要,它可以通過系統接口來使LAN接口使用
ipmitool。
-a
提示輸入遠程服務器的密碼
-A <authtype>
當IPMIv1.5會話激活時,指定使用一個認證類型。
-c
使輸出格式爲 CSV(逗號分隔的變量)格式。但是不是針對所有命令都有效。
-C <ciphersuite>爲IPMIv2 lanplus連接使用遠程服務器身份驗證、完整性和加密算法。請看IPMIv2說明書中的表格 22-19。默認的三個格式爲:指定RAKP-HMAC-SHA1
爲驗證,HMAC-SHA1-96爲完整性,AES-CBC-128爲加密算法。
-E
遠程服務密碼通過環境變量IPMI_PASSWORD來指定。
-f <password_file>指定一個文件,而這個文件中包含了遠程服務密碼。如果這個選項沒有被使用,或者指定的文件不存在,那麼那麼密碼將默認爲NULL。
-h 獲取基本幫助
-H <address>
遠程服務地址,可以爲ip地址或者是主機名。Lan和lanplus接口都需要這個操作。
-I <interface>
選擇使用的IPMI接口。編譯支持的接口都在使用幫助輸出中可見。
-L <privlvl>
力量會話特權級別。
可以爲CALLBACK,
USER,
OPERATOR,
ADMIN。默認爲ADMIN。
-m <local_address>
設置本地IPMB(智能平臺管理總線)地址。默認的爲0x20。如果是一般的操作,那麼就沒有必要更改它。
-o <oemtype>
選擇支持的OEM(原始設備製造商)類型。這通常涉及到代碼中的小竅門,以解決各種BMC在不同製造商的怪癖到位。
使用命令“-o list”來查看當前支持的OEM類型的列表。
-p <port>
設置要連接的遠程服務UPD端口,默認爲623。
-P <password>
在命令行中指定遠程服務密碼。如果支持,他將會進程列表中被掩蓋。注意!:不推薦在命令行中指定密碼。
-t <target_address>
橋接IPMI的請求到遠程目標地址。
-U <username>
遠程服務用戶名,默認爲NULL。
-v
提高詳細輸出的級別。這個操作可以指定多次用來提高調試輸出的級別。如果指定三次,那麼你將會得到所有傳入和傳出的數據包。
-V
列出版本信息。
如果沒有密碼方法被指定,那麼ipmitool將會提示用戶輸入密碼。如果用戶沒有輸入密碼,那麼遠程服務密碼將會設置爲NULL。
在使用IPMI LAN
接口之前,有一些需要注意的安全問題。一個遠程控制站有這個能力去控制一個系統的power狀態,同樣也可以去收集某些平臺上的信息。爲了減少脆弱性強烈
建議IPMI LAN接口只能用在“trusted”環境中,在這個環境中系統的安全性不是一個問題或存在安全是一個專門的“管理網絡”。
此外,我們強烈建議您不要啓用沒有設置密碼的遠程訪問的IPMI,同時,這個密碼不應該與那個系統的其他密碼一樣。
當利用ipmiv1.5 lan接口改變了遠程機器的IPMI密碼後,新密碼將作爲明文用過網絡被髮送。這個可以被觀察到並且可以被利用來攻擊遠程系統。因此建議的IPMI密碼管理只有通過IPMIv2.0
lanplus接口或在本地站系統接口完成。
在IPMIv1.5,最大密碼長度爲16個字符。超過16字符的密碼部分將被去掉。
在IPMI 2.0,最大密碼長度爲20個字符;較長的密碼將被截斷。
help
這個可以在ipmitool命令行中獲取命令行幫助。也可以寫在其他參數後面來選擇使用幫助。
ipmitool help
Commands:
raw 發送一個RAW(未加工的)
IPMI請求然後輸出響應。
lan 配置LAN通道。
chassis 獲取機架狀態並且設置power狀態。
event 發送預定義的狀態給MC(管理控制器)
mc 管理控制器狀態和全局是否可使用。
sdr 打印傳感數據倉庫輸入與文本
sensor 輸出詳細的傳感器信息。
fru 輸出內嵌的FRU(現場可替換裝置)和掃描FRU
定位器的SDR(系統定義記錄)
sel 打印系統事件日誌(SEL)。
pef 配置平臺事件過濾(PEF)
sol 配置IPMIv2.0Serial-over-LAN
isol 配置IPMIv1.5Serial-over-LAN
user 配置管理控制器用戶
channel 配置管理控制器通道
session
打印session信息
exec 從文件中運行一系列的命令
set 爲shell和exec設置運行變量。
ipmitool chassishelp 機架命令:status,power,
identify, policy, restart_cause, poh, bootdev
Ipmitool chassispower help 機架power狀態:status,
on, off, cycle, reset, diag, soft
bmc/mc
reset <warm|cold>
指示BMC執行一個warm或cold得復位。
Info
顯示BMC硬件的信息,包括了
設備版本、固件版本、IPMI版本支持、製造商id、額外設備支持的信息。
getenables
顯示一個列表,顯示目前BMC的可用的操作選項。
setenables <option>=[on|off]
啓用或禁用特定的選項。此命令根據IPMI規
範僅支持系統接口。當前option支持的選項有:
recv_msg_intr 接收消息隊列中斷。
event_msg_intr 事件消息緩衝區滿中斷
event_msg 事件消息緩衝區
system_event_log 系統事件日誌記錄
oem0 oem定義選項#0
oem1 oem定義選項#1
oem2 oem定義選項#2
channel
authcap <channel number> <maxpriv>
顯示有關選定的信息通道的身份驗證功能,在指定的權限級別.
可能的特權級別包括:
1 Callbacklevel
2 Userlevel
3 Operator level
4Administrator level
5 OEMProprietary level
info [channel number]
顯示選定的通道的信息。如果沒有給定通道,那麼它將顯示當前使用的通道的信息。
ipmitool channel info
Channel 0xf info:
Channel MediumType : System Interface
Channel ProtocolType : KCS
Session Support : session-less
Active Session Count : 0
Protocol Vendor ID : 7154
getaccess <channel number> [userid]
將給定的userid作爲給定的通道的默認值。當給定的通道被使用,那麼默認的用戶就是給定的這個用戶id。
setaccess <channelnumber> <userid>
[callin=on|off][ipmi=on|off] [link=on|off] [privilege=level]
在給定的通道下爲給定的userid配置用戶訪問信息
getciphers <all |supported> <ipmi | sol> [channel]
爲給定的應用(ipmi或sol)在給定的通道下顯示支持的密碼套件列表
Chassis
Status
顯示關於系統機架和主電源子系統的高級別狀態的信息。
poh
這個命令將會返回poweron的時間(單位爲小時)。
identify <interval>
控制面板標識燈。默認是15,用0表示關掉。
restart_cause 查詢系統最後一次重啓的原因。
Policy 設置如果停電時的機架電源策略。
list 顯示所有支持的策略
always-on 當電源恢復時on
previous 當電源恢復時返回到原先的狀態。
always-off 當電源恢復時保持off。
power 執行機架控制命令來查看和更改電源狀態。
Status 顯示當前狀態。
on 電源開
off 電源關閉機架到軟關閉(S4/S5狀態)。
cycle 規定關閉的區間至少爲1秒。當機架電源狀態在s4/s5狀態時將不會有動作發生,我們建議首先檢查電源狀態,
如果系統電源on或低於S4/S5休眠狀態,此時在使用cycle命令。
reset 這個命令將執行硬重置。
diag 向處理器直接發送一個診斷中斷。
soft 通過ACPI(高級配置與電源接口)來執行軟件關機。這個可以在多種方式下實現,一般是通過模擬過高溫度或模擬關鍵鍵。
這是必要的,要有操作系統的ACPI支持。
Bootdev <device> 請系統再下次重啓時從系統啓動備用引導設備啓動。
目前支持的<device>包括:
Pxe:
pxe啓動
Disk: 從BIOS默認的啓動設備處啓動。
Safe: 從BIOS默認的啓動設備處啓動,但是要求有安全模式。
Diag: 從診斷分區啓動。
Cdrom: 從CD/DVD啓動
Bios: 進入bios設置。
event
< predefined event number>
發送預先定義的事件到系統事件日誌。下面的事件包括作爲一種手段,以測試系統事件日誌的BMC的組件功能(每一次都會增加一個輸入,
event n命令被執行)
目前支持的n值爲:
1
溫度:上臨界值:走向高
2
電壓臨界值:下臨界值:走向低
3
內存:可糾正的ECC錯誤檢測
注意:這些預先定義的事件可能不會產生一個特定的系統“準確”的SEL(系統事件日誌)記錄,因爲他們不能正確綁定到一個有效
的傳感器數量,但是這些足以證明了的SEL正確操作。
file <filename>
filename文件中詳細描述的事件日誌記錄將被添加到系統事件日誌。
該文件中的每一行的格式如下:
<{EvM Revision} {Sensor Type} {Sensor Num} {Event Dir/Type} {Event Data 0}{Event Data 1}
{Event Data 2}>[# COMMENT]
注意:Event Dir/Type中,事件路徑的編碼作爲高7位,事件類型的編碼作爲低7位。
如:0x4 0x2 0x60 0x1 0x52 0x0
0x0# Voltage threshold: LowerCritical: Going Low。
exec <filename>
從filename中讀取ipmitool命令。每一行都是一個完整的命令。這些命令的語法定義在本頁的COMMANDS中。每一行都可以在
行尾加個可選擇的註釋,以‘#’爲限定符。
如,一個兩行命令的文件:
sdr list # get a list of sdr records
sel list # get a list of sel records
fru
print
這個命令將會讀取所有的現場可替換裝置(FRU)的庫存數據,提取這些信息作爲序號,零件編號,資產標籤,以及描述了機架、
電路板或產品的短字符串。
i2c<i2caddr> <read bytes> [<write data>]
這將允許你執行i2c命令。
isol
setup <baud rate>
爲IPMIv1.5 Serial-over-LAN設置傳輸頻率。
lan
print <channel>
輸出給定通道的當前配置信息。
Set <channel> <parameter>
爲給定的通道設置給定的參數。有效的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>
設置備份網關的ip地址
password <pass>
設置無用戶的密碼。
snmp <community string>
設置SNMP的團體字符串
user
啓用用戶訪問模式爲用戶標識1。
access <on|off>
設置LAN通道access模式。
ipsrc <source>
設置ip地址源:
none 沒有指定;
static 手動配置靜態IP地址
dhcp 通過BMC運行DHCP來得到地址
bios 通過BIOS或系統軟件來裝載地址
arp respond <on|off>
設置BMC生成ARP回覆。
arp generate <on|off>
設置BMC生成免費的ARP
arp interval <seconds>
設置BMC生成免費的ARP間隔。
auth <level,...><type,...>
給一個指定的授權級別一個有效的授權類型。
Levels: callback, user, operator,admin
Types:none, md2, md5, password, oem
cipher_privs <privlist>
相關研究密碼套件數目連同最高權限級別是去使用它。這樣,密碼套件可以用一個給定的權限級別來限制用戶。
例如,管理員需要使用比一般用戶更強的密碼套件。
Privlist的格式爲如下,每個字符代表一個權限級別,字符位置標識密碼套件的數目。
例如,第一個字符表示密碼套件1(密碼套件0是保留),第二個字符表示套件2,
以此類推。Privlist必須有15個字符。
在privlist中使用的字符和其相關權限級別爲:
X Cipher Suite Unused
c CALLBACK
u USER
o OPERATOR
a ADMIN
O OEM
所以,設置最高權限時,將套裝1分配給USER,套裝2分配給ADMIN,命令如:
ipmitool -I interface lan set channel cipher_privs uaXXXXXXXXXXXXX
pef
info
這個命令將會查詢BMC,並且打印出PEF所支持功能的信息。
status
這個命令打印出當前的pef的狀態(BMC最後一次向SEL德輸入,等等)
policy
此命令列出了PEF的策略表條目。每個策略項描述警報目的地。一個政策設置是一個表項的集合。PEF警報動作參考策略集。
list
這個命令列舉出PEF表項。每一個PEF輸入關聯一個傳感器事件給一個行動。當PEF是活躍的,每個平臺事件導致BMC去掃描匹配的事件
條目表,並採取一定可能的行動。
採取行動,執行優先順序(高臨界第一)。
raw<netfn> <cmd> [data]
這將允許你執行原始的IPMI命令。作爲一個例子,用一個原始命令來查詢POH(通道開銷)計數器:
ipmitool-v raw 0x0 0xf
RAWREQ (netfn=0x0 cmd=0xf data_len=0)
RAWRSP (5 bytes)
3c72 0c 00 00
sdr
info
這個命令將會查詢BMC中相關的SDR(傳感器數據記錄)信息。
list[all|full|compact|event|mcloc|fru|generic]
這個命令將會讀取傳感器數據記錄(SDR)以及提取傳感器給定type的信息,之後將會查詢每一個傳感器並打印出相應的名字、狀態等信息。
可用的類型如下:
all 所有的SDR記錄(傳感器和定位器)
full 完全的傳感器記錄
compact 簡潔的傳感器記錄
event 傳感器記錄的事件信息
mcloc 管理控制器定位器記錄
fru FRU(現場可替換裝置)的定位器記錄
generic 一般的SDR記錄
entity <id>[.<instance>]
顯示所有的實體關聯的傳感器。通過運行命令`sdr list'和一個操作符‘-v’獲得一個有效的實體在目標系統上的ID列表。
所有實體的id列表可以在IPMI規範中找到。
dump <file>
將原始的SDR數據寫入文件file。
sel
注意:如果SEL時鐘需要設置的話,SEL寫入次數作爲`Pre-Init
Time-stamp'被顯示。
保證SEL時鐘被命令`sel
time get' 和 `sel time set<time string>'所精確的更改。
Info
這個命令將會查詢BMC中關於SEL和其內容的相關信息。
clear
這個命令將會清空SEL中的信息。它不能被撤消所以要小心。
list
當運行沒有參數的此命令時,SEL中全部的信息將會被顯示出來。
<count>|first <count>
顯示SEL中最先的count條信息。如果count是0,那麼所有的信息將會顯示。
last <count>
顯示SEL中最後的count條信息。如果count是0,那麼所有的信息將會顯示。
delete <number>
刪除一個單一事件。
time
get
顯示SEL時鐘的當前時間。
set <timestring>
設置SEL
時鐘。未來的SEL條目將使用此命令設置時間。<time
string>的格式爲"MM/DD/YYYYHH:MM:SS"。
注意,小時是24小時格式。建議在設置時間之前將其清除。
sensor
list
用廣泛的表格式來列舉出傳感器和閾值。
get <id> … [<id>]
打印出指定name的傳感器的信息。
thresh <id> <threshold><setting>
這允許您設置一個特定的閾值傳感器。該傳感器通過name指定。可用的thresholes有:
unr 較高不可恢復
ucr 上臨界
unc 上非關鍵
lnc 下非關鍵
lcr 下臨界l
lnr 較低不可恢復
session
info < active | all | id 0xnnnnnnnn |handle 0xnn>
顯示指定的session的信息。你可以識別session通過id、處理數量、工作狀態、或通過關鍵字‘all’來指定所有的session。
sol
info [<channel number>]
檢索指定的通道的Serial-Over-LAN配置信息。如果沒有指定通道,那麼它將顯示出當前使用的通道的SOL配置數據。
set <parameter> <value>[channel]
爲SerialOver Lan配置參數。如果沒有通道被指定,它會顯示出當前使用的通道的SOL配置信息。
配置參數的升級唄自動監視通過將parameter設爲set-in-progress。
可用的parameters和value爲:
set-in-progress
set-complete set-in-progresscommit-write
enabled
true false
force-encryption
true false
force-authentication
true false
privilege-level
user operator admin oem
character-accumulate-level
十進制數給予5毫秒增量
character-send-threshold
十進制數
retry-count
十進制數,0表示沒有數據包發送後重試。
retry-interval
十毫秒增量的十進制數。0表示重試應送回回來。
non-volatile-bit-rate
serial, 19.2, 38.4, 57.6, 115.2 設置此值,以串行顯示,BMC應該使用被IPMI
over serial通道使用的設置。
volatile-bit-rate
serial, 19.2, 38.4, 57.6, 115.2. 設置此值,以串行顯示,BMC應該使用被IPMI
over serial通道使用的設置。
activate
使ipmitool進入Serial
Over LAN模式,僅僅當使用lanplus接口時有用。一個RMCP+連接連向BMC,終端被設置爲原始模式,
用戶輸入發送到串行控制檯的遠程服務器。在退出時,SOL的有效負載模式失效,終端也將被回覆到原來的模式。
特別的轉義字符被提供用來控制SOL會話:
~. 終止連接
~^Z 掛起的ipmitool
~B 發送中斷
~~ 通過輸入兩次來發送轉義字符
~? 輸出所支持的轉移字符
deactivate
停用串行局域網在BMC模式。退出Serial
Over LAN模式將會自動的將這個命令發送到BMC,但是對於無意識的退出SOL模式的情況,
這個命令將會很有用來重置BMC狀態。
user
summary
顯示用戶id信息的簡單概要,包括最大數量的用戶id、可用的用戶id
的數目、和
已定義好的名字的數目。
list
顯示出所有用戶的信息。
set
name <userid> <username> 設定給定用戶id以給定的用戶名
password <userid>[<password>] 設定給定的用戶以給定的密碼。如果沒有給定密碼,那麼此用戶的密碼將爲NULL。當從
管理員級別的賬戶中刪除密碼時要注意。
disable <userid> 使指定的用戶禁用訪問BMC。
Enable <userid> 使指定的用戶啓用訪問BMC。
test <userid> <16|20>[<password>] 確定密碼是否已被16或20個字節存儲。
注意:要確定LAN接口位於哪個通道,使用命令`channel info channel'。
Ipmitool的open接口利用openipmi的內核設備驅動程序。該驅動存在於所有的現代2.4和所有2.6核心中,以及它應該出現在最新的
Linux發行版的內核中。在OpenIPMI的主頁中同樣有各種針對於使不同版本的核心可用的IPMI驅動核心補丁。
2.4和2.6核心所需要的核心模塊是不一樣的。
下列的核心模塊就需要裝載一個2.4基礎核心,從而保證ipmitool順利運行:
ipmi_msghandler
爲IPMI接口處理傳入和傳出的信息
ipmi_kcs_drv
一個針對消息處理的IPMI鍵盤控制器的風格接口。
ipmi_devintf
Linux字符的消息處理設備接口
下列的核心模塊就需要裝載一個2.6基礎核心,從而保證ipmitool順利運行:
ipmi_msghandler
爲IPMI接口處理傳入和傳出的信息
ipmi_si
一個IPMI的系統消息處理程序接口的驅動程序。該模塊支持各種IPMI的系統接口,例如KCS,
BT, SMIC,甚至2.6核心下的SMBus。
ipmi_devintf
Linux字符的消息處理設備接口
一旦需要的模塊被加載,將會有一個動態的字符輸入裝置存在於/dev/ipmi0。對於系統,使用devfs或udev將會在/dev/ipmi/0中。