Соединение Python и X11 в windows

Я пытаюсь запустить и установить соединение X11 с моего удаленного сервера Linux на мою локальную машину Windows.

Я загрузил Xming Portable, и если я запускаю ssh-соединение с моей машиной Linux и запускаю Firefox, он передается Xming и отображается на моем компьютере с Windows.

Теперь я попытался добиться того же на питоне. Но не думаю, что правильно понимаю.

Я использую следующий код

import paramiko
import time

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('server-1', username='me', password='xxxxxxx')
stdin, stdout, stderr = ssh.exec_command("firefox")

t = ssh.get_transport ()
chan = t.open_session ()
print(chan.request_x11())

print(stdout.readlines(), stderr.readlines())

time.sleep(100)

только чтобы получить следующую ошибку:

 Error: GDK_BACKEND does not match available displays

Я также читал, что сам python может запускаться и сеанс Xll. Но пока мне нужно только перенаправить его на мой сервер Xming.

Я понимаю только самое основное из того, что делает соединение X11, и все примеры, которые я видел здесь, относятся к тому, когда скрипт python работает в Linux.

С Уважением


person Ephreal    schedule 03.03.2017    source источник


Ответы (1)


Я понял это сам. Хотя я не совсем понимаю детали, но я предполагаю, что Xming должен быть подключен к сокету SSH или чему-то еще. В любом случае все, что мне нужно было сделать, это изменить мою команду на следующую

stdin, stdout, stderr = ssh.exec_command("export DISPLAY=localhost:10.0; xterm & firefox &")

и Firefox открывается в Xming. Также обратите внимание, что скрипт python заблокирован здесь до тех пор, пока приложение Firefox снова не закроется.

Итак, мой окончательный код выглядит следующим образом

import paramiko

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('server-1', username='me', password='xxxx')
stdin, stdout, stderr = ssh.exec_command("export DISPLAY=localhost:10.0; xterm & firefox & env")


print(''.join(stdout.readlines()), ''.join(stderr.readlines()))

ssh.close()

и поскольку Xming - это приложение командной строки, его также можно запускать из приложения Python.

person Ephreal    schedule 06.03.2017