Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何退出ssh会话并在shell脚本的最后一个shell上执行命令?_Bash_Shell_Unix_Ssh_Logout - Fatal编程技术网

Bash 如何退出ssh会话并在shell脚本的最后一个shell上执行命令?

Bash 如何退出ssh会话并在shell脚本的最后一个shell上执行命令?,bash,shell,unix,ssh,logout,Bash,Shell,Unix,Ssh,Logout,我正在尝试写一个小的shell脚本。它应该退出当前ssh会话,但之后在本地计算机上执行命令。我不知道这是否可能。情况如下:我修改一个项目,在我的buildserver上测试并构建它。当我启动脚本时,我会在我的buildserver上,并且我会修改和测试这个项目。现在我需要一个脚本来加快编译项目并将其安装到本地计算机上的过程。要手动执行此操作,我基本上会执行以下操作: user@buildserver:~$ ./build project user@buildserver:~$ exit user

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

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

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

在通过ssh连接到的远程计算机上运行的脚本无法在您的计算机上执行命令,除非与您的计算机建立进一步的ssh连接(如果您在NAT后面或没有运行SSH服务器,则这可能不是一个选项)


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

谢谢您的回答,我将在本地计算机上安装一个SSH客户端er.@timgame:您可能已经有了一个SSH客户端。否则,我不确定您首先是如何连接到
buildserver
的!不,您不需要服务器。您在本地运行的脚本基本上是
SSH buildserver'cd place;build project'&&scp buildserver:place/binary/tmp&&install/tmp/binary
(假设如果出现故障,
构建项目
将以非零退出代码正确退出)。