Executando Raspberry Pi 4 com Ubuntu Server 19.10, Python 3.7.5 python3-xlib==0.15
e pyautogui==0.9.50
. Tudo é executado como usuário padrão ubuntu
.
Estou tentando enviar Machine A
um comando ssh para Machine B
executar um programa GUI e fazer algum processamento. Estou recebendo alguns XAUTHORITY
erros.
Nota: não quero ver a GUI no Machine A
monitor - mas o aplicativo em execução Machine B
precisa de uma GUI.
Então Machine A
corro:
subprocess.Popen(['ssh', 'ubuntu@ip_of_machine_B', 'python3', '/path/to/my_script.py'])
Ligado Machine B
, my_script.py
executa
subprocess.call(['python3', '/path/to/gui_script.py'])
Finalmente, gui_script.py
as tentativas 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.
Infelizmente, gui_script.py
está lançando o seguinte
Xlib.error.DisplayConnectionError: Can't connect to display ":0": No protocol specified.
Também tentei configurar o ambiente na subprocess
chamada my_script.py
via
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)
Mas isso também falhou.
Meu melhor palpite é que preciso alterar alguma configuração em algum lugar Machine B
antes de executar o fluxo de trabalho (ou seja, uma edição única em xauth
). Este é um sistema fechado, então a segurança não é um problema!