在 bash 脚本中调用并行 ssh (pssh)

在 bash 脚本中调用并行 ssh (pssh)

我可以使用命令在一系列机器上并行运行命令pssh。例如,要foo在列出的几台机器上创建一个文件夹,hosts.txt我可以运行:

pssh -h hosts.txt -l MyUserName "mkdir foo"

但是由于该命令需要更多参数(即使用公钥进行身份验证等),我尝试创建以下 bash 脚本bar.sh,这样我想要运行的命令就简单地作为脚本的参数给出:

#!/bin/bash
pssh -h hosts.txt -l MyUserName "$@"

但是运行bar.sh mkdir foo会冻结终端,甚至我无法使用 Ctrl+C 将其杀死。

有任何想法吗?

答案1

我不太熟悉pssh。如果使用 GNU Parallel,您是否会遇到同样的错误:

#!/bin/bash
parallel -j10 --slf hosts.txt --nonall "$@"

将用户名放入 hosts.txt 中:

myuser@host1
myuser@host2

答案2

需要使用 -i(每个服务器的内联聚合输出和错误),下面将起作用:

pssh -h pssh.txt -l root -i uptime

相关内容