Führen Sie das GUI-Programm auf dem Remotecomputer über den Python-Subprozess SSH aus

Führen Sie das GUI-Programm auf dem Remotecomputer über den Python-Subprozess SSH aus

Raspberry Pi 4 wird mit Ubuntu Server 19.10, Python 3.7.5 python3-xlib==0.15usw. ausgeführt pyautogui==0.9.50. Alles wird als Standardbenutzer ausgeführt ubuntu.

Ich versuche, Machine Aeinen SSH-Befehl zu senden, um Machine Bein GUI-Programm auszuführen und einige Verarbeitungsvorgänge durchzuführen. Ich erhalte einige XAUTHORITYFehlermeldungen.

Hinweis: Ich möchte die GUI nicht auf Machine Adem Monitor sehen – aber die darauf laufende App Machine Bbenötigt eine GUI.

Also Machine Alaufe ich weiter:

subprocess.Popen(['ssh', 'ubuntu@ip_of_machine_B', 'python3', '/path/to/my_script.py'])

Am Machine Bwird my_script.pyausgeführt

subprocess.call(['python3', '/path/to/gui_script.py'])

Schließlich gui_script.pywerden Versuche unternommen ,

import os
os.environ['DISPLAY'] = ':0'
os.environ['XAUTHORITY'] = '/run/user/1000/gdm/Xauthority'
import subprocess
import pyautogui


subprocess.Popen(['the_gui_app'])
# Do stuff with pyautogui and the app.

Leider gui_script.pywirft das folgende

Xlib.error.DisplayConnectionError: Can't connect to display ":0": No protocol specified.

Ich habe auch versucht, die Umgebung im subprocessAnruf my_script.pyüber einzustellen

my_env = os.environ.copy()
my_env['DISPLAY'] = ':0'
my_env['XAUTHORITY'] = '/run/user/1000/gdm/Xauthority'
subprocess.call(['python3', '/path/to/gui_script.py'], env=my_env)

Aber auch das schlug fehl.

Meine beste Vermutung ist, dass ich vor dem Ausführen des Workflows irgendwo eine Einstellung ändern muss Machine B(z. B. eine einmalige Bearbeitung von xauth)? Dies ist ein geschlossenes System, daher stellt Sicherheit kein Problem dar!

verwandte Informationen