From 51832bf93f71465cab0c3cfbcf06adb7fa37a50f Mon Sep 17 00:00:00 2001 From: Katarzyna Treder Date: Tue, 16 Jul 2024 11:56:48 +0200 Subject: [PATCH] Add paramiko remote copy method Signed-off-by: Katarzyna Treder --- connection/base_executor.py | 9 +++++++++ connection/ssh_executor.py | 10 ++++++++++ 2 files changed, 19 insertions(+) diff --git a/connection/base_executor.py b/connection/base_executor.py index 3f5f02a..7162fac 100644 --- a/connection/base_executor.py +++ b/connection/base_executor.py @@ -19,6 +19,9 @@ class BaseExecutor: dut_to_controller): raise NotImplementedError() + def _copy(self, src, dst, dut_to_controller: bool): + raise NotImplementedError() + def rsync_to(self, src, dst, delete=False, symlinks=False, checksum=False, exclude_list=[], timeout: timedelta = timedelta(seconds=90)): return self._rsync(src, dst, delete, symlinks, checksum, exclude_list, timeout, False) @@ -27,6 +30,12 @@ class BaseExecutor: timeout: timedelta = timedelta(seconds=90)): return self._rsync(src, dst, delete, symlinks, checksum, exclude_list, timeout, True) + def copy_to(self, src, dst): + return self._copy(src, dst, True) + + def copy_from(self, src, dst): + return self._copy(src, dst, False) + def is_remote(self): return False diff --git a/connection/ssh_executor.py b/connection/ssh_executor.py index c99c67d..ad90b72 100644 --- a/connection/ssh_executor.py +++ b/connection/ssh_executor.py @@ -161,6 +161,16 @@ class SshExecutor(BaseExecutor): if completed_process.returncode: raise Exception(f"rsync failed:\n{completed_process}") + def _copy(self, src, dst, dut_to_controller: bool): + sftp = self.ssh.open_sftp() + + if dut_to_controller: + sftp.put(src, dst) + else: + sftp.get(src, dst) + + sftp.close() + def is_remote(self): return True