首页 > 系统运维 > 批量管理服务器工具:pssh
您的足迹
  • 你没有浏览过任何文章或者你没有开启cookies。

批量管理服务器工具:pssh

pssh是一个可以在多台服务器上执行命令的工具,同时支持拷贝文件,是同类工具中很出色的。使用是必须在各个服务器上配置好密钥认证访问。

pssh 包安装 5 个实用程序:
pssh 在多个主机上并行地运行命令。
pscp 把文件并行地复制到多个主机上。
prsync 通过 rsync 协议把文件高效地并行复制到多个主机上。
pslurp 把文件并行地从多个远程主机复制到中心主机上。
pnuke 并行地在多个远程主机上杀死进程。

1.安装

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 root@192.168.16.X #复制公钥到远端服务器

ps.如果端口不是默认22 ,需要使用:ssh-copy-id -i .ssh/id_rsa.pub  “-p 4567 yin@192.168.16.X”

创建servers.txt文件:

192.168.16.1
192.168.16.2
luby@192.168.16.3:4567

[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

更多用法查看:

[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

[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] yin@192.168.16.1: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] yin@192.168.16.1:4567

pslurp用法示例:

把服务器列表中的/tmp/get.sh全部复制到代理 机的/tmp目录下面

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

4.写完收工,晚安!

  1. cherio2002@msn.com 2011/11/03 上午 3:53 | #1

    博主是否了解pssh中-X和-x参数的使用方法?如果了解希望能够分享一下,谢谢。

    • Moon 2011/11/03 上午 8:45 | #2

      @cherio2002@msn.com
      具体没用过,但看英文解释是-x可以处理后面的还空格反斜杠的参数

      • cherio2002@msn.com 2011/11/03 下午 8:29 | #3

        @Moon
        英文看懂是没有问题,但是关键是怎么用这个参数。
        举例来说,如果我希望向远端的服务器发送这样的一条命令:
        cat /tmp/a.txt | awk -vFS=’%#!@\\$\\^’ ‘{print $1 ” ” $5 ” ” $8}’
        这样的pssh命令应该怎么写呢,最近快要抓狂了。如果把文件复制到本地再awk的话,那就太没有意思了,希望一次完成。

        • Moon 2011/11/04 上午 8:31 | #4

          建议你把要执行的所有命令写成脚本 ,然后一次性运行。

          • cherio2002@msn.com 2011/11/04 上午 11:16 | #5

            @Moon
            那不是我想要的…………不过还是谢谢你,我继续研究如何写出这样的命令,我感觉-X和-x参数应该可以实现

          • Moon 2011/11/04 下午 6:21 | #6

            不客气 ,有机会再交流 。

评论提交中, 请稍候...

留言

可以使用的标签: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
Trackbacks & Pingbacks ( 0 )
  1. 还没有 trackbacks
Feed