首先韋斯它本质上是一个并行分布式 shell,可以在给定的主机列表上执行命令。但是,我发现自己处于 IPv6 问题设置中。似乎 pdsh 无法使用 IPv6,因为我收到错误消息:
pdsh -w ^hostnames my_command
pdsh@myhost: gethostbyname("foobar") failed
我也尝试过只使用 IPv6 地址,但同样没有用。那么如何在仅 IPv6 可访问的一组主机上运行单个 shell 脚本以进行管理(没有 SGE 内容或类似内容)?
答案1
集群SSH可以通过 SSH 连接到多个主机,并将您的按键复制到您连接的所有主机或部分主机。它适用于 Linux 和一些 UNIX。ClusterSSH 可以交互使用,或者您可以使用 -a 标志提供在远程主机上运行的命令。但是,据我所知,它需要 X 服务器,因为它是一个 GUI 应用程序。
在我的系统上,它使用 OpenSSH 打开 SSH 连接,以便能够到达仅 IPv6 的目的地。
答案2
假设您已运行 ssh 守护进程,并且它们已绑定到 IP6 接口 (/etc/ssh/sshd_config ListenAddress),则以下 shell 脚本或多或少应该可以执行您想要的操作:
for hostName in `cat serverList.txt`
do
(ssh userName@$hostName 'command' &) 2>&1 >> "${hostname}.log"
done
也可以看看:https://stackoverflow.com/questions/8677542/ssh-and-bring-up-many-processes-in-parallel-solaris
答案3
我喜欢 Dancer's Shell/Distributed Shell:
http://www.netfort.gr.jp/~dancer/software/dsh.html
由于它使用 SSH,如果您的主机可以通过 IPv6 访问并且运行 sshd,那么就没问题。
它至少在 Debian 和 Ubuntu 中打包。