1
0
mirror of https://github.com/ARM-software/devlib.git synced 2025-03-04 09:17:51 +00:00

utils/ssh: Fix escaping of command for push/pull

Ensure that source and destination are quoted and all space characters
are also escaped which is required for scp to work for file paths
containing spaces.
This commit is contained in:
Marc Bonnici 2017-12-08 18:06:55 +00:00 committed by setrofim
parent 0dde18bb56
commit 35c7196396

View File

@ -35,7 +35,8 @@ from pexpect import EOF, TIMEOUT, spawn
from devlib.exception import HostError, TargetError, TimeoutError
from devlib.utils.misc import which, strip_bash_colors, check_output
from devlib.utils.misc import escape_single_quotes, escape_double_quotes
from devlib.utils.misc import (escape_single_quotes, escape_double_quotes,
escape_spaces)
from devlib.utils.types import boolean
@ -177,11 +178,15 @@ class SshConnection(object):
self.conn = ssh_get_shell(host, username, password, self.keyfile, port, timeout, False, None)
def push(self, source, dest, timeout=30):
dest = '{}@{}:{}'.format(self.username, self.host, dest)
dest = '"{}"@"{}":"{}"'.format(escape_double_quotes(self.username),
escape_spaces(escape_double_quotes(self.host)),
escape_spaces(escape_double_quotes(dest)))
return self._scp(source, dest, timeout)
def pull(self, source, dest, timeout=30):
source = '{}@{}:{}'.format(self.username, self.host, source)
source = '"{}"@"{}":"{}"'.format(escape_double_quotes(self.username),
escape_spaces(escape_double_quotes(self.host)),
escape_spaces(escape_double_quotes(source)))
return self._scp(source, dest, timeout)
def execute(self, command, timeout=None, check_exit_code=True,