Skip to content

li-you-ning/go-ipmi

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

go-ipmi

go-ipmi is a pure golang native IPMI library. It DOES NOT wraps ipmitool.

Usage

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

Chassis Device Commands

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

Event Commands

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

Sensor Device Commands

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

FRU Device Commands

Method Status corresponding ipmitool usage
GetFRUInventoryAreaInfo
ReadFRUData
WriteFRUData
GetFRU (*) fru print
GetFRUs (*) fru print

SDR Device Commands

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

SEL Device Commands

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

LAN Device Commands

Method Status corresponding ipmitool usage
SetLanConfigParams
GetLanConfigParams
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

Bridging Commands (ICMB)

Method Status corresponding ipmitool usage
BridgeRequest
BridgeMessage

Event Commands (ICMB)

Method Status corresponding ipmitool usage
GetEventCount
SetEventDestination
SetEventReceptionState
SendICMBEventMessage
GetEventDestination
GetEventReceptionState

Other Bridge Commands

Method Status corresponding ipmitool usage
ErrorReport

Reference

About

IPMI library in pure Go

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 99.7%
  • Makefile 0.3%