import os import subprocess PORT = 22 USER = "mspe" ROOT = "public_html" PROTOCOL = "https" DIR = False class PubNix: def __init__( self, dn, ssh=None, port=PORT, user=USER, root=ROOT, dir=DIR, web=None, sub=None, ): self.dn = dn self.ssh = f"{ssh}.{self.dn}" if ssh else self.dn self.port = port self.user = user self.root = root self.web = f"{web}.{self.dn}" if web else self.dn if sub: self.fqdn = f"{self.user}.{self.web}" self.context = None else: self.fqdn = self.web self.context = f"~{self.user}" self.path = os.path.join(self.root, self.fqdn) if dir else self.root self.target = f"{self.user}@{self.ssh}:{self.path}" self.url = [f"{PROTOCOL}:", str(), self.fqdn] if self.context: self.url.append(self.context) self.url = "/".join(self.url) def capturun(self, *args): return self.run(*args, capture_output=True) def run(self, *args, **kwargs): return subprocess.run( [ "ssh", "-o", "LogLevel Error", "-p", str(self.port), f"{self.user}@{self.ssh}", "--", *args, ], **kwargs, ) def disk_free(self): process = self.capturun("df", "-h", os.curdir) return process.stdout.decode("UTF-8").strip() def os(self): ps = self.capturun("cat", "/etc/os-release") if ps.returncode == 0: for line in ps.stdout.decode("UTF-8").strip().split(os.linesep): if "PRETTY_NAME" in line: return line.split("=")[1].split('"')[1] else: return self.capturun("uname", "-sr").stdout.decode("UTF-8").strip() def __str__(self): return os.linesep.join([self.target, self.url])