Skip to content

Commit

Permalink
ssh: Fix command line echoing
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
douglas-raillard-arm authored and marcbonnici committed Feb 6, 2019
1 parent 22f2c8b commit 2e81a72
Showing 1 changed file with 2 additions and 6 deletions.
8 changes: 2 additions & 6 deletions devlib/utils/ssh.py
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down Expand Up @@ -278,15 +278,11 @@ def _execute_and_wait_for_prompt(self, command, timeout=None, as_root=False, str
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)
Expand Down

0 comments on commit 2e81a72

Please sign in to comment.