欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Linux 下批量管理工具 pssh 安装和使用

程序员文章站 2022-05-29 22:22:16
...

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

pssh选项:

--version:查看版本 
--help:查看帮助,即此信息 
-h:主机文件列表,内容格式”[[email protected]]host[:port]” 
-H:主机字符串,内容格式”[[email protected]]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 "[[email protected]]host[:port]")
  -H HOST_STRING, --host=HOST_STRING
                        additional host entries ("[[email protected]]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结合脚本使用比较高效,有以下几个命令可能会用到

  • sed
  • cat
  • 重定向 >>与>
  • expect

pssh Example

pssh -o outputDir -h hostsFile -l user command
  • -o outputFile //将远程执行结果输出到主机的outputDir目录,以主机名为输出结果文件名,将主机执行command的输出结果存入到对应主机名文件中
  • -h hostsFile //hostsFile为机器名文件,一行一机器
  • -l user //以user权限在远程机器执行命令
  • command //远程机器执行的命令
pssh -i -h hostsFile -l user command
  • -i //直接显示远程机器的执行结果
pssh -H host -l user command
  • -H host //单机执行,host为机器名
[[email protected] ~]# 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
[[email protected] ~]# 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
[[email protected] ~]# 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
[[email protected] ~]# tree output/
output/
├── slave1
├── slave2
├── slave3
├── slave4
├── slave5
└── slave6

0 directories, 6 files
[[email protected] ~]# cat output/slave1
slave1

pscp

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 "[[email protected]]host[:port]")
  -H HOST_STRING, --host=HOST_STRING
                        additional host entries ("[[email protected]]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 "[[email protected]]host[:port]")
  -H HOST_STRING, --host=HOST_STRING
                        additional host entries ("[[email protected]]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
相关标签: pssh Linux

上一篇: kvm虚拟机管理

下一篇: KVM磁盘格式