轻量级 Ansible 风格运维工具,支持在指定主机组上执行批量运维操作,提供多模块管理(shell 命令执行、文件复制、文件拉取、远程脚本、主机连通性检测、环境巡检等)。
在相同测试场景下(对 4 台远程主机执行 date 命令):
| 工具 | 实际耗时(real) | 性能对比 |
|---|---|---|
| fastdp | 0m0.141s | ✔️ 快 5.6 倍 |
| Ansible | 0m0.787s |
对于批量命令执行、主机状态巡检等高频场景,fastdp 可将分钟级操作压缩至秒级,真正实现「瞬时响应」的批量运维体验 —— 这意味着:
注:测试环境为 4 台同网段 Linux 主机,网络延迟 <1ms;实际性能因网络环境、并发数配置略有差异,但核心优势稳定。
| 平台 | 架构 | 下载地址 |
|---|---|---|
| Linux | amd64 | fastdp-v6-linux-amd64.tar.gz |
| Linux | arm64 | fastdp-v6-linux-arm64.tar.gz |
| macOS | amd64 | fastdp-v6-darwin-amd64.tar.gz |
| macOS | arm64 | fastdp-v6-darwin-arm64.tar.gz |
tar.gz 包内容:
fastdp-v6-linux-amd64/├── fastdp # 主程序(可执行)├── config.toml # 配置文件模板├── host # 主机组配置模板├── fastdp-check.sh # 巡检脚本(check 模块使用)└── README.txt # 说明文件请选择适合你的安装方式:
# 解压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# 解压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注意:包名中的
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# 下载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 --helpRPM/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.sh1. ~/.fastdp/config.toml (用户自定义,优先级最高)2. /etc/fastdp/config.toml (系统默认)3. ./config.toml (当前目录,兜底)1. ~/.fastdp/fastdp-check.sh (用户自定义,优先级最高)2. /etc/fastdp/fastdp-check.sh(系统默认)# 查看 $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]# 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在远程主机执行 shell 命令。
参数:
-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:'复制本地文件到远程主机,支持 MD5 校验(文件相同则跳过)和权限同步。
参数:
-s / --source:本地源文件路径(必需)-d / --dest:远程目标路径,需为绝对路径(必需)# 推送配置文件到 web 组fastdp copy -s app.conf -d /etc/ web# 推送脚本到指定主机fastdp copy -s run.sh -d /tmp/run.sh 192.168.1.101批量从远程主机拉取文件(基于 SFTP),支持通配符匹配。
参数:
-r / --remote:远程文件路径,支持 *?[] 通配符(必需)-d / --dest:本地保存目录(优先使用命令行参数,其次配置文件 default_fetch_path,兜底 ./fastdp-fetch)--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在远程主机上批量执行本地shell脚本。
参数:
-f / --file:本地脚本路径(必需,文本文件,最大 512KB)# 上传脚本并在所有主机执行fastdp script -f run.sh all# 执行到指定组和 IPfastdp script -f check.sh master node 192.168.10.100测试远程主机 SSH 连通性。
# 全部主机fastdp ping all批量主机环境巡检。执行巡检脚本(fastdp-check.sh)并格式化输出结果。
参数:
-g:竖向格式化输出(类似 mysql G)-f:导出格式,支持 csv / md / html固定输出字段(18+ 标准字段,支持自定义字段):
| 字段 | 说明 |
|---|---|
| hostname | 主机名 |
| virt | 虚拟化 |
| os | 系统版本 |
| kernel | 内核 |
| cpu_cores | CPU 核心 |
| cpu_model | CPU 型号 |
| arch | 架构 |
| mem | 内存 |
| net | 网卡 |
| gateway | 网关 |
| disk | 磁盘 |
| firewall | 防火墙 |
| selinux | SELinux |
| swap | Swap |
| timezone | 时区 |
| sys_time | 系统时间 |
| hw_time | 硬件时间 |
| gpu | GPU |
# 对所有主机执行环境检查(默认表格输出)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 指定。
[组名]主机地址 [参数=值 ...]| 参数 | 说明 | 默认值 |
|---|---|---|
| user | SSH 登录用户 | root |
| port | SSH 端口 | 22 |
| password | SSH 登录密码(空则密钥认证) | 空(密钥) |
# 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 | 查看帮助信息 | - |
*? 等通配符时,必须用引号包裹--no-ip-dir 可改为 IP_文件名 模式~/.fastdp/fastdp-check.sh >/etc/fastdp/fastdp-check.shkey=value 格式即可自动识别hw_time(硬件时间)需要 root 权限才能读取,普通用户执行时该字段为空属正常现象sudo hwclock -r 单独获取硬件时间fastdp --help 或 fastdp [模块名] --help