Python 하위 프로세스 SSH를 통해 원격 시스템에서 GUI 프로그램 실행

Python 하위 프로세스 SSH를 통해 원격 시스템에서 GUI 프로그램 실행

Ubuntu Server 19.10, Python 3.7.5 python3-xlib==0.15pyautogui==0.9.50...에서는 모든 것이 기본 사용자로 실행됩니다 ubuntu.

GUI 프로그램을 실행하고 일부 처리를 수행하기 Machine A위해 ssh 명령을 보내 려고 합니다 . Machine B일부 오류가 발생합니다 XAUTHORITY.

Machine A참고: 모니터에서 GUI를 보고 싶지는 않지만 실행 중인 애플리케이션 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(예: 일회성 편집 xauth). 이것은 폐쇄형 시스템이므로 보안은 문제가 되지 않습니다!

관련 정보