Запустите программу GUI на удаленном компьютере через подпрограмму python ssh. - PullRequest
0 голосов
/ 06 апреля 2020

Запуск RPi4s с Ubuntu Server 19.10, Python 3.7.5, python3-xlib==0.15 и pyautogui==0.9.50. Все запускается как пользователь по умолчанию ubuntu.

Я пытаюсь Machine A отправить команду s sh на Machine B, чтобы запустить программу GUI и выполнить некоторую обработку. Я получаю XAUTHORITY ошибок.

Примечание: я не хочу видеть GUI на Machine A мониторе - но приложение, работающее на Machine B, нуждается в GUI.

Итак, Machine A Я запускаю:

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

Вкл Machine B, my_script.py выполняет

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

Наконец, gui_script.py пытается

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.

К сожалению, gui_script.py выдает следующее

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

Я также пытался установить среду при вызове subprocess в my_script.py через

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)

Но это также не помогло.

Мое лучшее предположение - мне нужно изменить некоторые настройки где-нибудь на Machine B до запуска рабочего процесса (ie, однократное редактирование xauth)? Это закрытая система, поэтому безопасность не является проблемой!

...