轻量运维工具fastdp v6版本

作者:袖梨 2026-08-19

轻量级 Ansible 风格运维工具,支持在指定主机组上执行批量运维操作,提供多模块管理(shell 命令执行、文件复制、文件拉取、远程脚本、主机连通性检测、环境巡检等)。

功能特点

  1. 支持 6 大模块操作(shell / copy / fetch / script / ping / check)
  2. 基于主机组的批量管理,支持组名和 IP 混合指定
  3. 并发连接控制,基于 Go 协程实现高效调度
  4. 支持 SSH 密码认证和密钥认证(自动查找私钥)
  5. 灵活的配置文件多级加载

性能对比

在相同测试场景下(对 4 台远程主机执行 date 命令):

工具实际耗时(real)性能对比
fastdp0m0.141s✔️ 快 5.6 倍
Ansible0m0.787s

为什么快?

极致并发调度:

  1. 基于 Go 原生协程(Goroutine)实现细粒度并发控制
  2. 精准管理 SSH 连接生命周期
  3. 避免传统多进程模型的资源浪费(如 Ansible 的 fork 开销)

无冗余设计:

  1. 摒弃复杂的兼容性逻辑和冗余配置解析
  2. 专注核心运维场景,让每一次执行都「轻装上阵」
  3. 上手成本低,二进制文件大小只有 8MB 左右,无任何依赖,无需处理多版本 Python 适配

对运维的意义

对于批量命令执行、主机状态巡检等高频场景,fastdp 可将分钟级操作压缩至秒级,真正实现「瞬时响应」的批量运维体验 —— 这意味着:

  1. 巡检效率提升 10 倍以上,大规模集群操作不再漫长等待
  2. 故障排查更及时,秒级反馈加速问题定位

:测试环境为 4 台同网段 Linux 主机,网络延迟 <1ms;实际性能因网络环境、并发数配置略有差异,但核心优势稳定。

安装

下载发行包

tar.gz 包(Linux / macOS 通用)

平台架构下载地址
Linuxamd64fastdp-v6-linux-amd64.tar.gz
Linuxarm64fastdp-v6-linux-arm64.tar.gz
macOSamd64fastdp-v6-darwin-amd64.tar.gz
macOSarm64fastdp-v6-darwin-arm64.tar.gz

tar.gz 包内容:

fastdp-v6-linux-amd64/├── fastdp              # 主程序(可执行)├── config.toml         # 配置文件模板├── host                # 主机组配置模板├── fastdp-check.sh     # 巡检脚本(check 模块使用)└── README.txt          # 说明文件

请选择适合你的安装方式:

方式一:系统级安装(推荐 root 用户使用)

# 解压tar -zxvf fastdp-v6-linux-amd64.tar.gz# 进入目录cd fastdp-v6-linux-amd64# 安装到系统路径(需要 sudo)sudo cp fastdp /usr/local/bin/sudo mkdir -p /etc/fastdpsudo cp config.toml host fastdp-check.sh /etc/fastdp/# 编辑主机组配置sudo vim /etc/fastdp/host# 安装完成后即可使用sudo fastdp --help

方式二:用户级安装(无需 root)

# 解压tar -zxvf fastdp-v6-linux-amd64.tar.gz# 进入目录cd fastdp-v6-linux-amd64# 复制到家目录mkdir -p ~/.fastdp/bincp fastdp ~/.fastdp/bin/cp config.toml host fastdp-check.sh ~/.fastdp/# 将二进制目录加入 PATH(追加到 ~/.bashrc 或 ~/.zshrc)echo'export PATH="$HOME/.fastdp/bin:$PATH"' >> ~/.bashrcsource ~/.bashrc# 编辑配置,将 host_inventory 改成家目录的绝对路径vim ~/.fastdp/config.toml# host_inventory = "/home/你的用户名/.fastdp/host"# 编辑主机组配置(默认为连接root用户,注意修改)vim ~/.fastdp/host# 安装完成后即可使用fastdp --help

方式三:RPM / DEB 包(自动系统级安装,需 root)

RPM 包(CentOS / Rocky / openEuler 等)

注意:包名中的 ky10 是构建环境所致,实际无任何系统依赖,可在 CentOS / Rocky / openEuler 等主流发行版上正常安装使用。

# 下载wget https://gitee.com/zhao-pengfei2/fastdp/releases/download/v6/fastdp-6-1.ky10.x86_64.rpm# 安装(需要 root 权限)sudo rpm -ivh fastdp-6-1.ky10.x86_64.rpm# 安装完成后即可使用fastdp --help

DEB 包(Ubuntu / Debian 等)

# 下载wget https://gitee.com/zhao-pengfei2/fastdp/releases/download/v6/fastdp-v6-linux-amd64.deb# 安装(需要 root 权限)sudo dpkg -i fastdp-v6-linux-amd64.deb# 安装完成后即可使用fastdp --help

RPM/DEB 安装后,二进制位于 /usr/local/bin/,配置文件位于 /etc/fastdp/。与方式一相同,默认以 root 身份执行。

普通用户如需自定义配置,可复制到家目录(配置加载时家目录优先级最高):

mkdir -p ~/.fastdpcp /etc/fastdp/config.toml ~/.fastdp/cp /etc/fastdp/host ~/.fastdp/cp /etc/fastdp/fastdp-check.sh ~/.fastdp/vim ~/.fastdp/config.toml# 将 host_inventory 的值改成家目录的绝对路径,如:# host_inventory = "/home/你的用户名/.fastdp/host"

从源码编译

# 直接编译(适合开发者或自定义构建)git clone https://gitee.com/zhao-pengfei2/fastdp.gitcd fastdpgo build -o fastdp ./cmd/main.gosudo cp fastdp /usr/local/bin/# 或使用构建脚本打发布包(自动下载源码并构建 tar.gz / rpm / deb)wget https://gitee.com/zhao-pengfei2/fastdp/releases/download/v6/build.shchmod +x build.sh./build.sh

配置文件加载优先级

1. ~/.fastdp/config.toml      (用户自定义,优先级最高)2. /etc/fastdp/config.toml    (系统默认)3. ./config.toml              (当前目录,兜底)

巡检脚本路径优先级(check 模块)

1. ~/.fastdp/fastdp-check.sh  (用户自定义,优先级最高)2. /etc/fastdp/fastdp-check.sh(系统默认)

命令补全

Zsh(macOS / Linux)

# 查看 $FPATH 是否包含补全目录echo$FPATH# macOS 安装 zsh-completionsbrew install zsh-completions# 安装 fastdp 补全(如目录不存在需先 mkdir -p)sudo mkdir -p /usr/local/share/zsh/site-functionssudo fastdp completion zsh > /usr/local/share/zsh/site-functions/_fastdp# ~/.zshrc 文件中确保有下面这两行autoload -Uz compinitcompinit# 生效source ~/.zshrc# 验证fastdp [tab][tab]

Bash(Linux)

# linux 安装 bash-completions(rpm系示例)yum -y install bash-completion# 生成并安装补全脚本fastdp completion bash > /usr/local/etc/bash_completion.d/fastdpchmod +r /usr/local/etc/bash_completion.d/fastdp# 重开终端或重新加载source ~/.bash_profile# 验证fastdp [tab][tab]

快速开始

# 查看帮助fastdp --help# shell:在 web 组执行 uptimefastdp shell -a "uptime" web# shell:多主机组/IP 混合执行fastdp shell -a "lsblk" master node 192.168.10.100# copy:复制本地文件到 db 组(自动 MD5 校验 + 权限同步)fastdp copy -s ./config.ini -d /etc/app/config.ini db# fetch:批量拉取远程日志文件fastdp fetch -r "/var/log/messages" all# script:推送脚本到远程主机并执行fastdp script -f init.sh db# ping:检测 all 组主机 SSH 存活状态fastdp ping all# check:批量主机环境巡检fastdp check all# 开启调试模式fastdp -v shell -a "df -h" web# 控制执行的并发数量,默认为配置文件中的值fastdp -c 10 shell -a "lsblk" web# 指定主机清单文件 (优先于配置文件)fastdp -i ./host shell -a "df -h" gpu

模块说明

1. shell 模块

在远程主机执行 shell 命令。

参数:

  1. -a / --args:要执行的 shell 命令(必需)
# 基础用法fastdp shell -a "df -h" web# 混合指定:组 + IP 同时执行fastdp shell -a "free -h" master node 192.168.10.100# 引号自由使用fastdp shell -a 'ls -l /root' allfastdp shell -a "echo hello world" all# 高阶用法:批量输出 IP + 主机名fastdp shell -a 'echo $(hostname -I|awk '''{print$1}''') $(hostname)' all | grep -v 'output:'

2. copy 模块

复制本地文件到远程主机,支持 MD5 校验(文件相同则跳过)和权限同步。

参数:

  1. -s / --source:本地源文件路径(必需)
  2. -d / --dest:远程目标路径,需为绝对路径(必需)
# 推送配置文件到 web 组fastdp copy -s app.conf -d /etc/ web# 推送脚本到指定主机fastdp copy -s run.sh -d /tmp/run.sh 192.168.1.101

3. fetch 模块

批量从远程主机拉取文件(基于 SFTP),支持通配符匹配。

参数:

  1. -r / --remote:远程文件路径,支持 *?[] 通配符(必需)
  2. -d / --dest:本地保存目录(优先使用命令行参数,其次配置文件 default_fetch_path,兜底 ./fastdp-fetch
  3. --no-ip-dir:不创建 IP 目录,文件名改为 IP_原文件名

使用通配符时必须加引号

# 批量拉取所有主机 /tmp/sec* 文件# 重要:远程路径含通配符时,必须用引号包裹fastdp fetch --remote "/tmp/sec*" all# 拉取指定组/IP 的日志文件fastdp fetch -r "/var/log/messages" masterfastdp fetch -r "/root/*.txt" 192.168.1.101# 指定本地保存目录fastdp fetch -r "/tmp/sec?" --dest ./my-download all# 不创建 IP 目录,文件名为 IP_文件名fastdp fetch -r "/tmp/*.log" --no-ip-dir all

4. script 模块

在远程主机上批量执行本地shell脚本。

参数:

  1. -f / --file:本地脚本路径(必需,文本文件,最大 512KB)
# 上传脚本并在所有主机执行fastdp script -f run.sh all# 执行到指定组和 IPfastdp script -f check.sh master node 192.168.10.100

5. ping 模块

测试远程主机 SSH 连通性。

# 全部主机fastdp ping all

6. check 模块

批量主机环境巡检。执行巡检脚本(fastdp-check.sh)并格式化输出结果。

参数:

  1. -g:竖向格式化输出(类似 mysql G)
  2. -f:导出格式,支持 csv / md / html

固定输出字段(18+ 标准字段,支持自定义字段):

字段说明
hostname主机名
virt虚拟化
os系统版本
kernel内核
cpu_coresCPU 核心
cpu_modelCPU 型号
arch架构
mem内存
net网卡
gateway网关
disk磁盘
firewall防火墙
selinuxSELinux
swapSwap
timezone时区
sys_time系统时间
hw_time硬件时间
gpuGPU
# 对所有主机执行环境检查(默认表格输出)fastdp check all# 竖向格式化输出fastdp check all -g# 导出巡检报告fastdp check all -f csv  > report.csvfastdp check all -f md   > report.mdfastdp check all -f html > report.html

自定义字段:编辑巡检脚本(~/.fastdp/fastdp-check.sh/etc/fastdp/fastdp-check.sh),在末尾追加 key=value 格式即可自动识别展示:

# 示例:添加自定义字段echo"my_custom_field=hello"echo"app_version=$(cat /opt/app/VERSION)"

竖向展示

fastdp check all -f csv  > report.csvopen report.csv

生成execl表格如图所示,html和md格式同理

配置文件

路径与加载优先级

1. ~/.fastdp/config.toml      (用户自定义,优先级最高)2. /etc/fastdp/config.toml    (系统默认)3. ./config.toml              (当前目录,兜底)

配置项说明

# 主机清单路径host_inventory = "/etc/fastdp/host"# 默认并发数concurrency = 15# 默认 SSH 端口default_ssh_port = 22# 默认 SSH 用户名default_ssh_user = "root"# 默认 SSH 连接超时(秒),不设置或者值为0代表永不超时default_ssh_timeout = 5# 日志级别:debug/infolog_level = "info"# 全局默认密码(所有机器统一密码的情况)default_ssh_password = ""# 默认文件拉取存放位置default_fetch_path = "./fastdp-fetch"

主机组配置

主机组清单文件用于定义主机分组及主机连接参数,路径在配置文件中通过 host_inventory 指定。

格式说明

[组名]主机地址 [参数=值 ...]

支持的参数

参数说明默认值
userSSH 登录用户root
portSSH 端口22
passwordSSH 登录密码(空则密钥认证)空(密钥)

示例

# Web 服务器组[web]192.168.1.100 user=admin port=2222192.168.1.101 password=secure@123# 数据库服务器组[db]192.168.2.50 user=dbadmin192.168.2.51 port=2200# 混合组[test]10.0.0.5 user=test

全局参数

参数缩写说明默认值
--concurrency-c并发连接数15
--debug-v开启调试模式false
--inventory-i指定主机清单文件(优先于配置文件)""
--version-V显示版本信息false
--help-h查看帮助信息-

注意事项

  1. 主机组配置
    1. 主机地址支持 IP 或域名
    2. 若未指定 password,默认使用 SSH 密钥认证(优先读取 ~/.ssh/id_rsa、id_ed25519、id_ecdsa、id_dsa)
  2. 文件复制
    1. 远程目标路径(-d)必须为绝对路径
    2. 支持保留源文件权限(自动同步源文件权限到远程文件)
    3. 自动 MD5 校验,文件相同则跳过传输
  3. 文件拉取
    1. 远程路径含 *? 等通配符时,必须用引号包裹
    2. 默认按 IP 创建子目录,--no-ip-dir 可改为 IP_文件名 模式
  4. 远程脚本
    1. 仅支持纯文本脚本(最大 512KB),禁止上传二进制文件
    2. 非 .sh 后缀的文件会发出警告但不阻止执行
  5. 错误排查
    1. 开启调试模式(-v)可查看详细的 SSH 连接日志和命令执行过程
    2. 若主机连接失败,检查 SSH 端口、认证方式及网络连通性
  6. check 模块
    1. 巡检脚本路径:~/.fastdp/fastdp-check.sh >/etc/fastdp/fastdp-check.sh
    2. 可自行编辑脚本内容,输出 key=value 格式即可自动识别
  7. 权限说明
    1. 方式一(系统级安装)仅限 root 用户执行,安装和普通用户无关
    2. 方式二(用户级安装)无需 root,所有文件位于家目录,互不干扰
    3. 巡检脚本中 hw_time(硬件时间)需要 root 权限才能读取,普通用户执行时该字段为空属正常现象
    4. 普通用户如需完整巡检结果,可通过 sudo hwclock -r 单独获取硬件时间

帮助与反馈

  1. 查看命令帮助:fastdp --helpfastdp [模块名] --help
  2. 提交 issue:gitee.com/zhao-pengfe…
  3. 使用有问题欢迎评论或私信,以便进一步优化改进

相关文章

精彩推荐