pssh是一个简单的字符界面并发向多个服务器发送指令进行执行的工具。适合一次性向集群大量服务器发送相同指令(并观察输出)
主机连接远程主机可以通过ssh密钥无密码连接 可参见 SSH无需密码密钥登录
下载页面:https://code.google.com/archive/p/parallel-ssh/downloads
wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/parallel-ssh/pssh-2.3.1.tar.gz
wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/parallel-ssh/pssh-2.3.1.tar.gz
tar -zxvf pssh-2.3.1.tar.gz cd pssh-2.3.1 python setup.py build python setup.py install
如果是 redhat (或者CentOS)也可以用yum安装
yum install -y pssh
-h 执行命令的远程主机列表 或者 -H user@ip:port 文件内容格式[user@]host[:port]
-l 远程机器的用户名
-p 一次最大允许多少连接
-o 输出内容重定向到一个文件
-e 执行错误重定向到一个文件
-t 设置命令执行的超时时间
-A 提示输入密码并且把密码传递给ssh
-O 设置ssh参数的具体配置,参照ssh_config配置文件
-x 传递多个SSH 命令,多个命令用空格分开,用引号括起来
-X 同-x 但是一次只能传递一个命令
-i 显示标准输出和标准错误在每台host执行完毕后
-I 读取每个输入命令,并传递给ssh进程 允许命令脚本传送到标准输入
完整说明见命令:pssh --help
Usage: pssh [OPTIONS] command [...]
Options:
--version show program's version number and exit
--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 and error for each server
--inline-stdout inline standard 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
pssh 包安装 5 个实用程序:
pssh 在多个主机上并行地运行命令。
pscp 把文件并行地复制到多个主机上。
prsync 通过 rsync 协议把文件高效地并行复制到多个主机上。
pslurp 把文件并行地从多个远程主机复制到中心主机上。
pnuke 并行地在多个远程主机上杀死进程。
4.1 服务器IP配置 文件resin.coupons-web.hosts内容如下:
10.10.12.37 10.10.12.38
4.2 pssh远程执行命令:whoami 如下:
[reader@test hosts]$ pssh -h resin.coupons-web.hosts -P 'whoami' 10.10.12.37: reader [1] 16:00:09 [SUCCESS] 10.10.12.37 10.10.12.38: reader [2] 16:00:09 [SUCCESS] 10.10.12.38
4.2.1 远程执行命令:whoami 并指定远程登录用户root :
pssh -l root -h resin.coupons-web.hosts -P 'whoami'
4.3 pscp 把文件并行地复制到多个主机上
将本机readme.txt 上传到 多个主机上 /tmp/
[reader@test hosts]$ pscp -h resin.coupons-web.hosts readme.txt /tmp/ [1] 16:03:20 [SUCCESS] 10.10.12.37 [2] 16:03:20 [SUCCESS] 10.10.12.38
4.4 将文件从远程主机复制到本地,和pscp方向相反:
将远程主机文件/tmp/readme.txt 复制到本地主目录 ~/下文件 readme.txt
-L 指定本机目录
执行完成后文件会存放到本机主目录下对应IP地址的目录中 如:
~/10.10.12.37/readme.txt
~/10.10.12.38/readme.txt
[reader@test hosts]$ pslurp -h resin.coupons-web.hosts -L ~/ /tmp/readme.txt readme.txt [1] 16:17:39 [SUCCESS] 10.10.12.37 [2] 16:17:39 [SUCCESS] 10.10.12.38
参考文献: 高效管理大量计算机