2017-03-03 7 views
1

リモートLinuxサーバーからローカルWindowsマシンへのX11接続を開始しようとしています。WindowsでのPythonとX11接続

私はXming portableをダウンロードしました。Linuxマシンとのssh接続を開始してFirefoxを起動すると、Xmingに渡され、Windowsマシンに表示されます。

私は今、pythonで同じことを達成しようとしました。しかし、私はそれを正しく理解しているとは思わない。私は次のエラーを取得するには、次のコード

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上で動作しているときのものです。

よろしくお願いいたします。

答えて

0

私はそれを自分自身から見つけました。私は詳細を完全に理解していませんが、私はXmingがSSHソケットなどに接続されていなければならないと思います。とにかく私がする必要があったのは、私のコマンドを次のように変更することでした。

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

とFirefoxがXmingで開きます。また、Firefoxアプリケーションが再び閉じられるまで、pythonスクリプトはここでブロックされます。

だから私の最終的なコードは以下の

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アプリケーションの内部から起動することが可能です。