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无限制【可选】
-O:SSH的选项
-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
推荐阅读
-
Linux下Docker安装和使用教程
-
Linux下安装Memcached服务器和客户端与PHP使用示例
-
Linux下进程管理工具Supervisor的安装配置和基本使用
-
浅析Linux系统下安装wetty和使用说明
-
Linux下的命令行串口工具minicom安装和使用教程
-
Linux下Docker安装和使用教程
-
pip在Linux和windows下的安装和使用
-
Linux下安装Memcached服务器和客户端与PHP使用示例
-
linux Centos或者redhat系统下安装配置使用MariaDB和springboot
-
Mysql在Linux下安装和使用过程中出现的问题及解决方案_MySQL