2011-11-10 38 views
3

现在我正在一个项目中,testscript必须连接许多(3-10)远程计算机(SSH并执行一些操作)。 我开始使用pexpect,它很简单,就像一个按钮。它工作正常。pexpect在不同的窗口输出

我想在测试过程中看到通信。我知道可以将日志重定向到屏幕。但在这种情况下,日志(来自不同计算机)是混合的。 我想要的是为每个新的生成对象打开新的终端窗口(或控制台或其他)。在这种情况下,我可以在不同的窗口中看到所有通信。此外,我想在每个窗口中保留spawn.interact()的可能性。 我觉得它有可能以某种方式,但我不知道如何。我觉得有些文件指针(或管道),应传递给新的窗口以某种方式(?) (SecureCRT的人都知道sometihng这样,它拥有标签拼箱的窗户,可以分别访问它们,但它是一个商业产品)

或者让我让问题更简单。 如果我这样做,我可以在新窗口中打开一个新的外壳:

p=Popen(["cygstart", "bash"])

我怎样才能读取和写入从我的脚本(父)这个壳,看看它在这个新的窗口?

我真的很感激它,如果你们中的一个人可以指出我正确的方向。

如果你告诉我要阅读或寻找的内容(在谷歌上),就足够了,因为我没有发现任何人有这样的问题。 环境是cygwin。

在此先感谢

BR:DRV

+0

我知道这是非常古老的,但你有没有得到这个工作?我基本上需要做这个确切的事情。 –

回答

0

您是否尝试过使用日志文件参数?

child = pexpect.spawn('some_command') 
mylog = open('/tmp/mylog','w') 
child.logfile = mylog 

这将自动记录所有通信文件,包括调用spawn.interact()

在网站上提供更多信息后,输入命令:http://pexpect.sourceforge.net/pexpect.html 搜索“日志文件”,找到相关文档。