pssh是一个用python编写的可以在多台服务器上执行命令的工具,同时支持拷贝文件等功能,在同类工具中还是很方便使用的。项目地址:parallel-ssh
安装方法
Mac下可以直接使用brew来安装。
brew install pssh |
其他平台安装方法类似
wget https://parallel-ssh.googlecode.com/files/pssh-2.3.1.tar.gz |
pssh安装包给我们提供了多个非常实用的工具,我们可以查看一下。
➜ pssh ll /usr/local/Cellar/pssh/2.3.1/bin |
提供的工具作用如下:
- parallel-ssh (pssh) 在多个主机上并行地运行命令。
- parallel-scp (pscp)把文件并行地复制到多个主机上。
- parallel-rsync (psync)通过 rsync 协议把文件高效地并行复制到多个主机上。
- parallel-slurp (pslurp)把文件并行地从多个远程主机复制到中心主机上。
- parallel-nuke (pnuke)并行地在多个远程主机上杀死进程。
pssh基本使用方法
pssh -h host.txt -P "command" |
如果对pssh的参数不太明白的话,可使用–help来获得帮助。
➜ pssh pssh --help |
简单解释一下pssh help提供的例子。在hosts.txt中列出来的服务器上远程执行uptime命令,并将执行结果输出到/tmp/uptime目录下相应地服务器的文件中。
pssh -h hosts.txt -l root -o /tmp/uptime uptime |
其中相关参数说明:
-h hosts.txt 指定服务器列表的文件为hosts.txt
-l root 指定远程用户为root
-o /tmp/uptime 指定远程命令执行返回结果输出目录为/tmp/uptime
uptime 指定远程服务器上执行的命令为uptime
我们执行一下看看,执行结果说明在172.18.10.25和172.18.10.24两台服务器上执行成功。
[1] 09:51:28 [SUCCESS] 172.18.10.25 |
查看执行结果输出
ls -l /tmp/uptime |
cat /tmp/uptime/172.18.10.24 |
通过这个例子大家应该能够明白pssh的使用方法了吧。
pscp基本用法
pscp
用来将文件并行的复制到多个主机上。
pscp
和pssh
的很多参数都是一样的,就不在多说了,举一个简单的例子来说明一下pscp
的简单实用。
基本使用方法:
pscp -h ip文件 本地文件 远程目录 |
例子:将本机的/tmp/i.txt
文件复制到host.txt
列出的主机上的/tmp
目录
pscp -h hosts.txt -l root /tmp/i.txt /tmp |
特别参数说明:
-r 用于递归的复制目录 |
pslurp基本用法
pslurp
把文件并行地从多个远程主机复制到中心主机上
基本用法:
plurp -h ip文件 -L 本地目录 远程文件 本地文件名称 |
例子: 将host.txt
列出的主机上的/tmp/i.txt
文件复制到本机的/tmp/i.txt
pslurp -h host.txt -l root -L /tmp /tmp/i.txt i.txt |
特别参数说明:
-L 指定本地存放文件的目录 |
虽然帮助文档中说 -L
参数是可选的,但是经过我试验 -L
参数是必须的,要不然会报错。
增加 -L
参数后,会在 -L
指定的本地目录下创建[用户@]主机IP[:端口]
目录,对应的目录下用于存放从改主机复制过来的文件。
pnuke基本使用
pnuke
并行地在多个远程主机上杀死进程。
pnuke
的参数与pssh
一样,只是最后的字符串为要结束的进程名称
例子: 将host.txt
列出的主机上的httpd
进程杀死
pnuke -h host.txt -l root httpd |