ipmi_cmdlang(7) Shell interface to an IPMI system ipmi_cmdlang(7) NAME ipmi_cmdlang - A command language interface to the IPMI library DESCRIPTION ipmi_cmdlang is a command language designed to supply the full power of OpenIPMI on a command line. It has a large number of commands and well-formed responses to each command. Note that this assumes some knowledge of OpenIPMI and how it works; you can get that from the IPMI document that comes with OpenIPMI. ipmish starts up with no connections or anything of that nature. You must enter commands to make connections to domains. Then you can enter commands to manipulate those domains or objects inside those domains. Note that you may use quotes, either '' or to contain parameters with spaces. COMMENTS Lines with a # character in the first column are ignored. OBJECTS In the command language, you will deal with various objects like sensors, controls, domains, and entities. Each of these has a name. The name of the domain is assigned by the user in the domain new command, all the other names are based on the domain name of the domain they belong to and various attributes about the object. These names are all well-formed. They are - A name of a domain. Each registered domain in a system has a name assigned by the user. - Entity names are in the form: [[()]] Notice that the is optional. If it is not listed, then the operation is done on all entities in the domain. The whole thing is optional, too, if nothing is given then the operation is done on every entity in every domain. The is either . for system-relative entities, or: r... for device-relative entities. In IPMI, device-relative entity instances always start at 0x60; the specification suggests that you subtract off the 0x60 from the entity instance when displaying these; the command language follows this suggestion. - These come in the form [[.name]] As with entities, only listing a domain will cause the operation to be done on every sensor in the domain, just listing an entity will cause it to be done to every sensor in that entity. An empty sensor entry will cause an operation to be done on every sensor in every domain. - These come in the form [[.name]] These work exactly like sensors. - A management controller. These come in the form [[(.)]] As usual, the parts left empty will cause defaulting to all things in the previously specified parts. - A connection number, in the form [[.]] The number is the connection number of the domain. - A platform event trap id, in the form [[.]] The number is arbitrarily assigned by the system. - A LAN parameter id, in the form [[.]] The number is arbitrarily assigned by the system. - A PEF id, in the form [[.]] The number is arbitrarily assigned by the system. - A FRU id, in the form [[.]] The number is arbitrarily assigned by the system. In all cases, the object names have parts that are optional, and the entire object name is optional. If a part is left empty, then all objects that are part of the specified parts are operated on. For instance, if the system has a sensor named d1(7.1).temp then specifying d1 would operation on all sensors in the domain named d1. Specifying d1(7.1) Would operation on all sensors in that entity. Specifying an empty name, either with or by just entering nothing if the object is the last thing in the command's parameters. Note this optionality gives a lot of power, but can be very dangerous. Entering domain close will close every domain, for instance. In commands, every object operated on will generate a response for that object. If no object is operated on, the command will produce an error. OTHER PARAMETERS The commands and displays use a variety of other parameters for specifying various IPMI things. - a 16-byte globally unique ID, all globbed together in one big hexadecimal thing. is a threshold for a sensor; the value it must go over/under to generate an event. It is always displayed as one of lower non-critical lower critical lower non-recoverable upper non-critical upper critical upper non-recoverable. It may be entered as one of the above, or as ln, lc, lr, un, uc, ur as a short form. is the enable for a threshold. It is like above, but also has a going-high or going-low and an assertion or deassertion appended to the end of the name. The short form will have a l or h for going-low and going high and then a a or d appended for assertion and deassertion So for instance, urld is upper non-recoverable going-low deassertion. is the enable or disable for a discrete sensor and is specified with the sensor offset. The long form is assertion or deassertion and the short form is [ad] where the number is the offset and [ad] means assertion or deassertion. is one of not_present, inactive activation_requested activation_in_progress active deactivation_requested deactivation_in_progress or out_of_con. is one of black, white, red, green blue yellow or orange. is one of true, on, t, or 1 for true and one of false, off, f, or 0 for false. Output is always true or false. COMMANDS The command language is hierarchical, meaning that commands may have subcommands, and subcommands may have subsubcommands, etc. So, for instance, the command to create a domain is domain new. The command to list all sensors in a domain named domain1 is sensor list domain1. Each command has a reponse for each object operated on, which is listed after the command description. In those responses, anything that begins with a % is optional. Entries of the form **name** refer to object info descriptions that are listed in the object info section. If an entry has two '.' indented one space below it, then that entry may occur zero or more times. Each section below defines the unique subcommands of a main command. Help for any command is available with: help command [subcommand [...]] - Help for any command. Some commands are common to almost all subcommands. These are: list - List all objects of the specified type that are contained in the specified object. For instance, control list will list all controls in the given entity. Response: Name: . . info - List static information about the given object. Response: Name: **object info** domain These commands deal with domain objects. new [] - Open a connection to a new domain. are either: lan [ ] for a RMCP LAN connection or smi for a system interface connection. Note that is listed twice (second one is optional); if the system support it you can make two connections to two independent management controllers in the system. Note that this is not for multiple IP addresses to the same BMC. For that, notice that the LAN connection has an options extra IP and port for the second IP address. OpenIPMI supports these IP addresses and connection, detecting failures, switching between addresses, and other fault-tolerant things. It does this transparently to the user. Mutiple connections may require special OEM support, read the documentation about your specific system if you need this. The is the IP address or host name of the LAN-capable BMC to connect with. The is generally 623. is the authentication type, either md5, md2, straight, or none. is the authentication level, either admin, operator or user. and are the user name and password of the IPMI user to use for the connection. The is the driver number, generally 0. Options enable and disable various automitic processing and are: -[no]all - all automatic handling. This will override the other processing options and turn them all on. This is true by default. -[no]sdrs - sdr fetching. This turns on fetching SDRs when they are found. This is false by default. -[no]frus - FRU fetching This turns on fetching FRU information when it is found. This is false by default. -[no]sel - SEL fetching. This turns on fetching SELs when they are found. This is false by default. -[no]ipmbscan - IPMB bus scanning. This turns on scanning IPMB busses when they are found. This is false by default. -[no]oeminit - enable or disable special OEM processing (like ATCA). -[no]seteventrcvr - setting event receivers. Note that setting event receivers and waiting til up is not affected by the -all option. If this is true (the default) then OpenIPMI will attempt to set the event receiver for an MC it finds that does not have it set to a valid destination. -wait_til_up - wait until the domain is up before returning Note that if you specify this and the domain never comes up, you will never get a prompt. This is not affected by the -all option. By default -all and -seteventrcvr are true, which turns everything on. Response: Domain Created: open [] - Open a connection to a new domain. are either: lan [-U ] [-P ] [-A ] [-L ] [-s] [-p[2] ] [-Ra ] [-Ri ] [-Rc ] [-Rl] [-Rk ] [-H ] [-M ] [] for a RMCP/RMCP+ LAN connection or smi for a system interface connection. Note that is listed twice (second one is optional); if the system support it you can make two connections to two independent management controllers in the system. Note that this is not for multiple IP addresses to the same BMC. For that, use the -s option and the second IP (and -p2) for the second IP address. OpenIPMI supports these IP addresses and connections, detecting failures, switching between addresses, and other fault- tolerant things. It does this transparently to the user. Multiple connections may require special OEM support, read the documentation about your specific system if you need this. The is the IP address or host name of the LAN-capable BMC to connect with. The defaults 623. is the authentication type, either rmcp+, md5, md2, straight, or none. It defaults to the best authentication supported by the server. is the authentication level, either admin, operator or user. It defaults to admin. and are the user name and password of the IPMI user to use for the connection. For RMCP+ connections, the authentication algorithms supported (-Ra) are: bmcpick, rakp_none, rakp_hmac_sha1, and rakp_hmac_md5. The integrity algorithms (-Ri) supported are: bmcpick, none, hmac_sha1, hmac_md5, and md5. The confidentiality algorithms (-Rc) are: bmcpick, aes_cbc_128, xrc4_128, and xrc_40. The defaults are rackp_hmac_sha1, hmac_sha1, and aes_cb_128. -Rl turns on lookup up names by the name and the privilege level (allowing the same name with different privileges and different passwords), the default is straight name lookup. -Rk sets the BMC key, needed if the system does two-key lookups. For SMI types, the is the driver number, generally 0. The enables certain hacks for broken platforms. This may be listed multiple times to enable multiple hacks. The currently available hacks are: intelplus - For Intel platforms that have broken RMCP+. rakp3_wrong_rolem - For systems that truncate role(m) in the RAKP3 msg. rmcpp_integ_sik - For systems that use SIK instead of K(1) for integrity. The -M option sets the maximum outstanding messages. The default is 2, ranges 1-63. Options enable and disable various automitic processing and are: -[no]all - all automatic handling. This will override the other processing options and turn them all on. This is true by default. -[no]sdrs - sdr fetching. This turns on fetching SDRs when they are found. This is false by default. -[no]frus - FRU fetching This turns on fetching FRU information when it is found. This is false by default. -[no]sel - SEL fetching. This turns on fetching SELs when they are found. This is false by default. -[no]ipmbscan - IPMB bus scanning. This turns on scanning IPMB busses when they are found. This is false by default. -[no]oeminit - enable or disable special OEM processing (like ATCA). -[no]seteventrcvr - setting event receivers. Note that setting event receivers is not affected by the -all option. If this is true (the default) then OpenIPMI will attempt to set the event receiver for an MC it finds that does not have it set to a valid destination. -[no]setseltime - set SEL time. Note that setting the SEL time is not affected by the -all option. If this is true (the default) then OpenIPMI will attempt to set the time in the SELs it finds. It will set it to the current system time. -wait_til_up - wait until the domain is up before returning Note that if you specify this and the domain never comes up, you will never get a prompt. This is not affected by the -all option. By default -all and -seteventrcvr are true, which turns everything on. Response: Domain Created: fru - dump a fru given all it's insundry information. Response: Domain Name: FRU **FRU INFO** msg [data...] - Send a command to the given IPMB address on the given channel and display the response. Note that this does not require the existance of an MC in OpenIPMI. Response: Domain: channel: ipmb: LUN: NetFN: command: Data: scan [ipmb addr] - scan an IPMB to add or remove it. If a range is given, then scan all IPMBs in the range. Response: Scan done: rescan_sels - Rescan all the SELs in the domain. Response: SEL Rescan done: presence - Audit the presence of all enities in the domain. Note that this just starts the process; it will run in the background. Response is: Presence check started: close - close the given domain. Response: Domain closed: sel_rescan_time