def __init__(self, username, host, port=22, sshConfigFile=None): """ :type host: str :type port: int :type sshConfigFile: str|None """ self._log = logging.getLogger(__name__) """:type: logging.Logger""" self._username = str(username) """:type: str""" self._host = str(host) """:type: str""" self._port = int(port) """:type: int""" self._sshConfigFile = str(sshConfigFile) if sshConfigFile else None """:type: str|None""" self._promptRegex = r'^[^\s]+[>#]\s?$' """:type: str""" self._moreRegex = r'^.*-+\s*more\s*-+.*$' """:type: str""" self._authenticated = False """:type: bool""" self._readSinceWrite = False """:type: bool""" sshConfigSpec = ['-F', self._sshConfigFile ] if self._sshConfigFile else [] portSpec = ['-p', self._port ] if self._port and self._port != 22 else [] optionsSpec = ['-oStrictHostKeyChecking=no', '-oConnectTimeout=5' ] if not self._sshConfigFile else [] userHostSpec = [(username + '@' if username else '') + self._host] args = ['ssh'] args.extend(sshConfigSpec) args.extend(portSpec) args.extend(optionsSpec) args.extend(userHostSpec) self._log.info(' '.join(args)) self._pty = PtyProcess.spawn(args, dimensions=(SSH.SCREEN_HEIGHT, SSH.SCREEN_WIDTH), env={'TERM': 'vt100'}) """:type: ptyprocess.PtyProcess""" self._vt = Screen(SSH.SCREEN_WIDTH, SSH.SCREEN_HEIGHT) """:type: pyte.Screen""" self._stream = ByteStream() """:type: pyte.ByteStream""" self._stream.attach(self._vt)