Ksh脚本:如何保留在ssh中并继续脚本

时间:2016-09-13 19:38:29

标签: linux unix ksh

因此,对于我的脚本,我希望ssh进入远程主机并在脚本结束后保留​​在远程主机中,并且在脚本结束时更改目录以匹配远程主机。

#!/bin/ksh

ssh -t -X mylogin@myremotemachine 'cd $HOME/bin/folder1; echo $PWD; ssh -q -X ssh mylogin@myremotemachine; cd $HOME/bin/folder2; echo $PWD'

在第二个ssh之前,PWD会被正确更改。第二个ssh的原因是因为它在正确的远程主机中结束了脚本,但是它不会保留我在其后面放置命令所尝试的目录更改但是它们不会执行。

有没有人有任何想法?

1 个答案:

答案 0 :(得分:1)

只需在命令列表的末尾启动一个shell:

ssh -t -X mylogin@myremotemachine 'cd $HOME/bin/folder1; echo $PWD; ssh -q -X ssh mylogin@myremotemachine; cd $HOME/bin/folder2; echo $PWD; ksh'

如果您希望shell是登录的(即.profile),请使用exec -l

ssh -t -X mylogin@myremotemachine 'cd $HOME/bin/folder1; exec -l ksh'

如果远程服务器使用的旧ksh版本不支持exec -l内置版,并且bashksh93可用,则此处为解决方法:

ssh -t -X mylogin@myremotemachine 'cd $HOME/bin/folder1; exec bash -c "exec -l ksh"'