2015-01-09 51 views
1

我使用pexpect telnet到交換機並執行某些操作。在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 
+0

您能夠在調試器中運行你的代碼? – jimmy

回答

1

而不是使用

child1.logfile = sys.stdout 

使用

child1.logfile_read = sys.stdout 
0

不知道任何關於您的設置,我會提出此解決方案:

child1.setecho(False) # Turn off tty echo 

我想你遇到的是這樣的tty回聲。

請確保您在發送任何內容之前這樣做,因爲這會清空您的傳出緩衝區,並且可能會丟失一些信息。

+1

這沒有幫助。我可以看到每個輸入重複兩次。 – user596922

+1

使用child.logfile_read = sys.stdout服務於此目的。 – user596922