0

我的最后一个问题也是同样的事情,但没有得到适当的建议,所以我再问一次。

我有一个将连接到 ssh 的 GUI。在它连接到 ssh 后,我无法执行任何操作,因此我必须通过脚本打开新终端,然后在该“新终端”中执行其余操作(显示各自的输出)。

现在我可以使用子进程打开新窗口,但它没有从 GUI 执行任何操作可能是代码问题。请帮我解决我的问题。

我在后端使用 python 和 shell 脚本,对 GUI 使用 wxpython。

注意:我正在寻找使用 Python 和 shell 脚本的解决方案。

我的代码是:

import time
import sys
import pexpect
c = pexpect.spawn("ssh -Y -L xxxx:localhost:xxxx user @ host.com")
time.sleep(0.1)
c.expect("[pP]aasword")
c.sendline("xxxxxx")
sub = subprocess.call("xfce4-terminal")
if sub:
   subprocess.call("svn update",shell=True)
time.sleep(0.2)
c.interact()
c.pexpect([user@host.com~]$)
# here after its connects to ssh then command wont be executed
c.sendline("xfce4-terminal")

在 GUI 中,我有一个按钮“应用”和 5 个单选按钮。我一次可以选择 1 个单选按钮,并且必须单击“应用”按钮。然后它连接到 ssh 隧道并执行请求的操作。现在它在连接到 ssh_tunnel 后不允许进行任何操作。

4

1 回答 1

0

您看到的实际问题是如何避免在运行时阻塞 GUI 事件循环ssh

有两种主要方法可以解决它:

要通过 运行命令ssh,您可以尝试将fabric其用作(它比 更高级别paramiko)。

于 2013-04-24T13:16:13.140 回答