【问题标题】:SSH : Remotely run a script and stay thereSSH:远程运行脚本并留在那里
【发布时间】:2015-02-06 07:03:18
【问题描述】:

我希望在远程系统上运行一个脚本,然后希望留在那里。 运行以下脚本:-

ssh user@remote logs.sh

这确实会运行脚本,但之后我会回到我的主机系统。我需要留在远程一个。我试过了..

ssh user@remote logs.sh;bash -l

它以某种方式解决了问题,但仍然不能像命令那样完全像新登录一样工作:-

ssh user@remote

或者,如果我可以在我的脚本中包含一些可以在脚本运行的同一目录中打开 bash 终端的内容会更好。请建议。

【问题讨论】:

  • 你就不能ssh user@remote logs.sh; ssh user@remote吗?
  • “不完全像新登录一样工作”是什么意思?

标签: shell unix ssh


【解决方案1】:

试试这个:

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 以这种方式拆分命令。

【讨论】:

  • 抛出一个-t来分配一个pty,因为他试图获得一个交互式shell而不是仅仅运行一个命令;如果您将命令传递给 ssh,默认情况下它不会分配 tty
  • @Petesh 谢谢。 bash -i 工作但ssh -t 工作得更好。答案已更新。
  • 另外——在ssh 会话结束后运行命令:ssh -t user@remote 'logs.sh; bash -l'; echo "--[remote session done]--";。该消息在您退出后打印。或者你可以拥有任何你喜欢的东西。
  • 如果shell脚本不在远程机器上怎么办,我们如何在不上传的情况下将shell脚本从本地机器运行到远程?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-26
  • 2021-02-13
  • 1970-01-01
相关资源
最近更新 更多