Ejecute el programa GUI en una máquina remota a través del subproceso ssh de Python

Ejecute el programa GUI en una máquina remota a través del subproceso ssh de Python

Ejecutando Raspberry Pi 4 con Ubuntu Server 19.10, Python 3.7.5 python3-xlib==0.15y pyautogui==0.9.50. Todo se ejecuta como el ubuntuusuario predeterminado.

Estoy intentando enviar Machine Aun comando ssh para Machine Bejecutar un programa GUI y realizar algún procesamiento. Recibo algunos XAUTHORITYerrores.

Nota: No quiero ver la GUI en Machine Ael monitor, pero la aplicación que se ejecuta Machine Bnecesita una GUI.

Así que Machine Aejecuto:

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

encendido Machine B, my_script.pyse ejecuta

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

Finalmente, gui_script.pylos intentos de

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.

Desafortunadamente, gui_script.pyestá arrojando lo siguiente.

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

También intenté configurar el entorno en la subprocessllamada a my_script.pytravés de

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)

Pero eso también fracasó.

Mi mejor suposición es que necesito cambiar alguna configuración en algún lugar Machine Bantes de ejecutar el flujo de trabajo (es decir, una edición única xauth). ¡Este es un sistema cerrado por lo que la seguridad no es un problema!

información relacionada