我将拥有多台通过 SSH 连接的机器,因此我将打开多个终端窗口,虽然我想要执行一个命令以便所有机器都执行它,但目前我必须在每个单独的终端窗口中执行它,有什么办法可以让我在一个终端中执行一个命令,该命令将在所有指定的终端会话中执行指定的命令,以提高效率,因为我不想将它输入到每个单独的终端窗口中?如果gnome-terminal
这有任何区别,我将使用它。
我正在运行带有 GNOME 3.18 的 Ubuntu GNOME 15.10,其他机器也应该运行相同的系统。
答案1
我使用过的一个方法是ClusterSSH
一次发送到多个终端窗口。
sudo apt-get install clusterssh
ClusterSSH
将打开自己的终端窗口,您可以使用应用程序向其发送命令。进入后,ClusterSSH
按Ctrl+ 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 本身进行了大量修复)。