带有输出流的并行 ssh (pssh)

Posted

技术标签:

【中文标题】带有输出流的并行 ssh (pssh)【英文标题】:parallel ssh (pssh) with output stream 【发布时间】:2021-02-26 15:56:37 【问题描述】:

我有 3 台服务器,我想从客户端并行地在所有服务器上运行命令,并查看输出

我曾尝试使用 pssh,但它仅在命令退出时才显示输出。但我想要的是客户端标准输出上所有服务器的输出,因为它在退出之前会产生输出。

例如,当我在所有服务器上运行“ping google.com”时,只有当我按下 Ctrl+C 时才会得到输出:

我的命令如下所示:

pssh -h server_list -l userName -i pemFile.pem 'ping google.com'

在 ping 时如何查看所有 3 台服务器的 ping 输出?

【问题讨论】:

【参考方案1】:

我试图达到同样的效果,对我来说最好的方法是指定一个输出目录,然后按照输出文件上的流,如下所示:

我们添加-o /tmp/out -t 0 这样我们就可以得到每个主机的输出到指定的目录,并且我们没有得到任何超时。

pssh -h server_list -l userName -i pemFile.pem -o /tmp/out -t 0 'ping google.com'

让它继续运行,然后跟随潮流。假设您的 server_list 中有 host1、host2、host3 和 host4,您可以执行以下操作: tail -f /tmp/out/host1,2,3,4

【讨论】:

我认为我们可能有不同的 pssh 版本,所以请告诉我这些选项是否适合您,因为 -i 对我来说是 --inline-stdout

以上是关于带有输出流的并行 ssh (pssh)的主要内容,如果未能解决你的问题,请参考以下文章

使用 JSch 通过 SSH 运行命令

字节输出流写多个字节的方法和字节输出流的续写和换行

输入流与输出流

IO流23 - 字节流 - 字节输出流的缓冲流以及字节输入流的缓冲流BufferedOutputStream&BufferedInputStream

字节输出流写多个字节的方法,字节输出流的续写和换行

关于IO流中的输入流输出流的理解