auto-check
自动化网段扫描 + SSH 登录 + 远程压力测试工具。
基于 cobra 命令行框架。
功能
| 子命令 | 功能 | 包 |
|---|---|---|
run |
完整流程:发现 → SSH → 压测 | 全部 |
scan |
仅扫描网段,发现存活设备 | pkg/discovery |
stress |
对指定 IP 执行压力测试 | pkg/stress + pkg/sshclient |
安装
go build -o auto-check .
使用
# 查看帮助
./auto-check --help
# 仅扫描网段
./auto-check scan --cidr 192.168.1.0/24
# 对指定主机执行压力测试
./auto-check stress --ips 192.168.1.100,192.168.1.101 --user root --password secret --stress cpu,memory,disk
# 完整流程(扫描 → SSH → 压测)
./auto-check run --cidr 192.168.1.0/24 --user root --password secret --stress cpu,memory,disk
全局标志
| 标志 | 默认值 | 说明 |
|---|---|---|
--cidr |
192.168.1.0/24 |
目标网段 (CIDR) |
--user |
root |
SSH 用户名 |
--password |
(空) | SSH 密码 |
--key |
(空) | SSH 私钥路径 |
--port |
22 |
SSH 端口 |
--timeout |
3s |
超时 |
--concurrency |
50 |
并发扫描数 |
--report |
(自动生成) | 报告输出路径 |
子命令标志
run / stress
| 标志 | 默认值 | 说明 |
|---|---|---|
--stress |
cpu,memory |
压测类型: cpu, memory, disk, memnative, full |
--duration |
30s |
持续时间 |
--threads |
4 |
线程数 |
--ips |
(必填,仅stress) | 目标 IP (逗号分隔) |
压力测试类型
| 类型 | 工具 | 说明 |
|---|---|---|
cpu |
stress-ng | CPU 全方法压测 |
memory |
stress-ng | 内存压测 |
disk |
stress-ng | 磁盘IO混合压测 |
memnative |
stressapptest | 内存稳定性精压(数据完整性校验) |
full |
stress-ng | CPU+内存+磁盘 三合一综合压测 |
压测执行方式(Docker 容器)
压测统一在 Docker 容器中执行:工具与测试脚本预装在镜像里,无需在目标机在线安装,环境一致性好(飞牛 NAS 默认已安装 Docker)。
架构设计
auto-check/
├── docker/ # Docker 镜像维护目录(独立)
│ └── stress-test/
│ ├── Dockerfile # 镜像定义
│ ├── scripts/ # 测试脚本(打包进镜像)
│ │ ├── run.sh # 入口脚本(环境变量驱动)
│ │ ├── cpu.sh # CPU 压测
│ │ ├── memory.sh # 内存压测
│ │ ├── disk.sh # 磁盘压测
│ │ └── ...
│ └── README.md
└── pkg/stress/
└── runner.go # 核心逻辑:送镜像 + 驱动容器测试
工作流程
- 检测目标机 Docker 可用性(不可用则判失败)
- 检查镜像是否存在(不存在则上传工程目录中的镜像 tar 并
docker load,不依赖 registry) - 启动容器执行测试(脚本在镜像内,环境变量传参)
- 解析容器输出 → 生成报告
配置方式(在 auto-check.yaml 中)
stress:
docker_image: "stress-test:latest" # 压测镜像(飞牛 NAS 默认支持 Docker)
docker_tar: "docker/stress-test/stress-test.tar" # 本地镜像文件,目标机无镜像时自动上传并 load
docker_args: "--network=host --privileged"
构建镜像(维护时使用)
cd docker/stress-test
docker build -t stress-test:latest .
# 导出到工程目录,供测试时上传分发(不依赖 registry)
docker save -o stress-test.tar stress-test:latest
详细文档
镜像维护说明请参考:docker/stress-test/README.md
项目结构
auto-check/
├── main.go
├── cmd/
│ └── root.go # 所有子命令
├── pkg/
│ ├── discovery/ # 设备发现
│ ├── sshclient/ # SSH 客户端
│ ├── stress/ # 压力测试(Docker 容器驱动)
│ │ ├── types.go # 类型定义
│ │ ├── tools.go # Docker 环境检测
│ │ ├── metrics.go # 指标定义 + 配置
│ │ └── runner.go # 调度器(送镜像 + 驱动容器)
│ └── report/ # 报告模块
├── go.mod
└── README.md
⚠️ 请在授权设备上使用,未授权扫描/测试可能违反法律法规。