2011-09-27 48 views
4

嗨,大家好我是新來期待腳本,我正在寫一個腳本來運行ssh,以便登錄遠程主機,所有操作完成後,我鍵入退出並註銷。但我希望腳本繼續運行並在本地主機上寫入日誌。劇本是這樣的:期望腳本可以在「交互」後繼續執行其他命令嗎?

#!/usr/bin/expect 
spwan ssh [email protected]_host 

expect { 
    "password:" { 
     send "123123\r" 
    } 
} 

interact; 
send "echo $(date) >> login_history.log\r" 

但最後的命令「送......」總是喜歡 錯誤信息失敗「派:重生ID EXP4不開......」

當我登錄從遠程主機關閉,期望腳本可以繼續工作,因爲它在本地主機上運行?非常感謝。

回答

4

是的,處理可以在[交互]之後繼續。

簡短的回答:改變過去{發送...}到{EXEC日期>> login_history.log}

有你要明白,實現你後控制流的幾個概念。首先,http://www.cotse.com/dlf/man/expect/interact_cmd_desc.htm提供了一個簡潔的概要和中間[交互]使用的例子。

第二:你爲什麼看到消息「... spawn id ...不能打開...」?因爲spawn id未打開。你寫的腳本實際上說是「交互,然後在交互結束後,發送一個新的命令到ssh進程。」如果你已經註銷,那麼當然,已經失效的進程的id不再可用。

第三:你如何達到你想要的?我不確定你想要什麼。它聽起來,就好像它只是爲了簡單地轉換[發送]就像我上面所描述的那樣。這對你有什麼看法?

+1

非常感謝,你的回答給了很多信息。並執行命令沒有工作 – qwerty

+0

不客氣,qwerty。我感謝你明確的後續行動,你現在擁有你所追求的東西。 –

相關問題