From 2e81a72b39053565b94140e83b894e05ae2b8b8f Mon Sep 17 00:00:00 2001 From: Douglas RAILLARD Date: Fri, 1 Feb 2019 11:35:05 +0000 Subject: [PATCH] ssh: Fix command line echoing Command line echoing was disabled, but that disabling did not take effect. Another part of devlib was still expecting command lines to be echoed. That is fixed by disabling echoing when creating pxssh connection, and removing the code that expected the line to be echoed. --- devlib/utils/ssh.py | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/devlib/utils/ssh.py b/devlib/utils/ssh.py index 27898b6..a4811a0 100644 --- a/devlib/utils/ssh.py +++ b/devlib/utils/ssh.py @@ -63,7 +63,7 @@ def ssh_get_shell(host, username, password=None, keyfile=None, port=None, timeou raise ValueError('keyfile may not be used with a telnet connection.') conn = TelnetPxssh(original_prompt=original_prompt) else: # ssh - conn = pxssh.pxssh() + conn = pxssh.pxssh(echo=False) try: if keyfile: @@ -278,15 +278,11 @@ class SshConnection(object): logger.debug(command) self._sendline(command) timed_out = self._wait_for_prompt(timeout) - # the regex removes line breaks potential introduced when writing - # command to shell. if sys.version_info[0] == 3: output = process_backspaces(self.conn.before.decode(sys.stdout.encoding or 'utf-8', 'replace')) else: output = process_backspaces(self.conn.before) - output = re.sub(r'\r([^\n])', r'\1', output) - if '\r\n' in output: # strip the echoed command - output = output.split('\r\n', 1)[1] + if timed_out: self.cancel_running_command() raise TimeoutError(command, output)