This provides an easy to use CLI interfase to access the SHV network.
The installation can be done with package manager pip
.
$ pip install shvcli
You need to start application shvcli
. The first argument is URL specifying
where client should connect to.
After successful connection you will see prompt (>
) and you can start typing.
Methods can be called with PATH:METHOD
syntax or with just METHOD
. You can
use PATH:
for change current path prefix. This prefix is displayed before
prompt and is prefixed to any paths you specify on command line. To return to
the root you need to use absolute path (/
).
An example of usage:
> ls
.app
> dir
dir ls lschng
> .app:
.app> dir
dir ls lschng shvVersionMajor shvVersionMinor name version ping
.app> name
"pyshvbroker"
.app> broker:ls
currentClient client clientInfo
.app> ls broker
currentClient client clientInfo
.app> broker/currentClient:info
{"clientId":0,"mountPoint":null,"subscriptions":[],"userName":"admin"}
.app> /:
>
Tool reads configuration from files /etc/shvcli.ini
and ~/.shvcli.ini
.
They are in INI file format and the following sections are supported:
hosts: That provides mapping from some name to RPC URL.
hosts-shell: That is same as hosts with exception that URL is passed through your local Shell to expand any variables or command substitutions.
config: That allows you to set some initial configuration that can be also switched in runtime. The following options are available:
- vimode: If Vi input mode should be used for command line input. The
default is
false
. - autoget: Automatically call getter methods and print received values when
listing nodes and methods (
ls
anddir
methods special handling). - autoprobe: Completion process benefits from probing of the SHV nodes with
ls
anddir
, and to provide easier usage this can happen automatically in background. This is what this option controls. It istrue
by default but it might not be desirable in some cases, because this can generate a lot of hidden traffic. - raw: Controls if
ls
anddir
methods are handled in a special way as described later in this document. This special handling can be possibly decremental if you are trying to debug something specific with these functions and this provides a way to call them with any CPON to see what they provide. Note that caching and discovery of the nodes will stop working once you are in the raw mode and thus you will no longer get the advantage of that. The default isfalse
. - debug: Controls if internal debug messages are displayed. These messages
can give you idea of what shvcli is actually doing behind the wail but it can
be also overwhelming. The default is
false
. It is beneficial to disable the autobrobe once you enable debug because otherwise output on CLI will be mangled on completion. - cache: Controls if cache is preserved between invocations. Cache is
separated based on the connection URL and stored in files in
$XDG_CACHE_HOME/shvcli
. The default istrue
. - call_attempts: Number of attempts before method call is abandoned and timeout is reported. This makes the total time multiple of call_timeout.
- call_timeout: Timeout in seconds before call attempt is abandoned. Based on the call_attempts call is attempted again or timeout is reported.
- autoget_timeout: Timeout in seconds before call that is part of autoget functionality.
Example configuration file:
[hosts]
localhost = tcp://test@localhost?password=test
[hosts-shell]
company = tcp://[email protected]?password=$(pass company/shv)
[config]
vimode = true
CLI provides few additional methods that can be called on top of the ones
provided by SHV network. They are all prefixed with !
to clearly distinguish
them. They provide a way to control CLI as well as to get insight into the
environment you are running in.
subscribe|sub: Add new subscribe. Shortcut to the call of
.app/broker/currentClient:subscribe
that accepts arguments in more convenient
way. The argument can be multiple RPC RIs (PATH:METHOD:SIGNAL
patterns).
unsubscribe|usub: Unsubscribe existing subscription. It is reverse operation
to the subscribe and same remarks apply here as well. It is a shortcut to
the call of .app/broker/currentClient:unsubscribe
subscriptions|subs: List current subscriptions. This is shortcut to call
.app/broker/currentClient:subscriptions
.
cd: Change current path prefix to given one even when there is no such node.
tree|t: This prints tree of known nodes from current path prefix. This is not all nodes present in the SHV network. This is only what was discovered so far (and cached thus it can be also old). You can use it to visualize the tree of nodes you are working with as well as to get insight into the state of the cache.
scan[X]: Perform recursive probing of the tree up to the depth given as X (the default is 3). On big servers this can be pretty resource demanding and thus use it sparely.
set|s: allows modification of configuration option in runtime. The names
are the same as in config
section. The boolean options are set if no
argument is provided, or cleared if name is prefixed with no
(and thus to
disable raw
you use noraw
). You can also add =true
or =false
.
The equal sign is also used with integer and floating point options. Without any
configuration option it simply prints the current configuration.
These methods are handled in a special way to allow easy discovery of the SHV nodes. Their output is processed and displayed in easy to read format but not in the fullest content.
Their parameter is also handled in a special way. It is considered to be additional path suffix unless it is a valid CPON. This is allowed to match the common shells.