我想编写一个脚本,打开一个带有不同选项卡的终端,使用每个选项卡登录服务器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,您将返回到本地终端。