pssh 是一个服务器批量管理工具,
可以对多个服务器执行脚本,文件拷贝等操作
1、下载安装 http://code.google.com/p/parallel-ssh/
2、解压,解压后即可执行
3、将解压后的目录放到 /usr/local/passh下
4、vim ~/.basgrc 增加如下代码
export PATH=$PATH:/usr/local/passh/bin
更新当前环境
source ~/.bashrc
5、创建服务器列表 vim /usr/local/passh/host_list.pssh
192.168.1.1
192.168.1.2
192.168.1.3
.........
6、创建一个硬链接 ln /usr/local/passh/host_list.pssh ~/host_list.pssh
7、向每个服务器加入自己的公钥
生成公钥
ssh-keygen
将公钥传到每台服务器
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.1
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.2
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.3
8、测试pssh
cd ~
pssh -h host_list.pssh -l root -P ls
-h 服务器列表文件
-l 登录用户名
-P 执行的命令
常用参数:
-h host_file 主机列表文件
-H [user@]host[:port] 单个主机
-H "[user@]host[:port] [ [user@]host[:port ] ... ]" 多个主机
-l user 以什么用户登录
-x args 额外执行多条ssh命令
-X arg 额外执行单挑ssh命令
-i 每台服务器结束后打印标准输出和标准错误
案例
连接2台机器
pssh -i -H "host1 host2" echo "hello, world"
连接某文件中所有机器
pssh -i -h hosts.txt echo "hello, world"
以root身份登录
pssh -i -h hosts.txt -A -l root echo hi
设置超时
pssh -i -h hosts.txt -t 0 sleep 10000
多有文件中有非常多的机器,用-p 100命令 指定每次指定连接100台服务器
pssh -i -h hosts.txt -p 100 -t 0 sleep 10000
不检查也不保存ssh的密钥:
pssh -i -h server-list.txt -l root -x "-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o GlobalKnownHostsFile=/dev/null" echo "hello, world"
prsync 使用rsync协议从本地计算机同步到远程主机[root@server ~]# prsync -h test.txt -l root -a -r /etc/sysconfig /tmp/etc 将本地的/etc/sysconfig目录递归同步到目标服务器的 /tmp/etc目录下,并保持原来的时间戳
pslurp 将文件从远程主机复制到本地,和pscp方向相反:[root@server ~]# pslurp -h test.txt -L /tmp/test -l root /tmp/network test 将目标服务器的/tmp/network文件复制到本地的/tmp/test目录下,并更名为test