1 简介

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

pssh 包安装 5 个实用程序:

pssh 在多个主机上并行地运行命令。

pscp 把文件并行地复制到多个主机上。

prsync 通过 rsync 协议把文件高效地并行复制到多个主机上。

pslurp 把文件并行地从多个远程主机复制到中心主机上。

pnuke 并行地在多个远程主机上杀死进程。

2 安装(系统:Centos7.2)

[root@57135test pssh-1.4.3]# wget http://www.theether.org/pssh/pssh-1.4.3.tar.gz
[root@57135test pssh-1.4.3]# tar -xzf pssh-1.4.3.tar.gz
[root@57135test pssh-1.4.3]# cd pssh-1.4.3 
[root@57135test pssh-1.4.3]# python setup.py install
 报错[如未报错,可跳过]:
  [root@57135test pssh-1.4.3]# python setup.py install
  Traceback (most recent call last):
    File "setup.py", line 1, in <module>
      from setuptools import setup, find_packages
  ImportError: No module named setuptools
 解决:
  [root@57135test pssh-1.4.3]# wget 
  [root@57135test setuptools-0.6c11]# tar xzf setuptools-0.6c11.tar.gz 
  [root@57135test setuptools-0.6c11]# cd setuptools-0.6c11
  [root@57135test setuptools-0.6c11]# python setup.py build
  [root@57135test setuptools-0.6c11]# python setup.py install
[root@57135test pssh-1.4.3]# python setup.py build
[root@57135test pssh-1.4.3]# python setup.py install

3 建立ssh密钥登陆,脚本批量创建

[root@57135test pssh-1.4.3]# ssh-keygen -t rsa
创建rsa.sh脚本 test.txt中写入要管理的IP
[root@192 sh]# more rsa.sh 
#!/bin/sh
#by authors chy 2016
for i in $(cat test.txt)
do
        ssh-copy-id -i /root/.ssh/id_rsa.pub $i
        echo $i"设置密码登录成功"
done
注:可以将IP写在test.txt文件中

4 使用

a 查看主机名
[root@57135test .ssh]# pssh -h test.txt hostname   
[1] 11:58:23 [SUCCESS] 192.168.57.131 22
[2] 11:58:23 [SUCCESS] 192.168.57.132 22
b 查看查看启动时间
[root@57135test .ssh]# pssh -h test.txt -l root -P uptime  
192.168.57.131:  09:47:19 up  2:26,  2 users,  load average: 0.02, 0.02, 0.05
192.168.57.131: [1] 12:00:04 [SUCCESS] 192.168.57.131 22
192.168.57.132:  10:04:48 up  2:40,  2 users,  load average: 0.00, 0.01, 0.05
192.168.57.132: [2] 12:00:04 [SUCCESS] 192.168.57.132 22
c 删除文件
[root@57135test .ssh]# pssh -h test.txt -P "rm -rf /root/test.sh"
d 传输文件,可传输脚本
[root@57135test .ssh]# pscp -h test.txt rsa.sh /root
e 关闭selinux
[root@57135test .ssh]# pssh -h test.txt -l root -P "sed -i 's/SELINUX=enforcing/SELINUX=disables/g' /etc/sysconfig/selinux"
f 重启虚拟机
[root@57135test .ssh]# pssh -h test.txt -l root -P reboot

5 用法讲解

      -h 执行命令的远程主机列表  或者 -H user@ip:port  文件内容格式[user@]host[:port]
      -l 远程机器的用户名
      -P 执行时输出执行信息
      -p 一次最大允许多少连接
      -o 输出内容重定向到一个文件
      -e 执行错误重定向到一个文件
      -t 设置命令执行的超时时间
      -A 提示输入密码并且把密码传递给ssh
      -O 设置ssh参数的具体配置,参照ssh_config配置文件
      -x 传递多个SSH 命令,多个命令用空格分开,用引号括起来
      -X 同-x 但是一次只能传递一个命令
      -i 显示标准输出和标准错误在每台host执行完毕后
      '''其他命令'''
       pscp     传输文件到多个hosts,类似scp
       pslurp   从多台远程机器拷贝文件到本地
       pnuke    并行在远程主机杀进程
       prsync   使用rsync协议从本地计算机同步到远程主机

6 注意

a 使用前提
中心主机连接远程主机可以通过ssh密钥无密码连接
b 命令格式
pssh 总是通过清单 文件指定主机
其中的每行采用 [user] host[:port] 形式。
c 创建servers.txt文件
文件的内容为远程主机的ip,和用于连接ssh的用户名和端口
# vim /home/server.txt
192.168.0.177
root@183.62.138.82:22031
d pssh用法-在多个主机上并行地运行命令
# pssh -P -h /home/server.txt hostname