pssh 用于同时管理多台服务器,在安装Hadoop时可以同步Hadoop已经配置好的安装文件,十分方便,本文将介绍pssh的基本命令和使用方法。由于pssh基于python实现的,所以在安装之前务必保证安装好python2.6以上。
一、安装:
先安装ez_setup.py,ez_setup.py是python官方给出的一个安装setuptools的工具,利用它,我们可以很轻松用命令行就自动完成安装过程。
#wget http://peak.telecommunity.com/dist/ez_setup.py
#python ez_setup.py
接下来下载pssh安装包:
#wget http://parallel-ssh.googlecode.com/files/pssh-2.3.tar.gz
如果Google被处理了可以使用这个站点:
#wget http://files.opstool.com/files/pssh-2.3.tar.gz
解压安装包:
# tar zxvf pssh-2.3.tar.gz
# cd pssh-2.3
安装:
# python setup.py install
二、pssh使用:
(假设ssh已做好SSH信任,如果没有的话会要求输入密码)
pssh工具包主要有5个程序:
pssh 多主机并行运行命令
pscp 传输文件到多个hosts,他的特性和scp差不多
pslurp 从多台远程机器拷贝文件
pnuke kill远程机器的进程
pslurp 从远程主机考本文件到本地
prsync 使用rsync协议从本地计算机同步到远程主机
参数说明:
-h 执行命令的远程主机列表,是一个文本文件,主机ip或主机名以回车符分隔。
-l 远程机器的用户名
-p 一次最大允许多少连接(小写)
-o 输出内容重定向到一个文件(小写)
-e 执行错误重定向到一个文件
-t 设置命令执行的超时时间
-A 提示输入密码并且把密码传递给ssh
-O 设置ssh参数的具体配置,参照ssh_config配置文件(大写)
-x 传递多个SSH 命令,多个命令用空格分开,用引号括起来
-X 同-x 但是一次只能传递一个命令
-i 显示标准输出和标准错误在每台host执行完毕后
-I 读取每个输入命令,并传递给ssh进程 允许命令脚本传送到标准输入
-P 打印输出(大写)
下面以管理一台主机为例:
host.txt的内容:
[root@centos pssh-2.3]# cat host.txt
192.168.1.199
1、pssh 多主机并行运行命令
[root@centos pssh-2.3]# pssh -P -h host.txt uptime
192.168.1.199: 11:31:06 up 5 min, 2 users, load average: 0.24, 0.13, 0.07
2、pscp 把文件并行地复制到多个主机上
从服务器端给客户端传送文件:
[root@centos pssh-2.3]# pscp -h host.txt /etc/profile /tmp/
[1] 11:36:55 [SUCCESS] 192.168.1.199
表示将本地的/etc/sysconfig/network传到目标服务器的/tmp/network
3、prsync 使用rsync协议从本地计算机同步到远程主机
[root@centos pssh-2.3]# prsync -h host.txt -l root -a -r /etc/sysconfig /tmp/
[1] 11:38:47 [SUCCESS] 192.168.1.199
表示将本地的/etc/sysconfig目录递归同步到目标服务器的 /tmp/目录下,并保持原来的时间戳,使用用户 root
4、pslurp 将文件从远程主机复制到本地
和pscp方向相反:
[root@centos pssh-2.3]# pslurp -h host.txt -L /tmp/test -l root /tmp/network test
[1] 11:40:54 [SUCCESS] 192.168.1.199
表示将目标服务器的/tmp/network文件复制到本地的/tmp/test目录下,并更名为test
在/tmp/test目录下即可看见192.168.1.199这个目录,目录中存放复制过来的文件。
[root@centos pssh-2.3]# cd /tmp/test
[root@centos test]# ls
192.168.1.199
5、pnuke 并行在远程主机杀进程:
[root@centos pssh-2.3]# pnuke -h host.txt syslog
[1] 11:45:12 [SUCCESS] 192.168.1.199
//杀死目标服务器的syslog进程