LMI metacommand is a command line utility build on top of client-side libraries. It can not do much on its own. Its functionality is extended by commands that are installed separately. Each command operates on a set of providers that need to be installed on managed machine. Commands can be invoked directly from shell or within interactive mode.

Running from command line

It can run single command given on command line like this:

lmi -h ${hostname} service list --all

Getting help

For detailed help run:

lmi --help

To get a list of available commands with short descriptions:

lmi help

For help on a particular registered command:

lmi help service

Interactive mode

Or it can be run in interactive mode when command is omitted:

$ lmi -h ${hostname}
lmi> help
lmi> sw search django
lmi> sw install python-django
lmi> exit

help command is always your good friend. Following two lines gets you the same help message:

lmi> help storage raid
lmi> storage raid --help

Built-in commands

Interactive mode comes with few special commands not available from command line. To get their list, type:

lmi> : help

They are prefixed with : and optional space. Currently only namespace nesting commands are supported. Those are :cd, :.. and :pwd.

They work as expected:

lmi> :pwd                       # top-level namespace
lmi> :cd storage                # you can do storage specific stuff here
>storage> :pwd
>storage> :cd raid              # we don't care about anything but raid
>>raid> :pwd
>>raid> :cd /lmi/sw             # let's manage packages now
>sw> :..

Static commands

Aren’t prepended with : and except for help are again available only in interactive mode.

EOF Same as hitting ^D. If some nested into some command’s namespace, it will map to :cd .. and parent namespace will become active. If the top-level namespace is active, program will exit.
exit Exits immediately. It accepts optional exit code as an argument.
help Lists available commands. Accepts command path as an optional argument.

Extending metacommand

In order to make the LMI metacommand useful, you’ll need to install some commands. If you run Fedora, the easiest way to get them is with your favorite package manager:

sudo dnf install 'openlmi-scripts-*'


On RHEL you’ll need to add EPEL to your repositories before installing them with yum.

They will be automatically discovered by LMI metacommand. You can ensure their presence with this simple test:

$ lmi help
  file     - File and directory management functions.
  group    - POSIX group information and management.
  help     - Print the list of supported commands with short description.
  hwinfo   - Display hardware information.
  journald - Test for provider version requirements
  locale   - System locale management.
  net      - Networking service management.
  power    - System power state management.
  service  - System service management.
  sssd     - SSSD system service management.
  storage  - Basic storage device information.
  sw       - System software management.
  system   - Display general system information.
  user     - POSIX user information and management.

For more informations about particular command type:
    help <command>

As Python eggs

They may be installed on any distribution. Go for them also if you want to be more up to date. They are available for download from PyPI. The easiest way to install them is with pip (shipped with python-pip package):

pip search openlmi-scripts
pip install --user openlmi-scripts-{hardware,system,service,storage}

Bleeding edge

Commands are available from our git repository. Follow instructions there to install the most up to date versions.