如何在多台服务器上远程执行脚本,混合输出

如何在多台服务器上远程执行脚本,混合输出

你好,我正在寻找一个软件或某种技术,使我能够在一个终端窗口中执行以下操作:

  • 将启用 ssh 的机器列表作为输入,其中包含登录名、密码和脚本路径信息,如下所示:

    login:[email protected]/path/to/script/run.sh login:[email protected]/path/to/script/run.sh

  • 打开与这些机器的 ssh 连接并远程运行指定的脚本。

  • 所有脚本的输出都应传输到我的本地窗口。
  • 当我发送 Ctrl-C 之类的信号时,我想终止远程脚本,然后终止连接。如果我的机器宕机,远程脚本也会被终止,这是一个巨大的优势。

如果我可以在 Cygwin 终端中使用它,那将是一个加分项,因为我就是用的这个,但我愿意尝试任何可以完成这个的方法。

答案1

我假设你正在使用 OpenSSH。通过编程给 ssh 提供密码是故意设计的,因为这通常不是一个好主意。除了使用密码,你还可以使用公钥认证如果是这样,下面应该可以解决问题:

for cmd in [email protected]:/path/to/script/run.sh [email protected]:/path/to/script/run.sh; do
    ssh ${cmd%%:*} ${cmd#*:}
done

答案2

您将需要公钥认证,您还需要像 PSSH 这样的东西,它是一个基于 python 的工具,用于运行多个并行 ssh 会话。

https://code.google.com/p/parallel-ssh/

答案3

如果你能写 Perl,你应该检查一下网络::OpenSSH::并行

它可以使用公钥或密码验证登录远程主机并并行运行编程任务。

相关内容