我有一个脚本,我使用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))