1

我有一个脚本,我在其中使用 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.XXX) 的路由器,它是192.168.1.1

我通过发送 telnet 进入这个路由器telnet 192.168.1.1。从这个路由器完成后,我想退出 telnet 会话。

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

所以它以某种方式发送“退出”两次。一个将我从 telnet 中取出,另一个将我从 root 中取出。我认为管道没有被冲洗掉,我们让他发送了一些旧的堆叠命令。

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

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

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

1 回答 1

1

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

代替

child.sendline(cmd)

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

于 2013-11-15T20:20:55.710 回答