2013-10-24 23 views
0

我有一個問題,我找不到答案。Python,是否可以採用pexpect sendline輸出並在其上添加一個contion?

我使用Python pexpect模塊通過ssh連接到子應用程序,並執行諸如「ls」,「history」等命令。我需要幫助,執行像檢索sendline輸出一樣的操作,並檢查它是否包含特定的String chaine或其他類型的操作。 有人可以幫我嗎?

這是我使用的代碼的一個簡單的例子:

child = pexpect.spawn('ssh -l karaf -p 8101 localhost') 
child.logfile = open("/home/user/python_HR/logs.txt", "w") 
child.expect('password:') 
child.sendline(mypassword) 
child.sendline(command1) 

在這裏,我需要執行的「if」,這將檢查是否child.sendline(命令1)的結果包含字符串CHAINE「測試「

我已經知道如何將所有輸出保存在日誌文件中。還有前後屬性不幫我。 預先感謝您。

+0

你需要'期待()'的東西,如提示增益控制,然後使用'.before'屬性看什麼在此之前已經打印。 –

回答

0

既然你打了EOF那麼你可以有這樣的代碼:

index = pexpect.expect(['test', pexpect.EOF, pexpect.TIMEOUT]) 
    if index == 0:           
     do_something() 
    elif index == 1: 
     print(pexpect.before) 
    elif index == 1: 
     print(pexpect.before) 

我希望,如果你期待EOF,你將能夠使用。之前的屬性。

或者: 您可以執行該命令並將其輸出到管道,然後下載該文件並在本地使用。

,如果你願意,你可以手動使用pexpect.interact()

+0

謝謝你的快速回答,我很驚訝。你提出的解決方案肯定可以幫助我。有一件事我正在嘗試,如果我繼續使用choice = child.expect('blabla'),那麼檢查選擇值它也可以工作。問題是如果它找不到「blabla」它會生成pexpect.EOF異常。有沒有其他的解決方案不會得到這個異常? – Hani

相關問題