IPMIUTIL gibts zwar auch für Windows, hat aber leider nicht wie IPMITOOL (welches es wiederum nur für Linux gibt) ein spezielles Kommando um den BMC zu resetieren (was, man möge es kaum für möglich halten, echt manchmal notwendig ist weil das Teil einfach abgekackt ist).

In der IPMIUTIL-Doku gibts das CMD Kommando mit dem man raw commands ausführen kann, die notwendigen Parameter sind wie folgt beschrieben:

PARAMETERS
The  following  parameters  are used by icmd.  Each is represented as a two-digit hex byte.  The parameters have no default values.

bus    This byte contains the bus number for this command, usually  00.

rsSa   This is the resource slave address, usually 0x20 for the BMC.

netFn/lun
       This  byte  combines  the net Function and Lun.  The 2 low-order
       bits are the Lun and the 6 high-order bits are the net Function.
       This representation is consistent with the DOS CMDTOOL/IPMITOOL.

cmd    This byte contains the IPMI command.

[data bytes]
       This is a sequence of zero to 16 bytes that represent data bytes
       specific to this command.

00 20 ist also schon mal klar. netFn/lun ist etwas tricky aber wer sich durch IPMI Spezifikation gewühlt hat wird fündig:

  • In Abschnitt 19.3. finden wir den Hinweis dass die mandatory commands mit LUN 0x00 abgesetzt werden müssen.
  • In Abschnitt 5.1. finden wir die Network Function Codes, 0x06 ist hier für “App” definiert
  • Im Appendix G finden wir in der Tabelle unter “IPM Device Global Commands” die Werte für Cold und Warm Reset (0x02 bzw. 0x03) – als NetFn steht dort “App” (also 0x06 wie wir aus 5.1. wissen)

D.h. wir fummeln 0x00 (LUN) und 0x06 (um 2 Bit geshifted) zusammen, bekommen also binär 0001 1000 = hex 18 für netFn/lun raus.

Alles zusammen sieht das Kommando für einen remote Kaltstart also so aus:

ipmiutil cmd -N meinbmc -U meinuser -P meinpw -V 4 00 20 18 02

(-V 4 brauchen wir weil in der Tabelle in Appendix G ein Kreuzerl bei “A” steht – und -V 4 heißt “Administrator Level aktivieren”)

Voll easy, ey 😀