PDSH(Parallel Distributed Shell)是一个用于在多个远程主机上并行运行shell命令的工具,当你使用 pdsh
命令在远程主机上执行命令时,只有远程主机会执行该命令,本地主机不会执行。以下是安装和使用PDSH的步骤:
在CentOS系统上,可以使用以下命令安装pdsh:
sudo yum install pdsh
2.创建包含远程主机IP的主机文件
可以使用以下命令创建包含远程主机IP的主机文件:
echo "host1 host2 host3" > hosts.txt
或者使用编辑器创建hosts.txt文件,并添加主机IP列表。
3.在所有远程主机上安装pdsh
在使用pdsh之前,需要在所有远程主机上安装pdsh。可以使用以下命令在远程主机上安装pdsh:
sudo yum install pdsh
4.使用pdsh运行命令
可以使用pdsh命令在所有主机上运行命令。以下是一些示例:
在所有主机上运行命令:
pdsh -w ^hosts.txt command
在所有主机上安装软件包:
pdsh -w ^hosts.txt sudo yum install package
在所有主机上运行命令并将输出保存到文件中:
pdsh -w ^hosts.txt command > output.txt
5.运行命令中途失败原因
-
确认 ssh-askpass 是否已经安装,如果没有安装可以尝试安装 openssh-askpass 软件包。
sudo yum install openssh-askpass
如果仍然出现该错误,可以尝试将远程主机的公钥添加到本地主机的 ~/.ssh/known_hosts 文件中,可以使用以下命令:
ssh-keyscan -H remote_host_ip >> ~/.ssh/known_hosts
其中 remote_host_ip 是远程主机的 IP 地址
6.每次pdsh不用填密码
-
在本地机器上生成ssh密钥对,如果已经有密钥对可以跳过此步骤:
ssh-keygen -t rsa
按照提示输入密钥对的保存路径和密码,可以不输入密码。默认情况下生成的密钥对保存在
~/.ssh/
目录下,私钥文件为id_rsa
,公钥文件为id_rsa.pub
。 -
将本地机器的公钥拷贝到远程机器的
~/.ssh/authorized_keys
文件中,以实现ssh密钥认证:ssh-copy-id -i ~/.ssh/id_rsa.pub remote_user@remote_host
其中,
remote_user
是远程机器的用户名,remote_host
是远程机器的主机名或IP地址。执行此命令后,需要输入远程机器的密码。 -
在
pdsh
的配置文件/etc/dsh/dsh.conf
(须自己创建)中添加ssh密钥认证的配置:# Use ssh as the rcmd module. dsh: rcmd: ssh # ssh options. ssh_options: -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -i /
4.多个远程一起运行
在hosts.txt中添加ip,再运行对应的6.2步骤即可。