我用:
连接到我的远程计算机 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 = 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
如果我不使用这一行:
chan.request_x11()
我尝试使用:
self.client.exec_command(command)
但同样的错误
我从标题中收到错误消息。当我使用该行时,我尝试从stdout读取时获得超时连接。我试过设置
DISPLAY=:0
什么也没做。我正在尝试通过ssh发送dbus命令。当我通过终端手动连接ssh时,我可以使用-X或不使用它,我可以使用我的dbus调用无所谓。
答案 0 :(得分:0)
在没有X11 / Display的情况下使用Shell的Dbus。 Dbus需要知道DBUS_SESSION_BUS_ADDRESS。 所以要么导出这个或导出DISPLAY ...
1)导出DBUS_SESSION_BUS_ADDRESS方法。
首次启动服务器。 eval'dbus-launch --auto-syntax'./server
来自服务器环境(/ proc / pid-server / environ) 你可以得到DBUS_SESSION_BUS_ADDRESS。 在启动客户端程序的shell中导出该值, 启动客户端 ./client ... 它应该没有问题。