1

ssh X11管理機能を通過するParamiko pythonモジュールを使用できません。
ssh -X オプションを使用したかのように使用したいと思います。
いくつかの解決策を試しましたが、私のシステムでは何も機能しません。

これが私が試したコードです:


client = paramiko.SSHClient()   
client.set_missing_host_key_policy(AutoAddPolicy())   
client.connect(machineName, username=xxx, password=xxx)  
t = client.get_transport ()  
chan = t.open_session ()  
chan.request_x11 ()  
chan.set_combine_stderr (True)  
chan.exec_command (xxxxx)  # the command that should display a X11 window  
bufsize = -1  
stdin = chan.makefile('wb', bufsize)  
stdout = chan.makefile('rb', bufsize)  
stderr = chan.makefile_stderr('rb', bufsize)  
for line in stdout:   
    print '... ' + line.strip('\n')  
client.close()  

私も試しました(exec_commandの代わりに):

chan.get_pty("vt100", 80, 50)  
chan.invoke_shell()  
chan.send(xxxxx) # the command that should display a X11 window  

残念ながら、X11 ウィンドウが正常に表示されるはずの瞬間にアプリケーションがフリーズします。備考 : X11 ウィンドウを表示せずにコマンドを起動すると、完全に機能します。


よろしくお願いします。

4

2 に答える 2

1

paramiko を使用して別の X11 ウィンドウで GUI を実行する必要があり、この投稿を見つけました。機能させるには、数行追加する必要があるかもしれません。それはすべてハンドラパラメータに関するものです。

ここで、着信 X11 接続の機能を割り当てます。

chan.request_x11 (handler=testFunc())  

と、簡単に書きます。

import commands
def testFunc():
    cmd = "xterm"
    result = commands.getoutput(cmd)

その後、新しいウィンドウが表示されます。少なくとも私にとってはうまくいきます。

于 2011-10-06T18:45:36.970 に答える
1

paramiko コードを読んで、paramiko は x11 チャネルを確立する方法しか実装していないことに気付きました。チャネルをローカルの x11 ディスプレイに接続しません。それはあなたに任されています。

これを行う方法の実例については、この回答を参照してください: https://stackoverflow.com/a/12903844/72911

于 2012-10-15T21:11:07.183 に答える