2022-05-01 20:58:23 +00:00
|
|
|
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)
|
|
|
|
|
2023-10-08 13:00:44 +00:00
|
|
|
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)
|
2022-05-01 20:58:23 +00:00
|
|
|
|
|
|
|
def disk_free(self):
|
2023-10-08 13:00:44 +00:00
|
|
|
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()
|
2022-05-01 20:58:23 +00:00
|
|
|
|
|
|
|
def __str__(self):
|
|
|
|
return os.linesep.join([self.target, self.url])
|