CentOS 7 安装使用 PSSH 实现远程批量管理服务器
PSSH 工具介绍
PSSH是一个用于在多个远程主机上并行执行命令的工具。它提供了快速、灵活和批量操作的能力,它支持SSH连接和认证,可以通过配置文件保存常用参数和选项,是远程管理和批量任务执行的轻量级运维工具。
检查安装环境
pssh 需要 python2.4 或者以上版本,首先查询一下自己 CentOS 中的 python 版本,查询命令如下:
[root@localhost pssh-2.3.1]# python --version
Python 2.7.5
安装
在这里我是下载安装包后手动安装的,版本 2.3.1
mkdir /usr/local/pssh/
cd /usr/local/pssh/
wget https://pypi.python.org/packages/60/9a/8035af3a7d3d1617ae2c7c174efa4f154e5bf9c24b36b623413b38be8e4a/pssh-2.3.1.tar.gz
tar xf pssh-2.3.1.tar.gz -C /usr/local/pssh/
cd /usr/local/pssh/pssh-2.3.1/
python setup.py install
安装验证
pssh --help
pssh 命令详解
命令包
命令包功能介绍pssh多主机并行运行命令pscp传输文件到多个hosts,他的特性和scp差不多prsync使用rsync协议从本地计算机到远程主机pslurp从远程主机拷贝文件到本地pnukekill远程机器的进程
参数说明
参数说明-h执行命令的远程主机列表,是一个文本文件,主机ip或主机名以回车符分隔,也可以是列表字符串,主机ip或主机名以空格符分隔。-l远程机器的用户名-p一次最大允许多少连接(小写)-o输出内容重定向到一个文件(小写)-e执行错误重定向到一个文件-t设置命令执行的超时时间-A提示输入密码并且把密码传递给ssh-O设置ssh参数的具体配置,参照ssh_config配置文件(大写)-x传递多个SSH命令,多个命令用空格分开,用引号括起来-X同 -x 但是一次只能传递一个命令-i显示标准输出和标准错误在每台host执行完毕后-I读取每个输入命令,并传递给ssh进程 允许命令脚本传送到标准输入-P打印输出(大写)
pssh 用法示例
最好设置服务器之间免密登录,设置免密登录请先参考 https://blog..net/YouTheFreedom/article/details/135217737
首先,编辑一个 nodes.txt 文件记录要操作的节点服务器主机地址,我这里已经把所有节点用 node + 数字的格式作为编号,编号与 IP 的对应关系记录在 hosts 文件里,你也可以根据自身需要修改,直接在 nodes.txt 里记录节点 IP 地址也行
node01
node02
node02
node03
node04
node05
node06
node07
......
pssh 远程批量执行命令行
#-h 后面接主机ip文件,文件数据格式[user@]host[:port]
#-P 显示输出内容
pssh -P -h nodes.txt uptime
# 或者字符串指定节点
pssh -P -h "node01 node02 node03" "uptime"
使用示例
[root@localhost scripts]# pssh -P -h nodes.txt uptime
node16: 16:49:37 up 39 days, 23:40, 0 users, load average: 4.40, 4.56, 4.60
[1] 16:50:04 [SUCCESS] node16
node06: 16:49:37 up 11 days, 7:10, 0 users, load average: 0.03, 0.16, 0.20
[2] 16:50:04 [SUCCESS] node06
node15: 16:49:37 up 32 days, 7 min, 0 users, load average: 0.19, 0.14, 0.14
[3] 16:50:04 [SUCCESS] node15
node14: 16:49:38 up 32 days, 12 min, 0 users, load average: 2.64, 2.29, 2.23
[4] 16:50:04 [SUCCESS] node14
node08: 16:49:38 up 39 days, 22:57, 0 users, load average: 1.69, 1.57, 1.53
[5] 16:50:04 [SUCCESS] node08
node02: 16:50:04 up 29 days, 20 min, 2 users, load average: 1.07, 1.34, 1.33
[6] 16:50:04 [SUCCESS] node02
node12: 16:50:21 up 15 days, 10:01, 0 users, load average: 0.04, 0.03, 0.05
[7] 16:50:04 [SUCCESS] node12
node07: 16:50:10 up 28 days, 21:12, 0 users, load average: 1.51, 1.34, 1.30
[8] 16:50:09 [SUCCESS] node07
node04: 16:50:01 up 29 days, 1:40, 0 users, load average: 1.69, 1.42, 1.36
[9] 16:50:09 [SUCCESS] node04
node05: 16:49:45 up 28 days, 23:28, 0 users, load average: 4.22, 4.47, 4.49
[10] 16:50:09 [SUCCESS] node05
pscp 并行传输文件到远程
传输文件,但是不支持远程新建目录
pscp -r -h nodes.txt ./* /usr/local
prsync 并行同步文件到远程
同步文件,并且支持远程新建目录
pscp -r -h nodes.txt nodes.txt /usr/local/pssh/
# 对比
prsync -r -h nodes.txt nodes.txt /usr/local/pssh/
pslurp从远程拉取到本地
pslurp从远程拉取文件到本地,在本地自动创建目录名为远程主机ip的目录,将拉取的文件放在对应主机IP目录下
格式:pslurp -h ip.txt -L <本地目录> <远程目录/文件> <本地重命名>
pslurp -h nodes.txt -L /usr/local/test /usr/local/pssh/nodes.txt psshtest
这个会根据配置的 ip 或者 host 创建文件夹目录
drwxr-xr-x. 2 root root 22 8月 11 14:26 node1
drwxr-xr-x. 2 root root 6 8月 11 14:24 node2
drwxr-xr-x. 2 root root 6 8月 11 14:24 node3
pnuke远程批量killall
pnuke -h nodes.txt java
参考文章
https://blog..net/u011047968/article/details/107937572