通过python子进程ssh在远程计算机上运行GUI程序

在Ubuntu Server 19.10,Python 3.7.5,python3-xlib==0.15pyautogui==0.9.50上运行RPi4。一切都以默认的ubuntu用户身份运行。

我试图让Machine AMachine B发送ssh命令以运行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 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.

我还尝试通过{p>在subprocess的{​​{1}}调用中设置环境

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的一次性编辑)吗?这是一个封闭的系统,因此安全性不是问题!

csz802864 回答:通过python子进程ssh在远程计算机上运行GUI程序

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2503833.html

大家都在问