【问题标题】:How to exit from ssh session and execute commands on the last shell from a shell script?如何退出 ssh 会话并在 shell 脚本的最后一个 shell 上执行命令?
【发布时间】:2015-08-29 22:55:33
【问题描述】:

我正在尝试编写一个小的 shell 脚本。它应该退出当前的 ssh 会话,但之后在我的本地计算机上执行命令。我不知道这是否可能。情况如下:我修改了一个项目,在我的构建服务器上测试并构建它。当我启动脚本时,我会在我的构建服务器上,我会修改和测试项目。现在我想要一个脚本来加快编译项目并将其安装在我的本地计算机上的过程。要手动执行此操作,我基本上会执行以下操作:

user@buildserver:~$ ./build project
user@buildserver:~$ exit
user@localcomputer:~$ scp buildserver:/home/user/project/binary /tmp
user@localcomputer:~$ /home/user/install /tmp/binary

到目前为止,我唯一要做的就是通过在 s shell 脚本中调用 logout 来退出 ssh 会话。

【问题讨论】:

    标签: bash shell unix ssh logout


    【解决方案1】:

    在您通过 SSH 连接的远程计算机上运行的脚本无法在您的计算机上执行命令,除非您与您的计算机建立进一步的 SSH 连接(如果您在 NAT 后面或没有SSH 服务器正在运行)。

    一种可能的替代方法是在您的计算机上安装一个脚本,该脚本通过 SSH 在远程计算机上运行 shell 脚本;远程脚本完成后,本地 SSH 客户端将退出,您的本地脚本可以继续退出所需的任何本地命令。

    【讨论】:

    • 感谢您的回答,我会在本地电脑上安装一个 ssh 客户端。
    • @timgame:你可能已经有一个 SSH 客户端。否则,我不确定你是如何连接到 buildserver 的!
    • 不,您不需要服务器。您在本地运行的脚本基本上是ssh buildserver 'cd place; build project' && scp buildserver:place/binary /tmp && install /tmp/binary(假设build project 会在出现故障时以非零退出代码正确退出)。
    猜你喜欢
    • 2013-03-01
    • 2017-08-15
    • 2018-03-29
    • 2022-12-07
    • 1970-01-01
    • 1970-01-01
    • 2016-02-23
    • 2011-01-04
    • 2012-12-05
    相关资源
    最近更新 更多