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