2013-03-05 114 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