我可以使用命令在一系列机器上并行运行命令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