marc/pubnix.py
Marc Beninca d599b19833 os
2023-10-08 15:00:44 +02:00

62 lines
1.9 KiB
Python

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