添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

Linux集群批量管理工具parallel-ssh(PSSH)的安装与使用

以前远程查看或传输文件都用ssh或rsync后来听人介绍了pssh,从网上查到它是并行传输的,所以速度更快,使用python写的。

pssh为python编写的批量并行操作服务器的工具

建议使用python包管理工具pip进行安装(便于后期统一管理)

pip install pssh

安装成功后,会自动将pssh、pscp加到可执行目录

注意:执行pssh的机器务必要与远程机器有信任关系,即可以ssh免密码登录

安装完后会有5个命令:

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

    配置主要有两项内容:

  • 从结点的IP列表文件
  • 主节点到从节点的ssh无密钥登录
  • IP列表文件就是将从结点的IP按行存在一个文件里,例如给它命名为 slaves

    主节点hosts:

    # cat /etc/hosts
    127.0.0.1  localhost
    192.168.0.200  master
    192.168.0.201  slave1
    192.168.0.202  slave2
    192.168.0.203  slave3
    192.168.0.204  slave4
    192.168.0.205  slave5
    192.168.0.206  slave6

    这里我们使用主机名代替ip地址(当然也可以使用IP地址):
    slaves:

    slave1
    slave2
    slave3
    slave4
    slave5
    slave6
    # pssh -P -h slaves hostname
    192.168.0.205: slave5
    [1] 09:41:51 [SUCCESS] 192.168.0.205
    192.168.0.206: slave6
    [2] 09:41:51 [SUCCESS] 192.168.0.206
    192.168.0.202: slave2
    [3] 09:41:51 [SUCCESS] 192.168.0.202
    192.168.0.201: slave1
    [4] 09:41:51 [SUCCESS] 192.168.0.201
    192.168.0.203: slave3
    [5] 09:41:51 [SUCCESS] 192.168.0.203
    192.168.0.204: slave4
    [6] 09:41:51 [SUCCESS] 192.168.0.204

    pssh选项:

    --version:查看版本 
    --help:查看帮助,即此信息 
    -h:主机文件列表,内容格式”[user@]host[:port]” 
    -H:主机字符串,内容格式”[user@]host[:port]” 
    -l:登录使用的用户名 
    -p:并发的线程数【可选】 
    -o:输出的文件目录【可选】 
    -e:错误输入文件【可选】 
    -t:TIMEOUT 超时时间设置,0无限制【可选】 
    -OSSH的选项 
    -v:详细模式 
    -A:手动输入密码模式 
    -x:额外的命令行参数使用空白符号,引号,反斜线处理 
    -X:额外的命令行参数,单个参数模式,同-x 
    -i:每个服务器内部处理信息输出 
    -P:打印出服务器返回信息
    # 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
    Example: pssh -h hosts.txt -l irb2 -o /tmp/foo uptime

    pssh可以生成最多 32 个进程,并行地连接各个节点。如果远程命令在 60 秒内没有完成,连接会终止。如果命令需要更多处理时间,可以使用 -t 设置更长的到期时间。(parallel-scp 和 parallel-rsync 没有默认的到期时间,但是可以用 -t 指定到期时间。)

    pssh结合脚本使用比较高效,有以下几个命令可能会用到

  • 重定向 >>与>
  • expect
  • pssh Example

    pssh -o outputDir -h hostsFile -l user command
  • -o outputFile //将远程执行结果输出到主机的outputDir目录,以主机名为输出结果文件名,将主机执行command的输出结果存入到对应主机名文件中
  • -h hostsFile //hostsFile为机器名文件,一行一机器
  • -l user //以user权限在远程机器执行命令
  • command //远程机器执行的命令
  • [root@master ~]# pssh -P -h slaves hostname
    slave5: slave5
    [1] 10:27:56 [SUCCESS] slave5
    slave6: slave6
    [2] 10:27:56 [SUCCESS] slave6
    slave1: slave1
    [3] 10:27:56 [SUCCESS] slave1
    slave2: slave2
    [4] 10:27:56 [SUCCESS] slave2
    slave3: slave3
    [5] 10:27:56 [SUCCESS] slave3
    slave4: slave4
    [6] 10:27:56 [SUCCESS] slave4
    [root@master ~]# pssh -i -h slaves hostname
    [1] 10:28:13 [SUCCESS] slave5
    slave5
    [2] 10:28:13 [SUCCESS] slave6
    slave6
    [3] 10:28:13 [SUCCESS] slave1
    slave1
    [4] 10:28:13 [SUCCESS] slave2
    slave2
    [5] 10:28:13 [SUCCESS] slave3
    slave3
    [6] 10:28:13 [SUCCESS] slave4
    slave4
    [root@master ~]# pssh -o output -h slaves hostname
    [1] 10:28:55 [SUCCESS] slave5
    [2] 10:28:56 [SUCCESS] slave3
    [3] 10:28:56 [SUCCESS] slave1
    [4] 10:28:56 [SUCCESS] slave2
    [5] 10:28:56 [SUCCESS] slave4
    [6] 10:28:56 [SUCCESS] slave6
    [root@master ~]# tree output/
    output/
    ├── slave1
    ├── slave2
    ├── slave3
    ├── slave4
    ├── slave5
    └── slave6
    0 directories, 6 files
    [root@master ~]# cat output/slave1
    slave1

    pscp选项:

    Usage: pscp [OPTIONS] local remote
    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
      -r, --recursive       recusively copy directories (OPTIONAL)
    Example: pscp -h hosts.txt -l irb2 foo.txt /home/irb2/foo.txt

    基本与pssh相同,用法如下:

    pscp -h hostsFile -l user localFile remoteDir

    pslurp

    把文件或者目录并行地从多个远程主机复制到中心主机上

    Usage: pslurp [OPTIONS] remote local
    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
      -r, --recursive       recusively copy directories (OPTIONAL)
      -L LOCALDIR, --localdir=LOCALDIR
                            output directory for remote file copies
    Example: pslurp -h hosts.txt -L /tmp/outdir -l irb2
    /home/irb2/foo.txt foo.txt

    它从每台远程计算机收集指定的文件,但是并不覆盖文件的本地版本。pslurp 为每台远程计算机创建一个子目录并把指定的文件复制到此位置:

    pslurp -r -h slaves /etc/passwd /passwd
    产生背景:当前网上流行的一些优秀且功能强大的工具,如puppet,dsh,parallel-ssh,ansible等。但不得不说,他们的上手起来太复杂了,导致不得不学习他们的命令以及复杂的用法,且对于... 来自: aoaup的博客 使用pssh的动力源自实验室的测试项目,需要搭建一个200余台机器的集群,前期是32台机器的小集群,hadoop软件列表中的第一个。起初我自认为装个hadoop集群,改改配置文件,重复32次就完事儿了... 来自: soldier programmer 准备(前戏)安装yum install ansible查看与ansible相关的文件信息rpm -ql ansible|less命令与选项hosts基本语法主机与组[webserver]www.exa... 来自: shaoguodi的博客 1.kickstart定义kickstart是RedHat公司开源的软件,可以实现Linux系统批量自动安装。2.环境配置1.搭建好真机网络yum源2.真机搭建一个dhcp服务器安装dhcpd服务yu... 来自: chaos_oper的博客 关键是下载地址:yum源可能不能靠谱,个博客提供的下载地址都需要联网,并且能打开才行。这里提供下 centos下的一个安装包。  不能下载就是被管理员屏蔽了https://download.csdn... BatchShell是什么? BatchShell是一款基于SSH2的批量文件传输及命令执行工具,它可以同时传输文件到多台远程服务器以及同时对多台远程服务器执行命令。 BatchShell基于原生的s 准备:DHCP服务器TFTP服务器FTP服务器Kickstart文件拥有PXE ROM芯片,支持网络启动的客户端,即要安装系统的裸机Linux镜像文件这里用一台主机同时提供DHCP,TFTP,FTP三... 来自: SunnyCoffee Blog 1.环境centos 72.建立 软件包 文件列表# more result.logbinutils-2.23.52.0.1compat-libstdc++compat-libstdc++gcc-4.... 来自: 大胜哥的专栏 产生背景:由于做服务器运维方面的工作,需要一人对近千台LINUX服务器进行统一集中的管理,如同时批量对LINUX服务器执行相关的指令、同时批量对LINUX服务器upload程序包、同时批量对LINUX... 来自: weixin_30847939的博客 Linux批量管理神器 ansible部署第一个历程 安装软件安装依赖关系包yum install python-dev python-yamlpython-paramiko pytho... 来自: weixin_34402090的博客 pssh全称是parallel-ssh,是一个Python编写的可以并发在多台服务器上批量执行命令的工具,它支持文件并行复制、远程并行执行命令、杀掉远程主机上的进程等。前提:使用pssh工具包,必须保... 来自: Field_Yang的博客 Command-LineArguments arestringsofkeywordsthatyoucanpasswhenrunningtheexecutableviathecommandlineora... 来自: weixin_39781267的博客 需求:通过远程读取服务器的启动文件实现无人值守的安装技术1:PXE技术,实现让客户端通过网络从远端服务器下载启动镜像,从而实现网络启动。整个过程中,客户端要求服务器分配IP地址,再用TFTP协议下载位... 来自: hangongzi123的博客 前提,安装了python。pssh安装下载pssh-2.2.2.tar.gztar zxvf pssh-2.2.2.tar.gzcd pssh-2.2.2python setup.py buildpy... 来自: weixin_34066347的博客 安装命令: yum install -y tcl tclx tcl-devel yum install -y expect 用法: 批量上传脚本文件内容: #!/usr/bin/expect set ... 来自: chuozhi8096的博客 假如同时给上千台服务器执行一个命令,拷贝一个文件,杀一个进程等,有什么简化运维管理的工具呢?在小型使用中我都是使用for循 环,数量巨大,一方面不确定操作是否成功,一方面for循环语句性能不好估计且是... 来自: 不辣红烧肉的博客 (一)linux的自动安装脚本kickstart(全自动安装)kickstart:安装过程中回答系统所有问题的一个脚本文件,它是一个自动安装脚本,可以实现批量自动安装(一次可以装10个)。这样就为我们... 来自: 一涵的博客 pssh全称是parallel-ssh,基于Python编写的并发在多台服务器上批量执行命令的工具,它支持文件并行复制、远程并行执行命令、杀掉远程主机上的进程等;该工具可以视作ansible的简化版本... 来自: weixin_30667649的博客 根据链接https://www.tecmint.com/execute-commands-on-multiple-linux-servers-using-pssh/用yum安装pssh时出现如下问题 ... 来自: sdd220的博客 veyron 给出几种思路:1、机器少的话,可参考rsh/openssh、expect、rpm包管理结合,自已写个远程控程工具,很简单2、如果服务器配置、软件比较通用(如常用工具ftp、基本配置),可... 来自: 小庄往左走 1、先决条件:安装pssh工具要求python版本大于2.4即可。安装pssh工具的主机针对远程主机需要配置免秘钥认证:ssh-keygen -t rsassh-copy-id [remotehost... 来自: weixin_34092455的博客 前言:这篇文章是系统运维www.osyunwei.com的作品,我只是根据实践了一下,出于对原作者的尊重附原文链接如下:原文链接:http://www.osyunwei.com/archives/76... 来自: 梁亮的天下 一:make install 源代码安装如果要使用make安装的话,那么必须得安装 build-essential这个依赖包,安装方法已经在前面说过了。在安装完毕以后,我们就可以进行源码安装。源码安装... 来自: 美丽哒向日葵 pssh是python实现的集群批量命令工具,非常方便集群管理。同时其还带有pscp等功能1、先下载pssh文件: wget  ‘http://code.google.com/p/parallel-s... 来自: Aplysia.X的专栏 服务器多了,原始操作就会出现弊端,假如同时给成百上千台服务器执行一个命令,拷贝一个文件,杀一个进程等,就需要逐个连接服务器进行操作,累死运维小哥。有什么简化运维管理的工具呢?可以编写shell脚本使用... 来自: 胸无大志,枉活一世 SSH是指SecureShell,是一种安全的传输协议,Ubuntu客户端可以通过SSH访问远程服务器。SSH的简介和工作机制可参看上篇文章SSH简介及工作机制。SSH分客户端openssh-clie... 来自: netwalk的专栏 pssh是一个python编写可以在多台服务器上批量执行命令的工具前提必须每台服务器添加管理服务器的的密钥认证访问安装sudo apt-get install pssh创建需要管理的服务器的用户和IP... 来自: u010066807的博客 ubuntu默认并没有安装ssh服务,如果通过ssh链接ubuntu,需要自己手动安装ssh-server,然而SSH分客户端openssh-client和服务端openssh-server,open... 来自: changhenshui1990的博客 pssh是一款开源的软件,使用python实现,用于批量ssh操作大批量机器;pssh是一个可以在多台服务器上执行命令的工具,同时支持拷贝文件,是同类工具中很出色的;比起for循环的做法,我更推荐使用... 来自: chengxuyuanyonghu的专栏 psshhttp://code.google.com/p/parallel-ssh/PSSH provides parallel versions of OpenSSH and related too... 来自: Beckham008的专栏 pssh 用于同时管理多台服务器,在安装Hadoop时可以同步Hadoop已经配置好的安装文件,十分方便,本文将介绍pssh的基本命令和使用方法。由于pssh基于python实现的,所以在安装之前务必... 来自: 古月慕南的代码世界 爬虫福利一:27报网MM批量下载 点击看了本文,相信大家对爬虫一定会产生强烈的兴趣,激励自己去学习爬虫,在这里提前祝:大家学有所成!目标网站:妹子图网环境:Python3.x相关第三方模块:requ... 来自: Nick.Peng 的博客 在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次... 来自: 程序员宜春的博客