2014-04-07 75 views
0

我正在嘗試創建一個啓動ssh會話的單個腳本,並在遠程計算機上執行命令,然後執行會話背景。到目前爲止,我一直在玩-f或-f -N選項,但我不知道如何將會話帶回前臺來驗證我的命令是否正確執行。你如何編寫腳本ssh然後背景會話?

還是有辦法,一個腳本可以啓動SSH會話,並繼續輸入命令到新開的會議?然後背景那個會話? 如果沒有這些工作,我在想另一種方法是通過另一個腳本啓動ssh會話,上傳和執行命令。

如何做到這一點的任何想法。

+0

有關您正在嘗試完成的更多信息將會有所幫助。 –

回答

1

目前尚不清楚你正在嘗試做什麼。我會盡力幫助。

的一系列命令可以順序在使用單引號的字符串並用分號分隔命令的單個SSH會話發出。

$ ssh [email protected] 'ls; echo foo > bar; cat bar; rm bar' 

它會返回最後一次命令運行的結果。

我很困惑,爲什麼要背景會話。

如果需要,您可以在遠程機器上啓動一個長時間運行的進程與nohup的,然後關閉會話。

如果你只是需要一系列命令運行的每個取決於最後一個結果,你不需要後臺的過程中,只是把這種邏輯到您的命令序列。

$ ssh [email protected] 'if ![ -f bar ];then echo foo > bar && cat bar && rm bar; fi' 

如果有很多事情要做,就不會在多個連續的ssh和scp連接中造成危害。

+0

我的背景是在遠程命令執行後,會話將保持打開狀態,腳本可以返回到本地執行命令。 – user3219834

+0

我建議你先讓它順序工作,然後嘗試背景。但我的經驗是增加並行性往往比它值得的更麻煩。你需要一個不同的方法來驗證結果,如果你的背景,如http://stackoverflow.com/questions/356100/how-to-wait-in-bash-for-several-subprocesses-to-finish-and-返回退出代碼0 –