40 lines · python
1# SPDX-License-Identifier: GPL-2.02 3import os4import string5import subprocess6import random7 8from lib.py import cmd9 10 11class Remote:12 def __init__(self, name, dir_path):13 self.name = name14 self.dir_path = dir_path15 self._tmpdir = None16 17 def __del__(self):18 if self._tmpdir:19 cmd("rm -rf " + self._tmpdir, host=self)20 self._tmpdir = None21 22 def cmd(self, comm):23 return subprocess.Popen(["ssh", "-q", self.name, comm],24 stdout=subprocess.PIPE, stderr=subprocess.PIPE)25 26 def _mktmp(self):27 return ''.join(random.choice(string.ascii_lowercase) for _ in range(8))28 29 def deploy(self, what):30 if not self._tmpdir:31 self._tmpdir = "/tmp/" + self._mktmp()32 cmd("mkdir " + self._tmpdir, host=self)33 file_name = self._tmpdir + "/" + self._mktmp() + os.path.basename(what)34 35 if not os.path.isabs(what):36 what = os.path.abspath(self.dir_path + "/" + what)37 38 cmd(f"scp {what} {self.name}:{file_name}")39 return file_name40