mirror of https://git.48k.eu/ogclient
#1065 linux: add shell run operation
- Executed script runs with same privilege as ogClient process. - Uses subprocess.run instead of subprocess.Popen, it's a bit simpler. We can't specify executable, though. Shouldn't need so in Linux mode. - Uses shell=True, keep in mind security considerations listed at: https://docs.python.org/3/library/subprocess.html#security-considerations (shlex.quote can be used for unix shells)more_events
parent
69d214f63b
commit
ab7abf96a6
|
@ -7,10 +7,13 @@
|
|||
# (at your option) any later version.
|
||||
|
||||
import os
|
||||
from pystray import Icon, Menu, MenuItem
|
||||
import subprocess
|
||||
from subprocess import CalledProcessError
|
||||
import multiprocessing as mp
|
||||
from multiprocessing import Process
|
||||
|
||||
from PIL import Image, ImageDraw
|
||||
from pystray import Icon, Menu, MenuItem
|
||||
|
||||
from src.ogRest import ThreadState
|
||||
|
||||
|
@ -74,7 +77,21 @@ class OgLinuxOperations:
|
|||
os.system('systemctl reboot')
|
||||
|
||||
def shellrun(self, request, ogRest):
|
||||
raise NotImplementedError
|
||||
cmd = request.getrun()
|
||||
try:
|
||||
result = subprocess.run(cmd,
|
||||
shell=True,
|
||||
stdin=subprocess.DEVNULL,
|
||||
capture_output=True,
|
||||
text=True,
|
||||
check=True)
|
||||
except CalledProcessError as error:
|
||||
if error.stderr:
|
||||
return error.stderr
|
||||
if error.stdout:
|
||||
return error.stdout
|
||||
return "{Non zero exit code and empty output}"
|
||||
return result.stdout
|
||||
|
||||
def session(self, request, ogRest):
|
||||
raise NotImplementedError
|
||||
|
|
Loading…
Reference in New Issue