Ubuntu Server 19.10, Python 3.7.5 python3-xlib==0.15
및 pyautogui==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
). 이것은 폐쇄형 시스템이므로 보안은 문제가 되지 않습니다!