如何通过仅在一个终端中执行命令来在多个终端中执行命令?

如何通过仅在一个终端中执行命令来在多个终端中执行命令?

我将拥有多台通过 SSH 连接的机器,因此我将打开多个终端窗口,虽然我想要执行一个命令以便所有机器都执行它,但目前我必须在每个单独的终端窗口中执行它,有什么办法可以让我在一个终端中执行一个命令,该命令将在所有指定的终端会话中执行指定的命令,以提高效率,因为我不想将它输入到每个单独的终端窗口中?如果gnome-terminal这有任何区别,我将使用它。

我正在运行带有 GNOME 3.18 的 Ubuntu GNOME 15.10,其他机器也应该运行相同的系统。

答案1

我使用过的一个方法是ClusterSSH一次发送到多个终端窗口。

sudo apt-get install clusterssh

ClusterSSH将打开自己的终端窗口,您可以使用应用程序向其发送命令。进入后,ClusterSSHCtrl+ Shift++或单击Hosts菜单中的 ,然后选择Add host(s) or cluster(s)并输入要打开的所有内容,每个内容之间用空格隔开。您应该会看到一个如下所示的窗口:

在此处输入图片描述

然后,您可以在菜单项下方的框中输入要一次发送到所有窗口的任何命令File Hosts Send Help

我还编写了一个脚本,您可以从命令提示符运行该脚本,以打开任意数量的 Cluster SSH 窗口。我建议您在使用此脚本之前先运行该脚本,ssh-copy-id localhost以便它在启动时无需输入密码。

剧本:

#!/bin/bash

if [[ $1 == "" ]]; then

echo -n "Please enter number of CSSH windows you want to open: "
read num1

else

num1=$1

fi

if [[ ! ${num1} || ${num1} = *[^0-9]* ]]; then
    echo "${num1} is invalid input.  Please only use numbers."
    exit 1
fi

for i in $(seq $num1); do echo localhost; done | xargs nohup cssh >/dev/null 2>&1 &
disown -a

希望这可以帮助!

答案2

查看terminator终端模拟器。主页带有屏幕截图:http://gnometerminator.blogspot.hu/p/introduction.html

它可以打开多个窗格(右键菜单->水平/垂直拆分,或其相应的Ctrl++ /快捷Shift键)。OE

然后单击窗格左上角的按钮将这些窗格组织成组,并向组成员(或所有终端)广播按键。(这些也有快捷方式,您可以在右键单击 -> 首选项菜单中查看或更改它们。)

有一个 Ubuntu 软件包可用,但如果你真的喜欢这个应用程序并计划长期使用它,我建议你查看 gtk3 版本https://code.launchpad.net/~gnome-terminator/terminator/gtk3。Ubuntu 发布了 gtk2 版本,但是 gtk3 版本的改进更多(主要是因为对负责实际终端仿真的底层 VTE 库的 gtk3 版本进行了大量修复,但也因为最近对 Terminator 本身进行了大量修复)。

相关内容