2012-11-21 55 views
2

我似乎沒有得到預期的工作。我似乎無法趕上提示。遇到問題以便發現提示

以下是我有:

with settings(hide('commands', 'warnings') , warn_only=True): 
    prompts = expect('Are you sure you want to perform this operation? [Y/N]:', 'N') 
    with expecting(prompts): 
     run(sudo("/something.sh apply /some.file" , user="someuser")) 

我敢肯定,我做錯了什麼。

+0

你可以發佈'something.sh'的代碼嗎? –

+1

something.sh實際上是一個Blackboard修補腳本。看着它,我發現它基本上設置了它的環境,然後放入Java命令行腳本中。我猜這就是爲什麼它不起作用。不能通過兩個步驟值... – Ecogeek

+0

我不認爲這應該是一個問題。嘗試3.下面和更正的導入語句。 –

回答

0

我編輯了自己的代碼有一些小的事情:

  1. expecting需要一個列表
  2. 面料/ Fexpect須藤()和run()不能嵌套。你可能只需要須藤()
  3. 你必須逃脫正則表達式的符號,如[]以斜線\[或只是把「期望」短:

    prompts = [] 
    prompts += expect('Are you sure.*', 'N') 
    with expecting(prompts): 
        sudo("/something.sh apply /some.file" , user="someuser") 
    

而且,也許你不應該hide('commands'),具體取決於something.sh使用的提示。

+1

結構腳本仍在暫停等待輸入。不知道有什麼問題...這是輸出:out:執行預申請驗證... out:您確定要執行此操作嗎? [Y/N]:我試過了,沒有「out:」 – Ecogeek

+0

您是否正確導入了sudo的版本? '從ilogue.fexpect導入運行'? –

+0

運行包含sudo,我拿?這是我所擁有的:從fabric.api導入時間 導入env,角色,設置,sudo,puts,任務,隱藏,執行,中止,本地,runs_once from fabric.contrib.console導入確認 from fabric.state導入輸出 從ilogue.fexpect導入期望,期待,運行 – Ecogeek