如何在一些不同的终端上执行一个程序的输出
问题描述:
我最后的问题也是同样的问题,但没有得到适当的建议,所以我再次问。如何在一些不同的终端上执行一个程序的输出
我有一个连接到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之后执行任何操作。
答
您看到的实际问题是如何避免在运行时阻止GUI事件循环ssh
。
有允许去解决它两种主要方法:
在后台线程中运行
ssh
和使用an appropriate for your GUI framework method of communicating with the main GUI thread报告结果。异步运行
ssh
并订阅其I/O事件。这里是an example for gtk framework。
你使用什么终端? – 2013-04-24 11:51:44
@ExP:xfce4-terminal – nammu 2013-04-24 11:53:12
当你不满意你第一次回答的问题时,你不应该重复提问。相反,在第一个问题中解释什么是答案不符合你的需求。 – JosefAssad 2013-04-24 12:04:49