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])