Python Pexpect spawn对象Flush

时间:2013-10-17 17:08:22

标签: python linux pipe pexpect

我有一个脚本,我正在使用pexpect创建一个spawn对象。

代码如下所示:

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

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

现在我通过发送su然后提供密码成为了su。现在我的预期变为#

我有一台连接到这台衍生PC(192.X.X.X)的路由器192.168.1.1

我通过发送telnet 192.168.1.1远程登录此路由器。从这台路由器完成后,我想退出telnet会话。

所以我发送exit并期待#,因为我将回到生成的PC的根目录。但我看到的是,我实际上是以<作为我的提示。

所以它不知何故两次发送“退出”。一个人从telnet带我出去,另一个人把我从root身上带走。我认为管道没有被冲洗掉,我们得到了一些旧的堆叠命令。

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

从文档中有一个flush函数,但它似乎什么都不做:

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

1 个答案:

答案 0 :(得分:1)

待办事项

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

而不是

child.sendline(cmd)

这将解决您的问题。 (但在发送密码时请执行child.sendline(passwrd))