Python Pexpect产卵物体Flush

我有一个脚本,我使用pexpect创build一个产卵物体。

代码如下所示:

self.rshcmd='rsh 192.XXX' self.pipe1 = pexpect.spawn(command=self.rshcmd, logfile=sys.stdout,maxread=512) 

现在我进入这个之后,我期望得到的提示是>

现在我通过发送su然后给密码变成su。 现在我的提示符如预期成为#

我有一个路由器连接到这个衍生的PC(192.XXX),这是192.168.1.1

我通过发送telnet 192.168.1.1 telnet到这个路由器。 我从这个路由器完成后,我想摆脱telnet会话。

所以我exit并期待#因为我会回到产生的PC的根源。 但是我所看到的是,我实际上正在得到我的提示。

所以不知何故,它发送两次“退出”。 一个把我从telnet带出去,另外一个带我离开根。 我认为pipe道没有被冲刷掉,我们得到了一些旧的堆叠命令。

有没有办法可以清除pipe道中的所有旧命令?

从文档中有一个刷新function,但它似乎什么都不做:

 flush(self) This does nothing. It is here to support the interface for a File-like object. 

 child.send(cmd) child.pexpect(cmd) child.send('\n') 

代替

 child.sendline(cmd) 

这将解决您的问题。 (但是在发送密码的时候做child.sendline(passwrd))