关于sendlines的使用,在pexpect模块中几乎没有什么帮助

时间:2015-01-09 13:03:49

标签: python pexpect

我使用pexpect远程登录交换机并执行某些操作。

我写了一个简单的代码如下:

child1 = pexpect.spawn(cmd1, timeout = 15)
child1.logfile = sys.stdout
j = child1.expect(prompt_list, timeout = 115)
if j == 1:
    print 'Inside username block'
    child1.sendline('test')
    j = child1.expect(prompt_list, timeout = 15)

当我使用sendline时,我在日志中看到它正在显示两次。不确定原因。我们可以阻止这个吗?

Inside username block
test
test

2 个答案:

答案 0 :(得分:1)

而不是使用

child1.logfile = sys.stdout

使用

child1.logfile_read = sys.stdout

答案 1 :(得分:0)

在不了解您的设置的情况下,我将提出此解决方案:

child1.setecho(False) # Turn off tty echo

我认为你所经历的就是这个小小的回声。

请确保在发送任何内容之前执行此操作,因为这会清空您的传出缓冲区,并且您可能会丢失一些信息。