2016-04-08 10 views
1
私は私のリモートコンピュータに接続

にSSHを通じてX11のための$ DISPLAYなしのdbus-デーモンを自動起動することができません:のpython

chan = self.client.get_transport().open_session(timeout=timeout) 
    chan.request_x11() 
    chan.settimeout(timeout) 
    chan.exec_command(command) 
    stdin = chan.makefile('wb', -1) 
    stdout = chan.makefile('r', -1) 
    stderr = chan.makefile_stderr('r', -1) 
    return stdin, stdout, stderr 

私が行う場合:私は、コマンドを送信すると

self.client = paramiko.SSHClient() 
    self.client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
    self.client.connect(hostname=ip_address, username=self.user, password=self.password, look_for_keys=False) 

私が使用してみました

chan.request_x11() 

この行を使用しません
self.client.exec_command(command) 

が、同じエラー

私はタイトルからエラーメッセージが表示されます。私がラインを使用するとき、私はstdoutから読むことを試みるときタイムアウト接続を得る。私は設定しようとしました

DISPLAY=:0 

何もしませんでした。私はsshを使ってdbusコマンドを送信しようとしています。 sshをターミナル経由で手動で接続すると、-Xを使うこともできないし、dbusを使うこともできますが、それは問題ではありません。

答えて

0

シェルからX11/DisplayなしでDbusを使用する。 DbusはDBUS_SESSION_BUS_ADDRESSを知る必要があります。 これをエクスポートするか、またはDISPLAYをエクスポートしてください。

1)DBUS_SESSION_BUS_ADDRESSメソッドをエクスポートしてください。

最初の起動サーバー。サーバー環境から./server

'--auto-構文dbusの打ち上げ' evalの (は/ proc/PID-サーバー/環境) あなたがDBUS_SESSION_BUS_ADDRESSを得ることができます。 クライアントプログラムを起動するシェルでその値をエクスポートすると、 クライアントが起動します ./client ... 問題なく動作します。