2013-10-17 93 views
1

我有一個腳本,我使用pexpect創建一個產卵物體。Python Pexpect產卵物體Flush

的代碼看起來是這樣的:

self.rshcmd='rsh 192.X.X.X' 
self.pipe1 = pexpect.spawn(command=self.rshcmd, logfile=sys.stdout,maxread=512) 

現在後,我到這一點,我期待提示,我得到的是>

而現在我變成蘇發送su,然後提供密碼。現在我的提示如預期變得#

我有連接到該路由器催生了PC(192.X.X.X),這是192.168.1.1

我通過發送telnet 192.168.1.1遠程登錄到該路由器。從此路由器完成後,我想退出Telnet會話。

因此,我發送exit並期待#,因爲我會回到產生的PC的根源。但是我看到的是我實際上獲得了<作爲我的提示。

所以不知怎的,它發送兩次「退出」。一個人從telnet帶我出去,另一個帶我離開根。我認爲管道沒有被沖刷掉,我們得到了一些舊的堆疊命令。

有沒有一種方法可以清除管道中的所有舊命令?

從文檔有一個沖洗功能,但它似乎什麼都不做:

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

pexpect不發送命令兩次。在發送'exit'之前,telnet連接是否可以關閉? –

回答

1

做的

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

代替

child.sendline(cmd) 

這將解決您的問題。 (但在發送密碼時請做child.sendline(passwrd))