Files
membank/auto-check/README.md

140 lines
4.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# auto-check
自动化目标扫描 + SSH 登录 + 远程压力测试工具(支持 CIDR 和 IP 范围格式)。
基于 [cobra](https://github.com/spf13/cobra) 命令行框架。
## 功能
| 子命令 | 功能 | 包 |
|--------|------|-----|
| `run` | 完整流程:发现 → SSH → 压测 | 全部 |
| `scan` | 仅扫描目标,发现存活设备 | `pkg/discovery` |
| `stress` | 对指定 IP 执行压力测试 | `pkg/stress` + `pkg/sshclient` |
## 安装
```bash
go build -o auto-check .
```
## 使用
```bash
# 查看帮助
./auto-check --help
# 仅扫描目标CIDR 格式)
./auto-check scan --cidr 192.168.1.0/24
# 仅扫描目标IP 范围格式)
./auto-check scan --cidr 192.168.1.1-192.168.1.100
# 对指定主机执行压力测试
./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` | 目标网段或 IP 范围 (CIDR 或 起始IP-结束IP) |
| `--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 # 核心逻辑:送镜像 + 驱动容器测试
```
### 工作流程
1. 检测目标机 Docker 可用性(不可用则判失败)
2. 检查镜像是否存在(不存在则上传工程目录中的镜像 tar 并 `docker load`,不依赖 registry
3. 启动容器执行测试(脚本在镜像内,环境变量传参)
4. 解析容器输出 → 生成报告
### 配置方式(在 `auto-check.yaml` 中)
```yaml
stress:
docker_image: "stress-test:latest" # 压测镜像(飞牛 NAS 默认支持 Docker
docker_tar: "docker/stress-test/stress-test.tar" # 本地镜像文件,目标机无镜像时自动上传并 load
docker_args: "--network=host --privileged"
```
### 构建镜像(维护时使用)
```bash
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](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
```
> ⚠️ 请在授权设备上使用,未授权扫描/测试可能违反法律法规。