博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
批量执行工具PSSH详解
阅读量:5252 次
发布时间:2019-06-14

本文共 6000 字,大约阅读时间需要 20 分钟。

批量执行工具PSSH详解

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

安装pssh包

yum 安装:

yum install pssh -y

编译安装:

# 安装setuptools包,如果安装了跳过wget http://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz --no-check-certificatetar -xf setuptools-0.6c11.tar.gzcd setuptools-0.6c11python setup.py buildpython setup.py install# 安装psshcd -wget  http://www.theether.org/pssh/pssh-1.4.3.tar.gzcd pssh-1.4.3/python setup.py install

pssh包的命令介绍

  • pssh 在多个主机上并行运行命令
  • pscp 把文件并行复制到多个主机上
  • prsync 通过rsync协议把文件高效并行复制到多个主机上
  • pslurp 把文件并行地从多个远程主机复制到中心主机上
  • pnuke 并行地在多个远程主机上杀死进程

pssh 命令

pssh: 查询远程主机的信息

pssh Usage: pssh [OPTIONS] -h hosts.txt prog [arg0] ..-h --hosts 主机文件列表,格式"host[:port] [user]"-l --user  用户名-p --par 并发线程数-o --outdir 输出的文件目录-e --errdir 错误输出的文件目录-t --timeout 设置命令执行超时时间 -1表示无限制-O --options 设置ssh的一些选项-v --verbose 详细模式-P --print 打印出输出执行信息-i --inline 在每台host执行完毕后,显示出输出信息Example: pssh -h nodes.txt -l irb2 -o /tmp/pssh uptime[root@localhost ~]# cat /etc/pssh_hosts web1.jiajie.comweb2.jiajie.comweb3.jiajie.com

“-O”参数,后面跟

的“StrictHostKeyChecking=no”是sshd服务的配置文件ssh_config
中的一个选项,通过设置这个参数,可以让远程主机自动接受
本地主机的hostkey。第一次执行必须指定,不然报错。

[root@localhost ~]# pssh -i -O "StrictHostKeyChecking=no" -h /etc/pssh_hosts 'date'[1] 09:56:38 [SUCCESS] web1.jiajie.com 222017年 10月 17日 星期二 09:56:38 CST[2] 09:56:38 [SUCCESS] web2.jiajie.com 222017年 10月 17日 星期二 09:56:38 CST[3] 09:56:38 [SUCCESS] web3.jiajie.com 222017年 10月 17日 星期二 09:56:37 CST[root@localhost ~]# pssh -i -h /etc/pssh_hosts 'uptime'[1] 09:59:50 [SUCCESS] web1.jiajie.com 22 09:59:50 up  1:20,  1 user,  load average: 0.06, 0.01, 0.00[2] 09:59:50 [SUCCESS] web3.jiajie.com 22 09:59:49 up  1:20,  2 users,  load average: 0.00, 0.01, 0.05[3] 09:59:50 [SUCCESS] web2.jiajie.com 22 09:59:50 up  1:20,  1 user,  load average: 0.06, 0.02, 0.00[root@localhost ~]# pssh -i -h /etc/pssh_hosts "tar -zxvf pssh-1.4.3.tar.gz"[root@localhost ~]# pssh -i -h /etc/pssh_hosts "rpm -qa httpd|wc -l"[1] 10:20:18 [SUCCESS] web2.jiajie.com 220[2] 10:20:19 [SUCCESS] web1.jiajie.com 220[3] 10:20:19 [SUCCESS] web3.jiajie.com 220

pscp 命令

pscp: 把文件或者目录并行的复制到多个主机上面

Usage: pscp [OPTIONS] -h hosts.txt local remote-r 递归复制目录-h 主机文件列表,格式"host[:port] [user]"-l 用户名-p --par 并发线程数-o --outdir 输出的文件目录-e --errdir 错误输出的文件目录-t --timeout 设置命令执行超时时间 -1表示无限制-O --options 设置ssh的一些选项-v --verbose 详细模式  Example: pscp -h hosts.txt -l irb2 foo.txt /home/irb2/foo.txt[root@localhost ~]# pscp -h /etc/pssh_hosts /etc/hosts /tmp/[1] 10:29:11 [SUCCESS] web2.jiajie.com 22[2] 10:29:11 [SUCCESS] web1.jiajie.com 22[3] 10:29:11 [SUCCESS] web3.jiajie.com 22[root@localhost ~]# pssh -i -h /etc/pssh_hosts "ls -l /tmp/hosts"[1] 10:29:57 [SUCCESS] web1.jiajie.com 22-rw-r--r-- 1 root root 202 10月 17 10:29 /tmp/hosts[2] 10:29:57 [SUCCESS] web2.jiajie.com 22-rw-r--r-- 1 root root 202 10月 17 10:29 /tmp/hosts[3] 10:29:57 [SUCCESS] web3.jiajie.com 22-rw-r--r-- 1 root root 202 10月 17 10:29 /tmp/hosts[root@localhost ~]# pscp -r -h /etc/pssh_hosts /root/shell.sh/ /tmp/[1] 10:33:18 [SUCCESS] web1.jiajie.com 22[2] 10:33:18 [SUCCESS] web2.jiajie.com 22[3] 10:33:18 [SUCCESS] web3.jiajie.com 22

pslurp 命令(从远程主机复制到本地。)

Usage: pslurp [OPTIONS] -h hosts.txt -o outdir remote local  -r --recursive recusively copy directories (OPTIONAL)  -L --localdir  output directory for remote file copies  -h --hosts     hosts file (each line "host[:port] [login]")  -l --user      username (OPTIONAL)  -p --par       max number of parallel threads (OPTIONAL)  -o --outdir    output directory for stdout files (OPTIONAL)  -e --errdir    output directory for stderr files (OPTIONAL)  -t --timeout   timeout (secs) (-1 = no timeout) per host (OPTIONAL)  -v --verbose   turn on warning and diagnostic messages (OPTIONAL)  -O --options   SSH options (OPTIONAL)Example: pslurp -h hosts.txt -L /tmp/outdir -l irb2 \         /home/irb2/foo.txt foo.txt

-L:指定从远程主机拷贝文件放置的目录,拷贝/root/expect.sh文件,并将其重命名为test1.

如果拷贝目录需要使用-r参数:

[root@localhost ~]# pslurp -h /etc/pssh_hosts -L /tmp/ /root/expect.sh test1 [1] 10:44:55 [FAILURE] web1.jiajie.com 22 Received error code of 1[2] 10:44:56 [FAILURE] web3.jiajie.com 22 Received error code of 1[3] 10:44:56 [SUCCESS] web2.jiajie.com 22[root@localhost ~]# ll /tmp/web2.jiajie.com/总用量 4-rw-r--r-- 1 root root 139 10月 17 10:44 test1[root@localhost ~]# pslurp -r -h /etc/pssh_hosts -L /tmp/ /root/shell.sh      test2

prsync 命令:

Usage: prsync [OPTIONS] -h hosts.txt local remote  -r --recursive recusively copy directories (OPTIONAL)  -a --archive   use rsync -a (archive mode) (OPTIONAL)  -z --compress  use rsync compression (OPTIONAL)  -h --hosts     hosts file (each line "host[:port] [login]")  -l --user      username (OPTIONAL)  -p --par       max number of parallel threads (OPTIONAL)  -o --outdir    output directory for stdout files (OPTIONAL)  -e --errdir    output directory for stderr files (OPTIONAL)  -t --timeout   timeout (secs) (-1 = no timeout) per host (OPTIONAL)  -v --verbose   turn on warning and diagnostic messages (OPTIONAL)  -O --options   SSH options (OPTIONAL)Example: prsync -r -h hosts.txt -l irb2 foo /home/irb2/foo

prsync的主要作用是通过rsync协议将文件或目录从本地主

机同步到远程多个主机上。

[root@localhost ~]# prsync -h /etc/pssh_hosts -a -r /root/shell.sh /tmp[1] 11:33:26 [SUCCESS] web3.jiajie.com 22[2] 11:33:26 [SUCCESS] web1.jiajie.com 22[3] 11:33:27 [SUCCESS] web2.jiajie.com 22

-r:递归复制。

-a:保持文件的属性不变

-z:压缩文件,一般不推荐。

pnuke 命令:

Usage: pnuke [OPTIONS] -h hosts.txt pattern  -h --hosts   hosts file (each line "host[:port] [user]")  -l --user    username (OPTIONAL)  -p --par     max number of parallel threads (OPTIONAL)  -o --outdir  output directory for stdout files (OPTIONAL)  -e --errdir  output directory for stderr files (OPTIONAL)  -t --timeout timeout (secs) (-1 = no timeout) per host (OPTIONAL)  -v --verbose turn on warning and diagnostic messages (OPTIONAL)  -O --options SSH options (OPTIONAL)Example: pnuke -h hosts.txt -l irb2 java

pnuke的主要作用是在远程多主机上并行杀掉某一进程,

相当于killall命令。可以直接使用pssh 来传递killall命令,这里就不做介绍了。

转载于:https://www.cnblogs.com/dianel/p/10315228.html

你可能感兴趣的文章
hdu 1106 排序
查看>>
交叉编译总结笔记
查看>>
Codeforces 915 G Coprime Arrays
查看>>
[JSOI2009] 有趣的游戏
查看>>
RCNN--目标检测
查看>>
北航公开课 演讲与口才1-口才概述
查看>>
BAPI_GOODSMVT_CANCEL物料凭证完全…
查看>>
Thinkphp 生成的验证码不显示问题解决
查看>>
Sql获取数据集中各类型中的最大值(最新值)
查看>>
Xcode:只修改 Bundle Identifier,不修改项目名
查看>>
WPF之路五:wpf 隐藏与显示 Visibility
查看>>
XMU 1611 刘备闯三国之卖草鞋 【贪心】
查看>>
使用git克隆指定分支的代码
查看>>
计算结构体的大小
查看>>
[JSOI 2015] 子集选取
查看>>
asp.net引用用户控件
查看>>
Django之CRM项目Day6-公私户转换问题解决 班主任功能
查看>>
Matlab实现加性高斯白噪声信道(AWGN)下的digital调制格式识别分类
查看>>
POCO C++库学习和分析 -- Foundation库的结构
查看>>
POSIX 线程详解(经典必看)
查看>>