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
)。これは閉鎖型システムなので、セキュリティは問題になりません!