# SPDX-License-Identifier: GPL-2.0 import os import string import subprocess import 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