Linux批量管理工具parallel-ssh

jqh 2013-08-10

Linux系统映像规模当超过30时,小小的变更也会浪费很多时间,Linux系统下有很多可用的集中管理方案,例如著名的puppet,这个是用ruby开发,号称可以管理以万计的服务器。不过对于大多数SA来说,这个不怎么轻量,设置有点复杂。
这里推荐PSSH,比DSH更强大的批量管理工具,先来看下它的命令列表。

pssh 包安装 5 个实用程序:

parallel-ssh (pssh) 在多个主机上并行地运行命令。
parallel-scp (pscp)把文件并行地复制到多个主机上。
parallel-rsync (psync)通过 rsync 协议把文件高效地并行复制到多个主机上。
parallel-slurp (pslurp)把文件并行地从多个远程主机复制到中心主机上。
parallel-nuke (pnuke)并行地在多个远程主机上杀死进程。

安装步骤(前提系统中已经安装有python2.4+):

wget http://parallel-ssh.googlecode.com/files/pssh-2.3.1.tar.gz
tar xvf pssh-2.3.1.tar.gz
cd pssh-2.3.1
python setup.py install

执行完后可以看到执行文件,相关库文件,man文件已经安装。

创建主机列表:

vi webapp.txt
192.168.56.11
192.168.56.12
192.168.56.13
192.168.56.14

配置SSH信任关系

mkdir ~/.ssh
ssh-keygen -t rsa
scp ~/.ssh/id_rsa.pub 192.168.56.11:/root/.ssh/authorized_keys
scp ~/.ssh/id_rsa.pub 192.168.56.12:/root/.ssh/authorized_keys
scp ~/.ssh/id_rsa.pub 192.168.56.13:/root/.ssh/authorized_keys
scp ~/.ssh/id_rsa.pub 192.168.56.14:/root/.ssh/authorized_keys

或者通过脚本批量拷贝

ip=192.168.56.
for i in $(seq 11 14)
do
ssh $ip$i -C mkdir /root/.ssh
scp ~/.ssh/id_rsa.pub $ip$i:/root/.ssh/authorized_keys
done

或者通过读取文件的脚步拷贝

for i in `cat webapp.txt`
do
ssh $i -C mkdir /root/.ssh
scp ~/.ssh/id_rsa.pub $i:/root/.ssh/authorized_keys
done

执行命令示例

#查看启动时间
pssh -h webapp.txt -l root -P uptime
#复制文件到主机
pscp -h webapp.txt -l root forzw.repo /etc/yum.repos.d/
#关闭SELINUX
pssh -h servers.txt -l root -P \
"sed -i '/SELINUX=enforcing/s/SELINUX=enforcing/SELINUX=disabled/'/etc/sysconfig/selinux"

推荐阅读:

相关推荐