首页 > 代码库 > 批量执行命令

批量执行命令

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"




介绍pssh参数
              -h  执行命令的远程主机列表    或者  -H  user@ip:port    文件内容格式[user@]host[:port]
              -l  远程机器的用户名
              -p  一次最大允许多少连接
              -o  输出内容重定向到一个文件
              -e  执行错误重定向到一个文件
              -t  设置命令执行的超时时间
              -A  提示输入密码并且把密码传递给ssh
              -O  设置ssh参数的具体配置,参照ssh_config配置文件
              -x  传递多个SSH  命令,多个命令用空格分开,用引号括起来
              -X  同-x  但是一次只能传递一个命令
              -i  显示标准输出和标准错误在每台host执行完毕后
              -I  读取每个输入命令,并传递给ssh进程  允许命令脚本传送到标准输入(大写的i)

          5  介绍软件包内其他命令
                pscp      传输文件到多个hosts,他的特性和scp差不多
                pslurp      从多台远程机器拷贝文件
                pnuke        kill远程机器的进程

批量执行命令