SSH 到服务器、执行命令和保持连接

Red*_*Red 12 ssh gnome-terminal

我想编写一个脚本,用不同的选项卡打开终端,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
Run Code Online (Sandbox Code Playgroud)

我试过这个...

cmd="bash -c 'ssh user@host htop';bash"
Run Code Online (Sandbox Code Playgroud)

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

用法:ssh [user@]hostname [command]

Oli*_*Oli 14

以其最简单的形式:

ssh -t user@host "command; bash"
Run Code Online (Sandbox Code Playgroud)

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

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