我有一个脚本,我正在使用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.
答案 0 :(得分:1)
待办事项
child.send(cmd)
child.pexpect(cmd)
child.send('\n')
而不是
child.sendline(cmd)
这将解决您的问题。 (但在发送密码时请执行child.sendline(passwrd))