非 ansible 主机批量执行命令方法:psssh 和 pscp(随手记)

对集群的服务器批量运行脚本,但不想麻烦使用 ansible 写 playbook 时,可以用pssh

pssh 是常用的批量执行工具,直接通过 SSH 在多个服务器上并行执行命令。

使用方法

1. 先准备 NC IP 列表文件

shell 复制代码
cat /tmp/iplist
10.0.0.1
10.0.0.2
10.0.0.3

2. 上传脚本(scp/pscp)

shell 复制代码
for i in `cat /tmp/iplist`;do scp /tmp/xxx.py $i:/tmp/;done

# 或者用 pscp
# pscp [选项] 本地路径 远程路径
pscp -h /tmp/iplist /tmp/xxx.py /tmp/

pscp 常用参数如下:

参数 说明
-h 文件 主机清单文件
-H "host1,host2" 直接在命令行指定主机,逗号分隔
-l 用户 登录用户
-p 数量 并行数,默认 32
-t 秒 连接超时时间
-o 目录 标准输出保存目录
-e 目录 错误输出保存目录
-x "参数" 额外传给 ssh 的参数
-O "选项=值" 传给 ssh 的配置选项
-r 递归复制目录
-v 显示详细过程
-q 静默模式

举例:

shell 复制代码
# 把本地文件并行复制到多台主机
pscp -h hosts.txt -l admin -p 50 /local/config.txt /remote/config.txt

# 递归上传目录,并指定私钥
pscp -h hosts.txt -r -x "-i ~/.ssh/id_rsa" /local/scripts /opt/scripts

# 忽略主机密钥检查
pscp -h hosts.txt -O "StrictHostKeyChecking=no" /local/file /remote/file

3. 批量执行脚本(脚本内容用引号包裹)

shell 复制代码
pssh -ih /tmp/iplist  "python /tmp/xxx.py"

# 如果不希望前台输出而是保存到文件中
pssh -ih /tmp/iplist "python /tmp/xxx.py" > result.txt

pssh 参数解释:

参数 说明
-h 文件 主机清单文件
-H "host1,host2" 命令行直接指定主机
-l 用户 登录用户
-p 数量 并行数,默认 32
-t 秒 连接超时
-o 目录 标准输出保存目录
-e 目录 错误输出保存目录
-i 直接在终端显示每台主机的输出
-x "参数" 额外传给 ssh 的参数
-O "选项=值" 传给 ssh 的配置选项
-I 从标准输入读取内容并传给远程命令
-v 显示详细过程
相关推荐
未济2 天前
linux 配置环境变量
linux
傲世仙尊2 天前
目录即文件-Ext文件系统收尾篇
linux·c语言
虎头金猫2 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
_艾伦 耶格尔.2 天前
进程间通信
linux
Liuqy-052 天前
Linux IO编程——静态库、动态库
linux
wuyk5552 天前
《WiFi 嵌入式物联网开发全套实战》| 第 16 章 ESP32 AP+STA 双模共存原理与工程坑点
网络·stm32·物联网
彧azz2 天前
Linux 环境下 Redis 学习总结:数据类型、持久化、锁、事务、主从与缓存问题
linux·redis·笔记·学习·面试
-梅2 天前
linux(8) 软硬链接
linux·运维·服务器
AIgorithmGEEK2 天前
[Linux]线程三部曲(上):一个执行流的诞生——从操作系统一路拆到 pthread_create
linux·线程·pid
琥珀色糖2 天前
SimlpeHttp
linux·服务器