透過python子進程ssh在遠端機器上運行GUI程式

透過python子進程ssh在遠端機器上運行GUI程式

在 Ubuntu Server 19.10、Python 3.7.5python3-xlib==0.15pyautogui==0.9.50.一切都以預設使用者身份運行ubuntu

我正在嘗試Machine A發送 ssh 命令來Machine B運行 GUI 程式並進行一些處理。我收到一些XAUTHORITY錯誤。

注意:我不想在Machine A顯示器上看到 GUI - 但運行的應用程式Machine B需要 GUI。

所以Machine A我運行:

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

Machine Bmy_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.

我還嘗試在viasubprocess的通話中設定環境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)?這是一個封閉的系統,因此安全性不是問題!

相關內容