commit 023cb4275a98bae526181d95ccf26300f6792a8c Author: trueold89 Date: Fri Aug 25 10:20:48 2023 +0300 initial_commit diff --git a/svc.py b/svc.py new file mode 100755 index 0000000..c374c98 --- /dev/null +++ b/svc.py @@ -0,0 +1,89 @@ +#!/bin/python3 + +########### +# Modules # +########### + +import os +import subprocess +import sys + +############# +# Functions # +############# + +# Access check +def sucheck(): + user = subprocess.run('whoami', shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True) + if user.stdout[:-1] == 'root': + return True + else: + return 'Run script as root user' + +#Args check +def argcheck(): + if len(sys.orig_argv[1:]) == 3: + return True + else: + return 'Invalid usage' + +#Options check +def optcheck(option): + path = '' + allopts_list = [] + allopts = { 'enable': ['enable', 'e', 'on'], 'disable': ['disable','d','off'], 'down': ['down','dt']} + for i in allopts.keys(): + allopts_list = allopts_list + allopts[i] + if not(option in allopts_list): + print(f'Invalid option: {option}') + sys.exit() + while path == '': + if option in allopts['enable']: + option = 'enable' + path = '/etc/sv' + if option in allopts['disable']: + option = 'disable' + path = '/var/service' + if option in allopts['down']: + option = 'down' + path = '/etc/sv' + return path, option + +#Service check +def svcheck(service,path): + list = os.listdir(path) + if service in list: + return True + else: + return f'Service not found: {service}' + +#Control service +def action(option,service): + if option == 'enable': + subprocess.run(f'ln -s /etc/sv/{service} /var/service', shell=True) + return f'{service} enabled' + if option == 'disable': + subprocess.run(f'rm /var/service/{service}', shell=True) + return f'{service} disabled' + if option == 'down': + subprocess.run(f'touch /etc/sv/{service}/down', shell=True) + return f'Down-file created for {service}' + +######## +# Exec # +######## + +ac = argcheck() +if ac == True: + suc = sucheck() + if suc == True: + oc = optcheck(sys.argv[1]) + sc = svcheck(sys.argv[2],oc[0]) + if sc == True: + print(action(oc[1],sys.argv[2])) + else: + print(sc) + else: + print(suc) +else: + print(ac)