mirror of
https://github.com/ARM-software/devlib.git
synced 2025-03-04 17:27: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:
parent
0dde18bb56
commit
35c7196396
@ -35,7 +35,8 @@ from pexpect import EOF, TIMEOUT, spawn
|
|||||||
|
|
||||||
from devlib.exception import HostError, TargetError, TimeoutError
|
from devlib.exception import HostError, TargetError, TimeoutError
|
||||||
from devlib.utils.misc import which, strip_bash_colors, check_output
|
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
|
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)
|
self.conn = ssh_get_shell(host, username, password, self.keyfile, port, timeout, False, None)
|
||||||
|
|
||||||
def push(self, source, dest, timeout=30):
|
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)
|
return self._scp(source, dest, timeout)
|
||||||
|
|
||||||
def pull(self, source, dest, timeout=30):
|
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)
|
return self._scp(source, dest, timeout)
|
||||||
|
|
||||||
def execute(self, command, timeout=None, check_exit_code=True,
|
def execute(self, command, timeout=None, check_exit_code=True,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user