非 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 显示详细过程
相关推荐
大模型搬砖师1 小时前
把AI网关当安全边界:提示词注入与越权调用的三道闸
网络·人工智能
国科安芯1 小时前
空间数据总线的新范式:ASM1042S2S型抗辐射CANFD收发器在低轨遥感卫星星座中的应用研究
网络·嵌入式硬件·架构·canfd·数据总线·星载数据处理
脚踏实地,坚持不懈!1 小时前
Android 上层卡顿在内核中的反应(基于 Linux v7.2.2)
android·linux·运维
H_oRIZoN_1 小时前
Linux入门DAY36(TCP 并发服务器)
linux·服务器·tcp/ip
Shadow(⊙o⊙)1 小时前
TCP传输深层原理+优秀的可靠性、效率优化机制
服务器·网络·tcp/ip
灵晔君1 小时前
【Linux】基础IO(一)——文件、上层C库文件操作、底层linux原生IO
linux·运维·c语言
Fcy6481 小时前
Linux下 应⽤层⾃定义协议与序列化(JSON方法)
linux·json
koi77u2 小时前
嵌入式学习————————TCP并发服务器(1)
linux·学习
CoreTK_EMC9 小时前
机器人信号线缆屏蔽:解决伺服干扰、通讯异常的工程落地思路
网络·机器人·芯通康·机器人信号线缆屏蔽·工业机器人线缆 emc·机器人接地屏蔽·ethercat 通讯干扰