Home | History | Annotate | only in /sfw/usr/src/cmd/ipmitool/ipmitool-1.8.10
Up to higher level directory
NameDateSize
aclocal.m407-Aug-2008244.1K
AUTHORS23-Aug-2005150
ChangeLog07-Aug-200812.4K
config.guess22-Nov-200541.1K
config.h.in07-Aug-20085.4K
config.sub22-Nov-200529.5K
configure07-Aug-2008806.8K
configure.in07-Aug-200817K
contrib/07-Aug-2008
control/07-Aug-2008
COPYING19-Mar-20061.5K
debian/07-Aug-2008
depcomp07-Aug-200815.5K
doc/07-Aug-2008
include/07-Aug-2008
install-sh07-Aug-20089K
ipmitool.spec07-Aug-200814.7K
lib/07-Aug-2008
ltmain.sh22-Nov-2005181.4K
Makefile.am23-Feb-20073K
Makefile.in07-Aug-200822.6K
missing07-Aug-200810.6K
README06-Jan-200512.4K
src/07-Aug-2008

README

      1 
      2                               ipmitool
      3                             Duncan Laurie
      4                          duncan (a] iceblink.org
      5 
      6 Overview
      7 ========
      8 ipmitool is a utility for managing and configuring devices that support
      9 the Intelligent Platform Management Interface.  IPMI is an open standard
     10 for monitoring, logging, recovery, inventory, and control of hardware
     11 that is implemented independent of the main CPU, BIOS, and OS.  The
     12 service processor (or Baseboard Management Controller, BMC) is the brain
     13 behind platform management and its primary purpose is to handle the
     14 autonomous sensor monitoring and event logging features.
     15 
     16 The ipmitool program provides a simple command-line interface to this BMC.
     17 It features the ability to read the sensor data repository (SDR) and print
     18 sensor values, display the contents of the System Event Log (SEL), print
     19 Field Replaceable Unit (FRU) inventory information, read and set LAN
     20 configuration parameters, and perform remote chassis power control.
     21 
     22 
     23 Background
     24 ==========
     25 I originally wrote ipmitool while between projects and employeed at Sun
     26 Microsystems.  Sun had just embarked on a new line of general-purpose x86
     27 servers that inclued an OEM Intel board with an IPMIv1.5 BMC on board.
     28 It started with an idea that remote chassis power control would be a handy
     29 feature for my systems in the lab and from there it grew into a multi-
     30 purpose tool that lots of people found useful.  I decided to release it
     31 under a BSD license and give others the chance to make use of it.
     32 
     33 ipmitool was not written to provide large-scale (aka Enterprise) management
     34 application functionality.  The functionality that ipmitool proivides is
     35 easily accomplished by sending simple IPMI request messages and parsing
     36 the returned response.  It is intended to be used by system administrators
     37 who like the simplicity and scriptability of command-line utilities, as
     38 well as those debugging or developing their own BMC implementations.
     39 
     40 
     41 Requirements
     42 ============
     43 Obviously the largest requirement is hardware with a service processor
     44 that supports the IPMI specification.  Many x86-based servers are now
     45 comming with IPMI support, check with your preferred hardware vendor
     46 about available prodcuts.
     47 
     48 Once you are certain you have the required hardware, you then need to
     49 decide how you want to access the BMC.  The most common case involve
     50 access through the System Interface or over the LAN.  (or serial, but
     51 currently ipmitool does not support the serial interface)
     52 
     53 
     54 System Interface
     55 ----------------
     56 There are multiple types of system interfaces, but they are all similar
     57 enough to allow a single well-designed driver to support them all.  
     58 Different types of system interfaces include Keyboard Controller Style
     59 (KCS), Block Transfer (BT), System Management Interface Chip (SMIC) and
     60 SMBus.  Different hardware vendors will have different preference and
     61 implementations.
     62 
     63 On Linux the OpenIPMI kernel driver should support all of these system
     64 interfaces and it should be a simple matter of loading the right
     65 kernel modules and setting up the device node to use it.  The driver
     66 module names vary slightly in different kernel versions, but for all
     67 releases you need these two modules:
     68 
     69   ipmi_msghandler: incoming and outgoing message handler
     70   ipmi_devintf: character device interface to IPMI driver
     71 
     72 For 2.4.x and early 2.6.x kernels you need to choose a module based on
     73 the type of system interface your hardware supports.  For example:
     74 
     75   ipmi_kcs_drv: Keyboard Controller Style driver
     76 
     77 More recent 2.6.x kernels have combined these into a single module:
     78 
     79   ipmi_si: a universal IPMI system interface driver
     80 
     81 See the documentation that comes with your distribution and/or kernel
     82 for more information on what kernel modules are required.  Once the
     83 required modules are loaded and the driver has found a suitable system
     84 interface to the BMC then you need to ensure the device node at
     85 /dev/ipmi0 is pointing at the correct major number.
     86 
     87 This is because OpenIPMI is given a dynamically assigned major number
     88 when it is loaded, but depending on what other modules are present
     89 this number may be anywhere from 254 on down.  The easiest way to tell
     90 is to check the output of /proc/devices and see what major number the
     91 "ipmidev" device is assigned to.
     92 
     93 There is a sample script included with ipmitool called ipmi.init that
     94 can be used to automate this process at bootup.
     95 
     96 
     97 LAN Interface
     98 -------------
     99 This is often referred to as "IPMI-over-LAN" and defines how IPMI messages
    100 can be sent to and from the BMC encapsulated in Remote Management Control
    101 Protocol (RMCP) packets which are then transferred as UDP datagrams.
    102 
    103 IPMI-over-LAN is only supported with version 1.5 and higher of the IPMI
    104 specification.  The RMCP packet format is defined by the Alert Standard
    105 Forum, and it has been followed up with the RMCP+ protocol that adds
    106 encryption and payload support.  The IPMIv2 specification was updated
    107 accordingly to to support the RMCP+ protocol and brings with it enhanced
    108 security with encryption as well as support for Serial over LAN.
    109 
    110 There are different types of LAN interfaces as well.  Some systems have
    111 shared management networks where the NIC will intercept UDP packets to
    112 port 623 and redirect them to the BMC over SMBUS.  This type of LAN
    113 interface requires that the BMC be configured with the same settings that
    114 the system uses.  It also suffers from an increased security risk just by
    115 the nature of sharing that interface with normal traffic.
    116 
    117 I have also seen bugs in some implementations that have rendered the
    118 IPMI-over-LAN feature "dangerous" to enable in some situations.  (in
    119 particular there can be an issue with RPC because it will sometimes choose
    120 to use port 623 and you will lose response packets...)
    121 
    122 There is a sample shell script included with ipmitool called bmclanconf
    123 that can be used to simplify the LAN settings configuration process using
    124 the System Interface to configure the settings.  In some cases the
    125 hardware will come with a utility (often a DOS bootable CD) for configuring
    126 enabling the LAN interface as well.
    127 
    128 In order to support the IPMIv2.0 interface you must have an OpenSSL library
    129 with the required encrytion functions.  Recent distributions should have
    130 no problems.  The IPMIv1.5 interface will attempt to use OpenSSL for MD5
    131 hash function at compile time but if that is not found it will use an
    132 internal library.
    133 
    134 
    135 Usage
    136 =====
    137 All invocations of ipmitool require specifying an interface to use, unless
    138 you want to use the default interface as set at compile time.  Each call
    139 must also specify a command to run.  You can see the list of supported
    140 interfaces and which is default as well as a list of top level commands in
    141 the usage output available with the -h option:
    142 
    143 usage: ipmitool [options...] <command>
    144 
    145    -h            This help
    146    -V            Show version information
    147    -v            Verbose (can use multiple times)
    148    -c            Display output in comma separated format
    149    -I intf       Interface to use
    150    -H hostname   Remote host name for LAN interface
    151    -p port       Remote RMCP port [default=623]
    152    -L level      Remote session privilege level [default=USER]
    153    -A authtype   Force use of authtype NONE, PASSWORD, MD2 or MD5
    154    -U username   Remote session username
    155    -P password   Remote session password
    156    -f file       Read remote session password from file
    157    -a            Prompt for remote password
    158    -E            Read password from IPMI_PASSWORD environment variable
    159    -m address    Set local IPMB address
    160    -t address    Bridge request to remote target address
    161 
    162 Interfaces:
    163     open         Linux OpenIPMI Interface [default]
    164     imb          Intel IMB Interface
    165     lan          IPMI v1.5 LAN Interface
    166     lanplus      IPMI v2.0 RMCP+ LAN Interface
    167 
    168 Commands:
    169     raw          Send a RAW IPMI request and print response
    170     lan          Configure LAN Channels
    171     chassis      Get chassis status and set power state
    172     event        Send pre-defined events to BMC
    173     bmc          Print BMC status and configure global enables
    174     sdr          Print Sensor Data Repository entries and readings
    175     sensor       Print detailed sensor information
    176     fru          Print built-in FRU and scan SDR for FRU locators
    177     sel          Print System Evelnt Log
    178     sol          Configure IPMIv2.0 Serial-over-LAN
    179     user         Configure BMC users
    180     channel      Configure BMC channels
    181     session      Print session information
    182     shell        Launch interactive IPMI shell
    183     exec         Run list of commands from file
    184     set          Set runtime variable for shell and exec
    185 
    186 
    187 Commands
    188 ========
    189 More help on the supported commands can be found by running them with the
    190 help argument, for example "chassis help".  There are a few commands with
    191 special meaning:
    192 
    193 > shell:  This command will launch an shell interface to the ipmitool
    194   command set.  You can use this for interactively entering commands to
    195   monitor system status.  An example session:
    196 
    197 # ipmitool -I open shell
    198 ipmitool> chassis status
    199 System Power         : off
    200 Power Overload       : false
    201 Power Interlock      : inactive
    202 Main Power Fault     : false
    203 Power Control Fault  : false
    204 Power Restore Policy : always-off
    205 Last Power Event     : command
    206 Chassis Intrusion    : active
    207 Front-Panel Lockout  : inactive
    208 Drive Fault          : false
    209 Cooling/Fan Fault    : false
    210 ipmitool> user list 7
    211 ID  Name             Callin  Link Auth  IPMI Msg   Channel Priv Limit
    212 1                    true    false      true       ADMINISTRATOR
    213 ipmitool> exit
    214 
    215 > exec:  This command will read a text file and execute ipmitool commands
    216   in sequence.  It can be used for scriptable commands:
    217 
    218 # cat lansetup.scr
    219 lan set 7 ipsrc static
    220 lan set 7 ipaddr 10.1.1.10
    221 lan set 7 netmask 255.255.255.0
    222 lan set 7 defgw ipaddr 10.1.1.254
    223 # ipmitool -I open exec lansetup.scr
    224 Setting LAN IP Address to 10.1.1.10
    225 Setting Lan Subnet Mask to 255.255.255.0
    226 Setting Lan Default Gateway IP to 10.1.1.254
    227 
    228 > set:  This command can be used by the shell and exec modes to configure
    229   various session parameters:
    230 
    231   hostname <host>        Session hostname
    232   username <user>        Session username
    233   password <pass>        Session password
    234   privlvl <level>        Session privilege level force
    235   authtype <type>        Authentication type force
    236   localaddr <addr>       Local IPMB address
    237   targetaddr <addr>      Remote target IPMB address
    238   port <port>            Remote RMCP port
    239   csv [level]            enable output in comma separated format
    240   verbose [level]        Verbose level
    241 
    242 # cat getstatus.scr
    243 set hostname sf-v20z-1
    244 set password admin
    245 chassis status
    246 # ipmitool -I lan exec getstatus.scr
    247 Set session hostname to lx50
    248 Set session password
    249 System Power         : off
    250 Power Overload       : false
    251 Power Interlock      : inactive
    252 Main Power Fault     : false
    253 Power Control Fault  : false
    254 Power Restore Policy : always-off
    255 Last Power Event     : command
    256 Chassis Intrusion    : active
    257 Front-Panel Lockout  : inactive
    258 Drive Fault          : false
    259 Cooling/Fan Fault    : false
    260 
    261 
    262 ipmievd
    263 =======
    264 Included with ipmitool is another utility called ipmievd that is a daemon
    265 which will listen for events from the BMC that are being sent to the SEL
    266 and also log those messages to syslog.  By default when run (as root) with
    267 no arguments it will daemonize and poll on the OpenIPMI device waiting for
    268 an event notification.  Upon receipt of an event it will log it to syslog
    269 with the LOG_LOCAL4 facility.  You can test ipmievd by sending test events
    270 over the LAN interface with ipmitool:
    271 
    272 remote# ipmievd
    273 
    274 local$ ipmitool -I lan -H lx50 -P admin event help
    275 usage: event <num>
    276    1 : Temperature - Upper Critical - Going High
    277    2 : Voltage Threshold - Lower Critical - Going Low
    278    3 : Memory - Correctable ECC
    279 local$ ipmitool -I lan -H lx50 -P admin event 1
    280 Sending Temperature - Upper Critical - Going High event to BMC
    281 local$ ipmitool -I lan -H lx50 -P admin event 2
    282 Sending Voltage Threshold - Lower Critical - Going Low event to BMC
    283 local$ ipmitool -I lan -H lx50 -P admin event 3
    284 Sending Memory - Correctable ECC event to BMC
    285 
    286 remote# tail /var/log/messages   (timestamps removed)
    287 ipmievd: Waiting for events...
    288 ipmievd: Temperature Sensor 30 - Upper Critical - going high
    289 ipmievd: Voltage Sensor 60 - Lower Critical - going low
    290 ipmievd: Memory Sensor 01 - Correctable ECC
    291 
    292 
    293 Resources
    294 =========
    295 IPMItool homepage
    296 http://ipmitool.sourceforge.net
    297 
    298 IPMItool manpage
    299 http://ipmitool.sourceforge.net/manpage.html
    300 
    301 IPMItool overview paper from Linux.conf.au 2004
    302 http://ipmitool.sourceforge.net/lca2004_ipmitool.pdf
    303 
    304 Intelligent Platform Management Interface specification
    305 http://www.intel.com/design/servers/ipmi/spec.htm
    306 
    307 OpenIPMI project: Linux IPMI kernel driver and userland library
    308 http://openipmi.sourceforge.net
    309 
    310