首页 > 解决方案 > 带有输出流的并行 ssh (pssh)

问题描述

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

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

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

当我按下 Ctrl+C 时输出

我的命令如下所示:

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

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

标签: sshstdoutpsshparallel-ssh

解决方案


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

我们添加-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/host{1,2,3,4}


推荐阅读