非 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 显示详细过程
相关推荐
YWamy10 小时前
如何降低RTC SDK在复杂网络环境下的运行成本
网络·音视频·实时音视频
北京盛世宏博10 小时前
信创国产化智慧档案馆管库系统:十二防一体化管控平台落地笔记
网络·方案·温湿度·智慧档案馆建设
w-w0w-w11 小时前
SQL注入
网络·数据库·sql
一条泥憨鱼11 小时前
【计算机网络】短连接、长连接与连接池:从 TCP 握手到池化复用的完整链路
网络·数据库·网络协议·tcp/ip·计算机网络
HideF11 小时前
Linux sudo
linux
FlightYe12 小时前
视界原理之3D视频(四):裸眼、眼镜和头显
android·linux·c++·3d·ffmpeg·音视频
北京盛世宏博12 小时前
数字孪生 3D 可视化实战:档案十防体系温湿度数据联动与告警定位实现
网络·档案八防·十防
蹊黎12 小时前
Linux 下用 C 语言实现进度条
linux·c语言·单片机
Lynne30913 小时前
EtherCAT网络中,多个节点如何配置才能互不干扰?
网络·网络配置·ethercat·工业网络
Yang961113 小时前
实验室里的多面手:鼎讯信通TM-150信号发生器技术拆解与实测思考
网络