通过 SSH 连接到服务器,执行命令并维持连接

通过 SSH 连接到服务器,执行命令并维持连接

我想编写一个脚本,打开一个带有不同选项卡的终端,使用每个选项卡登录服务器ssh并在每个选项卡中执行命令。例如:htop

以下脚本打开一个终端,其中有 4 个选项卡,所有选项卡都已登录到服务器上。但是,如果我尝试htop在行中添加命令cmd=,它就不再起作用了……

#bin/bash

tab="--tab"
cmd="bash -c 'ssh user@host';bash"
foo=""

for i in 1 2 3 4; do
      foo+=($tab -e "$cmd")         
done

gnome-terminal "${foo[@]}"

exit 0

我已经尝试过了...

cmd="bash -c 'ssh user@host htop';bash"

...因为ssh --help说的语法ssh是:

用法:ssh [用户@]主机名 [命令]

答案1

最简单的形式是:

ssh -t user@host "command; bash"

-t是这里的关键部分。它强制主机为进程分配一个虚拟终端,使其保持打开状态。

如果您只想在一批服务器上运行 htop,则可以省略bash末尾的,但这意味着如果您退出 htop,您将返回到本地终端。

相关内容