go-ipmi is a pure golang native IPMI library. It DOES NOT wraps ipmitool
.
import (
"fmt"
"github.com/bougou/go-ipmi"
)
func main () {
host := "10.0.0.1"
port := 623
username := "root"
password := "123456"
client , err := ipmi .NewClient (host , port , username , password )
// Support local mode client if runs directly on linux
// client, err := ipmi.NewOpenClient()
if err != nil {
panic (err )
}
// you can optionally open debug switch
// client.WithDebug(true)
// you can set interface type, enum range: open/lan/lanplus/tool, default open
// client.WithInterface(ipmi.InterfaceLanplus)
// Connect will create an authenticated session for you.
if err := client .Connect (); err != nil {
panic (err )
}
// Now you can execute other IPMI commands that need authentication.
res , err := client .GetDeviceID ()
if err != nil {
panic (err )
}
fmt .Println (res .Format ())
selEntries , err := client .GetSELEntries (0 )
if err != nil {
panic (err )
}
fmt .Println (ipmi .FormatSELs (selEntries , nil ))
}
Functions Comparision with ipmitool
Each command defined in the IPMI specification is a pair of request/response messages.
These IPMI commands are implemented as methods of the ipmi.Client
struct in this library.
Some ipmitool
cmdline usages are implemented by calling just one IPMI command,
but others are not. Like ipmitool sdr list
, it's a loop of GetSDR
IPMI command.
So this library also implements some methods that are not IPMI commands defined
in IPMI sepcification, but just some common helpers, like GetSDRs
to get all SDRs.
These methods are marked with an asterisk (*)
after the method name in the following docs.
The implementation logic of IPMI commands is almost same. See Contributing
More commmands are ongoing ...
IPM Device Global Commands
Method
Status
corresponding ipmitool usage
GetDeviceID
✓
mc info
ColdReset
✓
mc reset cold
WarmReset
✓
mc reset warm
GetSelfTestResults
✓
mc selftest, chassis selftest
ManufacturingTestOn
✓
SetACPIPowerState
✓
GetACPIPowerState
✓
GetDeviceGUID
✓
GetNetFnSupport
✓
GetCommandSupport
✓
GetCommandSubfunctionSupport
GetConfigurableCommands
✓
GetConfigurableCommandSubfunctions
SetCommandEnables
GetCommandEnables
✓
GetCommandSubfunctionsEnables
✓
GetSubfunctionsEnables
GetOEMNetFnIanaSupport
BMC Watchdog Timer Commands
Method
Status
corresponding ipmitool usage
ResetWatchdogTimer
✓
mc watchdog reset
SetWatchdogTimer
✓
GetWatchdogTimer
✓
mc watchdog get
BMC Device and Messaging Commands
Method
Status
corresponding ipmitool usage
SetBMCGlobalEnables
✓
GetBMCGlobalEnables
✓
ClearMessageFlags
✓
GetMessageFlags
✓
EnableMessageChannelReceive
✓
GetMessage
✓
SendMessage
✓
ReadEventMessageBuffer
✓
GetBTInterfaceCapabilities
GetSystemGUID
✓
mc guid
SetSystemInfoParameters
GetSystemInfoParameters
GetChannelAuthCapabilities
✓
GetSessionChallenge
✓
ActivateSession
✓
SetSessionPrivilegeLevel
✓
CloseSession
✓
GetSessionInfo
✓
session info
GetAuthCode
✓
SetChannelAccess
✓
channel setaccess
GetChannelAccess
✓
channel info/getaccess
GetChannelInfo
✓
channel info
SetUserAccess
✓
GetUserAccess
✓
user summary
GetUsers (*)
✓
user list
SetUsername
✓
user set name
DisableUser (*)
✓
user disable
EnableUser (*)
✓
user enable
GetUsername
✓
SetUserPassword
✓
user set password
TestUserPassword (*)
✓
user test
ActivatePayload
DeactivatePayload
GetPayloadActivationStatus
GetPayloadInstanceInfo
SetUserPayloadAccess
GetUserPayloadAccess
GetChannelPayloadSupport
GetChannelPayloadVersion
GetChannelOEMPayloadInfo
MasterWriteRead
GetChannelCipherSuites
✓
SuspendOrResumeEncryption
SetChannelCipherSuites
GetSystemInterfaceCapabilities
✓
Method
Status
corresponding ipmitool usage
GetChassisCapabilities
✓
GetChassisStatus
✓
chassis status, chassis power status
ChassisControl
✓
chassis power on/off/cycle/reset/diag/soft
ChassisReset
✓
ChassisIdentify
✓
chassis identify
SetChassisCapabilities
✓
SetPowerRestorePolicy
✓
chassis policy list/always-on/previous/always-off
GetSystemRestartCause
✓
chassis restart_cause
SetSystemBootOptions
✓
chassis bootparam set
SetBootParamBootFlags (*)
✓
chassis bootdev
GetSystemBootOptions
✓
chassis bootparam get
SetFrontPanelEnables
✓
SetPowerCycleInterval
✓
GetPOHCounter
✓
chassis poh
Method
Status
corresponding ipmitool usage
SetEventReceiver
✓
GetEventReceiver
✓
PlatformEventMessage
✓
PEF and Alerting Commands
Method
Status
corresponding ipmitool usage
GetPEFCapabilities
✓
pef capabilities
ArmPEFPostponeTimer
SetPEFConfigParameters
GetPEFConfigParameters
SetLastProcessedEventId
GetLastProcessedEventId
AlertImmediate
PEFAck
Method
Status
corresponding ipmitool usage
GetDeviceSDRInfo
✓
GetDeviceSDR
✓
ReserveDeviceSDRRepo
✓
GetSensorReadingFactors
✓
SetSensorHysteresis
✓
GetSensorHysteresis
✓
SetSensorThresholds
✓
GetSensorThresholds
✓
SetSensorEventEnable
GetSensorEventEnable
✓
RearmSensorEvents
GetSensorEventStatus
✓
GetSensorReading
✓
SetSensorType
✓
GetSensorType
✓
SetSensorReadingAndEventStatus
✓
GetSensors (*)
✓
sensor list
GetSensorByID (*)
✓
GetSensorByName (*)
✓
sensor get
Method
Status
corresponding ipmitool usage
GetFRUInventoryAreaInfo
✓
ReadFRUData
✓
WriteFRUData
✓
GetFRU (*)
✓
fru print
GetFRUs (*)
✓
fru print
Method
Status
corresponding ipmitool usage
GetSDRRepoInfo
✓
sdr info
GetSDRRepoAllocInfo
✓
sdr info
ReserveSDRRepo
GetSDR
✓
GetSDRs (*)
✓
GetSDRBySensorID (*)
✓
GetSDRBySensorName (*)
✓
AddSDR
PartialAddSDR
DeleteSDR
ClearSDRRepo
GetSDRRepoTime
SetSDRRepoTime
EnterSDRRepoUpateMode
ExitSDRRepoUpdateMode
RunInitializationAgent
Method
Status
corresponding ipmitool usage
GetSELInfo
✓
sel info
GetSELAllocInfo
✓
sel info
ReserveSEL
✓
GetSELEntry
✓
AddSELEntry
✓
PartialAddSELEntry
DeleteSELEntry
✓
ClearSEL
✓
sel clear
GetSELTime
✓
SetSELTime
✓
GetAuxLogStatus
SetAuxLogStatus
GetSELTimeUTCOffset
✓
SetSELTimeUTCOffset
✓
Method
Status
corresponding ipmitool usage
SetLanConfigParams
GetLanConfigParams
✓
GetLanConfig (*)
✓
lan print
SuspendARPs
✓
GetIpStatistics
✓
Serial/Modem Device Commands
Method
Status
corresponding ipmitool usage
SetSerialConfig
GetSerialConfig
SetSerialMux
GetTapResponseCodes
SetPPPTransmitData
GetPPPTransmitData
SendPPPPacket
GetPPPReceiveData
SerialConnectionActive
Callback
SetUserCallbackOptions
GetUserCallbackOptions
SetSerialRoutingMux
SOLActivating
✓
GetSOLConfigParams
✓
SetSOLConfigParams
✓
SOLInfo
✓
sol info
Command Forwarding Commands
Method
Status
corresponding ipmitool usage
Fowarded
SetForwarded
GetForwarded
EnableForwarded
Bridge Management Commands (ICMB)
Method
Status
corresponding ipmitool usage
GetBridgeState
SetBridgeState
GetICMBAddress
SetICMBAddress
SetBridgeProxyAddress
GetBridgeStatistics
GetICMBCapabilities
ClearBridgeStatistics
GetBridgeProxyAddress
GetICMBConnectorInfo
GetICMBConnectionID
SendICMBConnectionID
Discovery Commands (ICMB)
Method
Status
corresponding ipmitool usage
PrepareForDiscovery
GetAddresses
SetDiscovered
GetChassisDeviceId
SetChassisDeviceId
Method
Status
corresponding ipmitool usage
BridgeRequest
BridgeMessage
Method
Status
corresponding ipmitool usage
GetEventCount
SetEventDestination
SetEventReceptionState
SendICMBEventMessage
GetEventDestination
GetEventReceptionState
Method
Status
corresponding ipmitool usage
ErrorReport