Ksh 脚本:如何留在 ssh 中并继续脚本
Ksh script: How to remain in ssh and continue the script
因此对于我的脚本,我想通过 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 之前正确更改。第二个 ssh 的原因是因为它在正确的远程主机中结束了脚本,但它不会保留我尝试通过在其后放置命令但它们不会执行的目录更改。
有没有人有什么想法?
只需在命令列表末尾启动一个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'
如果远程服务器使用不支持 exec -l
内置的旧 ksh
版本,并且如果 bash
或 ksh93
可用,这里有一个解决方法:
ssh -t -X mylogin@myremotemachine 'cd $HOME/bin/folder1; exec bash -c "exec -l 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 之前正确更改。第二个 ssh 的原因是因为它在正确的远程主机中结束了脚本,但它不会保留我尝试通过在其后放置命令但它们不会执行的目录更改。
有没有人有什么想法?
只需在命令列表末尾启动一个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'
如果远程服务器使用不支持 exec -l
内置的旧 ksh
版本,并且如果 bash
或 ksh93
可用,这里有一个解决方法:
ssh -t -X mylogin@myremotemachine 'cd $HOME/bin/folder1; exec bash -c "exec -l ksh"'