The klish is a framework for implementing a CISCO-like CLI on a UNIX systems. It is configurable by XML files. The KLISH stands for Kommand Line Interface Shell. I know that "command" starts with "c" :) .
The klish is a fork of clish 0.7.3 project (http://sourceforge.net/projects/clish/) developed by Graeme McKerrell. Klish has a series of new features, but it's compatible (as much as possible) with clish's XML configuration files.
The klish development is sponsored by "Factor-TS" company http://www.factor-ts.ru/
Homepage: http://klish.googlecode.com
Blog: http://klish-cli.blogspot.com
Product's homepage
Here are some key features of "klish":
· Namespaces or logically nested views. The tag NAMESPACE allows to import the command set from the specified view into another view. So these commands can be used within target view. It allows to create logically nested views. The further view in hierarchy can use commands of previous views. The behaviour is like a CISCO modes (there is the availability to use "configure"-mode commands from "config-if" mode).
· Namespaces with prefix support. The command set can be included into another view with the prefix. All included commands will obtain specified prefix when used from target view. These feature allow to implement CISCO-like "do show ..." commands.
· Optional arguments support. The command arguments can be optional. The PARAM tag supports "optional" option that specify whether parameter is optional.
· Subcommands support. The special type of PARAMs was implemented. It's a fixed word (the sequence of symbols with no spaces) that can be found among another arguments. It can be optional and mean a flag.
· Nested parameters support. The parameters can be nested. The child (nested) parameters follow the parent parameter. This feature use in parameter branching and with optional parameters. If optional parameter is entered then all the child parameters follow. If the optional parameter was not entered than the child parameters will not be used.
· Switch subcommands support. The special type of subcommand allows to choose one argument of the list of possible arguments as a next positional parameter. So together with the nested parameters it implements the branching. The argument list can be non-linear.
· CISCO-like config support. In some cases the CLI is rather useless without configuration commands storing. The new XML tag CONFIG was implemented to support interaction beetween klish and some external (or internal) mechanism to store some commands sequence i.e. CISCO-like configuration. On each succesfully executed command the klish can execute special callback function that get current command information and can communicate to external tool to store commands or use the internal mechanisms.
· Configuration daemon. The configuration daemon konfd can store the current CISCO-like configuration information (running-config). Any klish or another process can communicate to konfd via socket. There is special string-oriented protocol to set new entries to the running-config, remove existent entries or get current config state.
· The initial view redefinition. User can define CLISH_VIEW environment variable to set initial view instead of the initial view from STARTUP tag.
What's New in This Release: [ read full changelog ]
· It's a portability release. Now it can be build on Linux, FreeBSD, OpenBSD, Solaris, QNX6. QNX6 has some problems with konf, konfd.
· Much of legacy unused code was removed. Remove some unnecessary library dependencies.