2013-03-05 140 views
0

我用公鑰(無密碼)在服務器上用ssh登錄。
這是我想用一個bash以使自動化命令:
用ssh和本地腳本一起執行遠程bash,當它結束時,將終止遠程執行

ssh [email protected] 
cd path 
./bash0.sh parameter1 paramter2 & <-- this is a loop and is working on remote server in background 
exit <-- exit form ssh 

./bash1.sh <-- starting local bash 
ssh [email protected] pkill bash0.sh <-- kill the process at the end of the bash1.sh. From terminal is ok, but from bash? 

的問題是執行cd path後,立即從SSH的./bash0.sh paramter1 parameter2 &,然後退出,而不用等待./bash0.sh完成。我不能做ssh [email protected] ./path/bash0.sh paramter1 paramter2因爲bash文件包含相對路徑。

回答

0

簡單的方法:

./bash1.sh && ssh [email protected] pkill bash0.sh 
+0

'ssh user @ ip pkill bash0.sh'似乎可行,但我已經正確啓動'。/ bash0.sh',然後以更好的方式測試殺死進程。 – user1382278 2013-03-05 21:28:51

0

您可以用分號來分隔條件送他們通過ssh複式命令:(無需

ssh [email protected] "cd path;./bash0.sh parameter1 parameter2 & exit" 

exit惟獨顯示如何追加更多命令後&

ssh [email protected] pkill bash0.sh應該從一個bash腳本工作。你的終端可能也只是bash。

編輯:有關;,&&&操作符的詳細說明請參閱http://www.skorks.com/2010/05/executing-multiple-commands-a-bash-productivity-tip/

+0

它不起作用:找不到文件。我試過做'ssh user @ ip cd path; ls',但它顯示了我在終端中的本地路徑中的文件夾。第二個命令在本地執行,而不是在ssh中執行。 – user1382278 2013-03-05 21:27:44

+0

我忘了引號。應該與他們合作。 – deflomu 2013-03-06 17:28:44