在不同窗口中输出pexpect
我现在在一个项目中,需要让测试脚本连接很多远程电脑(大约3到10台),通过SSH来做一些事情。 我开始使用pexpect,这个工具简单得像按个按钮一样,效果很好。
我想在测试过程中看到这些通信内容。我知道可以把日志重定向到屏幕上,但这样不同电脑的日志就会混在一起。 我希望每当有新的连接对象时,能打开一个新的终端窗口(或者控制台,随便什么都行)。这样我就能在不同的窗口里看到所有的通信内容。此外,我还希望在每个窗口里都能使用spawn.interact()的功能。 我觉得这应该是可能的,但我不知道怎么做。我想可能需要某种文件指针(或者管道)传递到新窗口里? (SecureCRT就有类似的功能,它有标签式的控制台窗口,可以单独访问,但那是个商业产品)
或者让我把问题简单化一下。 如果我这样做,我可以在新窗口中打开一个新的shell:
p=Popen(["cygstart", "bash"])
那么我该如何从我的脚本(父进程)中读写这个shell,以便在新窗口中看到内容呢?
如果你们能给我指个方向,我会非常感激。 只要告诉我该去找什么资料,或者在谷歌上搜索什么就行,因为我没有找到类似的问题。 我的环境是cygwin。
提前谢谢你们!
br:drv
1 个回答
0
你试过使用logfile这个参数吗?
child = pexpect.spawn('some_command')
mylog = open('/tmp/mylog','w')
child.logfile = mylog
这个参数会自动把所有的交流记录到一个文件里,包括你在调用spawn.interact()之后输入的命令。
想了解更多信息,可以去这个网站查看:http://pexpect.sourceforge.net/pexpect.html。搜索'logfile'可以找到相关的文档。