3 ssh command-line gnome-terminal automation
我将有多台机器通过 SSH 连接,所以我将有多个终端窗口,尽管我想做的是执行一个命令以便所有机器都执行它,但目前我必须做的是在每个单独的终端窗口中执行它,有什么方法可以在一个终端中执行命令,该命令将在所有指定的终端会话中执行指定的命令以提高效率,因为我不想输入它进入每个单独的终端窗口?gnome-terminal如果这有什么不同,我将使用。
我正在使用 GNOME 3.18 运行 Ubuntu GNOME 15.10,其他机器应该运行相同的。
我使用过的一种方法是ClusterSSH一次发送到多个终端窗口。
sudo apt-get install clusterssh
Run Code Online (Sandbox Code Playgroud)
ClusterSSH将打开自己的终端窗口,您可以使用应用程序向其发送命令。一旦ClusterSSH按下Ctrl+ Shift++或点击Hosts菜单,并选择Add host(s) or cluster(s)在所有输入您要打开的每一个之间的空格隔开。你应该得到一个看起来像这样的窗口:
然后在File Hosts Send Help菜单项下方的框中键入要一次发送到所有窗口的任何命令。
我还编写了一个脚本,您可以从命令提示符运行该脚本,以根据需要打开任意数量的集群 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
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!