如何在某个不同的终端中执行一个程序的输出

时间:2013-04-24 11:43:46

标签: python bash shell wxpython

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

我有一个将连接到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中我有一个按钮" APPLY"和5个单选按钮。我可以一次选择1个单选按钮,并且必须单击按钮" APPLY"。然后它连接到ssh隧道并执行请求的操作。现在它在连接到ssh_tunnel后不允许进行任何操作。

1 个答案:

答案 0 :(得分:0)

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

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

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