Shell SSH:远程运行脚本并停留在那里
我希望在远程系统上运行一个脚本,然后希望留在那里。 正在运行以下脚本:-Shell SSH:远程运行脚本并停留在那里,shell,unix,ssh,Shell,Unix,Ssh,我希望在远程系统上运行一个脚本,然后希望留在那里。 正在运行以下脚本:- ssh user@remote logs.sh 这确实会运行脚本,但在此之后,我将返回主机系统。我需要呆在遥控器上。我试过 ssh user@remote logs.sh;bash -l 它以某种方式解决了问题,但仍然不能完全像命令那样作为新登录:- ssh user@remote 或者,如果我可以在脚本中包含一些内容,以便在运行脚本的同一目录中打开bash终端,那就更好了。请建议 试试这个: ssh -t user
ssh user@remote logs.sh
这确实会运行脚本,但在此之后,我将返回主机系统。我需要呆在遥控器上。我试过
ssh user@remote logs.sh;bash -l
它以某种方式解决了问题,但仍然不能完全像命令那样作为新登录:-
ssh user@remote
或者,如果我可以在脚本中包含一些内容,以便在运行脚本的同一目录中打开bash终端,那就更好了。请建议 试试这个:
ssh -t user@remote 'logs.sh; bash -l'
将这两个命令传递到ssh
需要引号。-t
选项强制执行伪tty分配
讨论
考虑:
ssh user@remote logs.sh;bash -l
当shell解析这一行时,它将它拆分为两个命令。第一个是:
ssh user@remote logs.sh
这将在远程计算机上运行logs.sh
。第二个命令是:
bash -l
这将在本地计算机上打开一个登录shell
上面添加了引号,以防止shell以这种方式拆分命令。您不能只执行
ssh吗user@remotelogs.sh;sshuser@remote
?你所说的“不完全像新登录一样工作”是什么意思?加入一个-t
来分配一个pty
,因为他试图获得一个交互式shell,而不仅仅是运行一个命令;如果您将命令传递给ssh,它不会通过default@Petesh谢谢bash-i
工作正常,但是ssh-t
工作得更好。答案已更新。此外--要在ssh
会话完成后运行命令:ssh-tuser@remote'logs.sh;bash-l′;echo“-[remote session done]”代码>。该消息在您退出后打印。如果shell脚本不在远程计算机上,我们如何在不上传的情况下将shell脚本从本地计算机运行到远程?