【发布时间】:2017-04-05 04:54:35
【问题描述】:
每次通过 PuTTY SSH 到服务器时,我都想运行一些 shell 命令。我正在连接到由其他人管理的生产网络服务器,我不想在那里存储我自己的脚本。
我看到选项 Connection > SSH > Remote Command,但如果我将初始化命令放在那里,在启动会话后,它会在命令执行后立即关闭。如何运行远程命令,然后保持会话打开以便我可以继续使用它?
【问题讨论】:
每次通过 PuTTY SSH 到服务器时,我都想运行一些 shell 命令。我正在连接到由其他人管理的生产网络服务器,我不想在那里存储我自己的脚本。
我看到选项 Connection > SSH > Remote Command,但如果我将初始化命令放在那里,在启动会话后,它会在命令执行后立即关闭。如何运行远程命令,然后保持会话打开以便我可以继续使用它?
【问题讨论】:
命令完成后,SSH 会话会立即关闭(以及 PuTTY)。默认情况下,“命令”是一个 shell。由于您已覆盖此默认“命令”,但仍想运行 shell,因此您必须自己显式执行 shell:
my-command ; /bin/bash
【讨论】:
一个选择是像这样设置你的腻子远程命令:
ls > dir.ls & /bin/bash
在此示例中,您要运行的命令是“ls > dir.ls”,它会创建包含目录列表内容的文件 dir.ls。
如果您想让 shell 保持打开状态,您可以添加附加命令“/bin/bash”或您选择的任何其他 shell。
【讨论】:
;bash(您的& /bin/bash 也可以)来启动bash 并保持连接打开。当我从 bash 中 exit 时,Putty 窗口也会按我的预期关闭,这很好。
&,您可以在shell 中并行运行命令。在这种情况下,通常不是您想要的。您通常希望使用 ; 来代替运行命令 before shell。见my answer。