39 lines · 1.1 KB · Python
RawDownload
# SPDX-License-Identifier: GPL-2.0 import osimport stringimport subprocessimport random from lib.py import cmd  class Remote:    def __init__(self, name, dir_path):        self.name = name        self.dir_path = dir_path        self._tmpdir = None     def __del__(self):        if self._tmpdir:            cmd("rm -rf " + self._tmpdir, host=self)            self._tmpdir = None     def cmd(self, comm):        return subprocess.Popen(["ssh", "-q", self.name, comm],                                stdout=subprocess.PIPE, stderr=subprocess.PIPE)     def _mktmp(self):        return ''.join(random.choice(string.ascii_lowercase) for _ in range(8))     def deploy(self, what):        if not self._tmpdir:            self._tmpdir = "/tmp/" + self._mktmp()            cmd("mkdir " + self._tmpdir, host=self)        file_name = self._tmpdir + "/" + self._mktmp() + os.path.basename(what)         if not os.path.isabs(what):            what = os.path.abspath(self.dir_path + "/" + what)         cmd(f"scp {what} {self.name}:{file_name}")        return file_name