introduce 'to_home' and systemd user services
- frappy is now a systemd user service - add 'frappy' and 'boxweb' bash function
This commit is contained in:
21
utils.py
21
utils.py
@ -202,17 +202,22 @@ class MainIf:
|
||||
|
||||
def unix_cmd(cmd, *args, execute=None, stdout=PIPE, sudo=True):
|
||||
command = cmd.split() + list(args)
|
||||
sudo = ['sudo'] if sudo else []
|
||||
if command[0] == 'systemctl' and not sudo:
|
||||
command.insert(1, '--user')
|
||||
if sudo:
|
||||
command.insert(0, 'sudo')
|
||||
# sudo = ['sudo'] if sudo else []
|
||||
if execute is not False: # None or True
|
||||
if execute:
|
||||
print('$', *command)
|
||||
result = Popen(sudo + command, stdout=stdout).communicate()[0]
|
||||
# result = Popen(sudo + command, stdout=stdout).communicate()[0]
|
||||
result = Popen(command, stdout=stdout).communicate()[0]
|
||||
return (result or b'').decode()
|
||||
else:
|
||||
print('>', *command)
|
||||
|
||||
|
||||
def check_service(service, set_on=None, execute=None):
|
||||
def check_service(service, set_on=None, execute=None, as_root=True):
|
||||
"""check or set state of systemd service
|
||||
|
||||
set_on is None or not given: query only
|
||||
@ -221,7 +226,7 @@ def check_service(service, set_on=None, execute=None):
|
||||
|
||||
sim: print out command instead of executing
|
||||
"""
|
||||
result = unix_cmd(f'systemctl show -p WantedBy -p ActiveState {service}')
|
||||
result = unix_cmd(f'systemctl show -p WantedBy -p ActiveState {service}', sudo=False)
|
||||
enabled = False
|
||||
active = False
|
||||
for line in result.split('\n'):
|
||||
@ -231,14 +236,14 @@ def check_service(service, set_on=None, execute=None):
|
||||
active = True
|
||||
if set_on:
|
||||
if not active:
|
||||
unix_cmd(f'systemctl start {service}', execute=execute)
|
||||
unix_cmd('systemctl', 'start', service, execute=execute, sudo=as_root)
|
||||
if not enabled:
|
||||
unix_cmd(f'systemctl enable {service}', execute=execute)
|
||||
unix_cmd('systemctl', 'enable', service, execute=execute, sudo=as_root)
|
||||
elif set_on is not None:
|
||||
if active:
|
||||
unix_cmd(f'systemctl stop {service}', execute=execute)
|
||||
unix_cmd('systemctl', 'stop', service, execute=execute, sudo=as_root)
|
||||
if enabled:
|
||||
unix_cmd(f'systemctl disable {service}', execute=execute)
|
||||
unix_cmd('systemctl', 'disable', service, execute=execute, sudo=as_root)
|
||||
return active, enabled
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user