pssh

比ansible更轻量级,能实现批量管理多台机器。都是pythonpssh包提供的命令,用法也大同小异,学习起来也很容易。可以通过pip install pssh来安装这个python包。

资料

安装

yum install -y pssh
# 或 暂未测试
pip3 install pssh

使用yum安装后,也会通过的安装上 pscp.psshprsync工具。

pssh命令

pssh 是一个可以并行的在多个ip上执行ssh命令的程序, 主要用来在多台服务器上执行同样的命令

常用参数

-h host_filehost_file指定的文件中读取需要连接的ip信息。(常用)

-H host 从命令行读取登录主机信息 (常用)

-l user 登录用户名

-p 一次并行执行的机器个数 (常用)

-t 连接机器的超时时间

-o 标准输出打印文件

-e 标准错误打印文件

-i 每个主机执行完毕后显示标准输出和标准错误,默认不会显示。(最常用)

例子1

打印ip_list.txt中每个占用8080端口的进程, 每次并发连接执行两个主机

pssh -h ip_list.txt -i -p 2 'fuser -n tcp 8080'

输出

[1] 13:58:14 [SUCCESS] 10.1.107.171
14696 14702 14703 14704 14711 14712 14714 14716 14717 14718Stderr: 8080/tcp:
[2] 13:58:16 [SUCCESS] 10.3.13.91
15072 15078 15079 15082 15085 15086 15087 15090 15094 20237Stderr: 8080/tcp:
[3] 13:58:16 [SUCCESS] 10.3.13.42
15204 15210 15211 15212 15215 15216 15221 15222 15223 15224Stderr: 8080/tcp:
[4] 13:58:18 [SUCCESS] 10.1.107.142
6935  6941  6942  6943  6946  6953  6954  6955  6956  6957Stderr: 8080/tcp:

例子2

pssh  -i \
-H 10.172.48.8:22022  \
-H 10.172.48.9:22022 \
ls

# 或
pssh -i -h myhosts.txt "cd /home && ls"

pscp命令

pscp 命令是用来并行的将本地文件拷贝到多台服务器上的命令。参数和pssh命令基本一致

常用参数

这个命令常用参数基本和pssh一致,不同的是pssh命令中的-i参数此命令不支持,同时多了一个-r参数,用于递归拷贝文件夹

例子

将本地的hehe.txt文件拷贝到ip_list.txt中的所有机器上面的/data/hehe.txt位置

pscp -h ip_list.txt -p 2 hehe.txt /data/hehe.txt

输出

[1] 14:04:41 [SUCCESS] 10.1.107.171
[2] 14:04:41 [SUCCESS] 10.3.13.91
[3] 14:04:41 [SUCCESS] 10.1.107.142
[4] 14:04:41 [SUCCESS] 10.3.13.42

结语

除了psshpscp外,pssh包还提供了prsync命令使用rsync协议来并行将本地文件同步到不通主机,plcurl用来将不通服务器上的文件同步到本地等等。只要知道这些命令,具体用法可以在使用man查询。