Shell Service¶
The shell service is used to provide shell access and commanding from mission operations to the OBC. It may also be used between a developer’s system and the OBC when in a development or testing environment.
The shell service provides shell functionality by implementing the shell protocol. The shell protocol is UDP-based which means a connection is required between the OBC and ground segment capable of transferring UDP packets. This could be established using the communication service or a standard network connection.
Currently both the shell service and shell client are implemented in Lua, so refer to the Lua SDK doc for more detailed Lua instructions.
Running the Service from KubOS¶
The Kubos Linux distribution (as of v1.3.0) ships with the shell
service installed and configured to run on boot. This can be verified by
booting the KubOS system, running the ps
command and looking for the
shell-service
process. If the service is not running then it can
be started like so:
$ /etc/init.d/S90shell-service start
Running the Service from Source¶
The shell service can also be run from source if required.
The source is located in the folder kubos/services/file-service
in the KubOS source repo. The service can be started like so:
$ cd kubos/services/shell-service
# The lit command only needs to be run once
$ lit install
$ PORT=8011 luvi-regular .
The service will look for the environment variable PORT
to determine
which port it should listen on. If PORT
is not specified then by default
it will listen on port 6000
.
Running the Shell Client from Source¶
The shell client is located in the folder kubos/clients/shell-client
in the
KubOS repo. The shell client can be used
to connect to the shell service and provides a fairly full-featured
terminal emulator. It is appropriate for development usage, but would not
operate well under flight conditions.
The shell client does not take any arguments. It is run like so:
$ cd kubos/clients/shell-client
# The lit command only needs to be run once
$ lit install
$ PORT=8011 luvi-regular .
The shell client will look for the environment variable PORT
to determine
which port it should listen on. If PORT
is not specified then by default
it will listen on port 6000
.
Once started the shell client will query the file service for current sessions and present the user with the option to start a new session or continue an existing session.
Shell client prompt with no existing sessions:
Choose an option:
Press enter to start a new sh shell.
Press Control-D to exit
Or enter session ID to take over an existing session.
>
Shell client prompt with an existing session:
Choose an option:
Press enter to start a new sh shell.
Press Control-D to exit
Or enter session ID to take over an existing session.
39624 { path = 'sh', pid = 19232 }
>