[ 其它 ] 批量管理服务器工具 :pssh [ 复制链接 ]
 
 
本文原发表我的博客,现转如下:
pssh是一个可以在多台服务器上执行命令的工具,同时支持拷贝文件,是同类工具中很出色的。 使用是必须在各个服务器上配置好密钥认证访问。
pssh 包安装 5 个实用程序:
pssh 在多个主机上并行地运行命令。
pscp 把文件并行地复制到多个主机上。
prsync 通过 rsync 协议把文件高效地并行复制到多个主机上。
pslurp 把文件并行地从多个远程主机复制到中心主机上。
pnuke 并行地在多个远程主机上杀死进程。
1.安装
[size=1em]

1
2
3
4
wget http://parallel-ssh.googlecode.com/files/pssh-2.2.2.tar.gz
tar zxvf pssh-2.2.2.tar.gz
cd pssh-2.2.2
python setup.py install

 
 
 
2.简单使用
在使用之前需要配置密钥访问,如下 :
#ssh-keygen #一直回车
#ssh-copy-id -i .ssh/id_rsa.pub [email protected]复制公钥到远端服务器 #
ps.如果端口不是默认 22 ,需要使用:ssh-copy-id -i .ssh/id_rsa.pub  ”-p 4567 [email protected]
创建 servers.txt文件:
192.168.16.1
192.168.16.2
[root@orkaudiobackup ~]# pssh -h servers.txt -l root -P uptime
192.168.16.X: 18:32:40 up 3 days, 7:07, 1 user, load average: 0.00, 0.00, 0.00
[1] 18:36:27 [SUCCESS] 192.168.16.X
更多用法查看:
[size=1em]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
[root@orkaudiobackup ~]# pssh --help
usage: pssh [OPTIONS] command [...]
 
options:
  --help                show this help message and exit
  -h HOST_FILE, --hosts=HOST_FILE
                        hosts file (each line "[user@]host[:port]")
  -H HOST_STRING, --host=HOST_STRING
                        additional host entries ("[user@]host[:port]")
  -l USER, --user=USER  username (OPTIONAL)
  -p PAR, --par=PAR     max number of parallel threads (OPTIONAL)
  -o OUTDIR, --outdir=OUTDIR
                        output directory for stdout files (OPTIONAL)
  -e ERRDIR, --errdir=ERRDIR
                        output directory for stderr files (OPTIONAL)
  -t TIMEOUT, --timeout=TIMEOUT
                        timeout (secs) (0 = no timeout) per host (OPTIONAL)
  -O OPTION, --option=OPTION
                        SSH option (OPTIONAL)
  -v, --verbose         turn on warning and diagnostic messages (OPTIONAL)
  -A, --askpass         Ask for a password (OPTIONAL)
  -x ARGS, --extra-args=ARGS
                        Extra command-line arguments, with processing for
                        spaces, quotes, and backslashes
  -X ARG, --extra-arg=ARG
                        Extra command-line argument
  -i, --inline          inline aggregated output for each server
  -I, --send-input      read from standard input and send as input to ssh
  -P, --print           print output as we get it

 
 
 
3.其他几个命令
pscp用法示例:
用代理机当前目录下面的get.sh分发到服务器列表中的/tmp目录下,名字为get.sh
[size=1em]

1
2
3
4
5
6
7
8
9
10
11
[root@orkaudiobackup ~]# pscp  -h servers.txt get.sh /tmp/get.sh
[1] 21:30:09 [SUCCESS] 192.168.16.145
[2] 21:30:09 [SUCCESS] [email protected]:4567
[3] 21:30:09 [SUCCESS] 192.168.16.147
[root@orkaudiobackup ~]# pssh -h servers.txt -P ls -al /tmp/get.sh
192.168.16.147: -rwxr-xr-x 1 root root 348 Sep  1 21:26 /tmp/get.sh
[1] 21:31:34 [SUCCESS] 192.168.16.147
192.168.16.145: -rwxr-xr-x 1 root root 348 Sep  1 21:30 /tmp/get.sh
192.168.16.190: -rwxr-xr-x 1 yin yin 348 Sep  1 21:29 /tmp/get.sh
[2] 21:31:34 [SUCCESS] 192.168.16.145
[3] 21:31:34 [SUCCESS] [email protected]:4567

 
 
 
pslurp用法示例:
把服务器列表中的/tmp/get.sh全部复制到代理 机的/tmp目录下面
[size=1em]

1
2
3
[root@orkaudiobackup ~]# ll /tmp/192.168.16.190
total 4
-rwxr-xr-x 1 root root 348 Sep  1 21:40 get1.sh

 
 
 
4.写完收工,晚安!