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

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

问题描述:

我最后的问题也是同样的问题,但没有得到适当的建议,所以我再次问。如何在一些不同的终端上执行一个程序的输出

我有一个连接到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([[email protected]~]$) 
# here after its connects to ssh then command wont be executed 
c.sendline("xfce4-terminal") 

在GUI我有一个按钮 “APPLY” 和5单选按钮。我可以一次选择1个单选按钮,并且必须点击“APPLY”按钮。那么它已连接到ssh隧道并执行请求的操作。目前它不允许在连接到ssh_tunnel之后执行任何操作。

+0

你使用什么终端? – 2013-04-24 11:51:44

+0

@ExP:xfce4-terminal – nammu 2013-04-24 11:53:12

+2

当你不满意你第一次回答的问题时,你不应该重复提问。相反,在第一个问题中解释什么是答案不符合你的需求。 – JosefAssad 2013-04-24 12:04:49

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

有允许去解决它两种主要方法:

要通过ssh运行的命令,你可以尝试使用fabric作为library(这是水平高于paramiko)。