topology_connect.shell

topology_connect shell management module.

Classes

  • SshMixin: SSH connection mixin for the Topology shell API.
  • TelnetMixin: Telnet connection mixin for the Topology shell API.
  • SshShell: Simple class mixing the pexcept based shell with the SSH mixin.
  • TelnetShell: Simple class mixing the pexcept based shell with the Telnet mixin.
  • SshBashShell: Simple class mixing the Bash specialized pexcept based shell with the SSH
  • TelnetBashShell: Simple class mixing the Bash specialized pexcept based shell with the
class topology_connect.shell.SshMixin(*args, **kwargs)

SSH connection mixin for the Topology shell API.

This class implements a _get_connect_command() method that allows to interact with a shell through an SSH session, and extends the constructor to request for SSH related connection parameters.

The default options will assume that you will be connecting using a SSH key (and you seriously SHOULD). If, for some reason, you MUST use a password to connect to the shell in question (and DON’T unless absolutely required! Like, really, really, DO NOT!) you must set the identity_file to None and set the options to at least have BatchMode=no. Also, as expected by the Topology shell low level API you must pass the password (and password_match if required) to the constructor.

Note: The constructor of this class should look as follow:

# Using PEP 3102 -- Keyword-Only Arguments
def __init__(
    self, *args,
    user=None, hostname='127.0.0.1', port=22,  # noqa
    options=('BatchMode=yes', ), identity_file='id_rsa',
    **kwargs):

Sadly, this is Python 3 only. Python 2.7 didn’t backported this feature. So, this is the legacy way to achieve the same goal. Awful, I know :/

Parameters:
  • user (str) – User to connect with. If None, the user running the process will be used.
  • hostname (str) – Hostname or IP to connect to.
  • port (int) – SSH port to connect to.
  • options (tuple) – SSH options to use.
  • identity_file (str) – Absolute or relative (in relation to ~/.ssh/) path to the private key identity file. If None is provided, key based authentication will not be used.

Inheritance

Inheritance diagram of SshMixin

static get_username()

Get the username.

Returns:The user currently running the process.
Return type:str
class topology_connect.shell.TelnetMixin(*args, **kwargs)

Telnet connection mixin for the Topology shell API.

Note: The constructor of this class should look as follow:

# Using PEP 3102 -- Keyword-Only Arguments
def __init__(
    self, *args,
    hostname='127.0.0.1', port=23,
    **kwargs):

Sadly, this is Python 3 only. Python 2.7 didn’t backported this feature. So, this is the legacy way to achieve the same goal. Awful, I know :/

Parameters:
  • hostname (str) – Hostname or IP to connect to.
  • port (int) – Telnet port to connect to.

Inheritance

Inheritance diagram of TelnetMixin

class topology_connect.shell.SshShell(*args, **kwargs)

Simple class mixing the pexcept based shell with the SSH mixin.

Inheritance

Inheritance diagram of SshShell

class topology_connect.shell.TelnetShell(*args, **kwargs)

Simple class mixing the pexcept based shell with the Telnet mixin.

Inheritance

Inheritance diagram of TelnetShell

class topology_connect.shell.SshBashShell(*args, **kwargs)

Simple class mixing the Bash specialized pexcept based shell with the SSH mixin.

Inheritance

Inheritance diagram of SshBashShell

class topology_connect.shell.TelnetBashShell(*args, **kwargs)

Simple class mixing the Bash specialized pexcept based shell with the Telnet mixin.

Inheritance

Inheritance diagram of TelnetBashShell