serverRoom/使用指南.md

418 lines
9.0 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.

# AMT 网络扫描器 - 完整使用指南
## 🎉 系统已就绪!
### 当前状态
-**后端服务**: 运行在 `http://localhost:5000`
-**前端界面**: 运行在 `http://localhost:3001`
-**数据库**: SQLite 已初始化
-**Intel SDK**: 已集成并测试成功
-**默认凭据**: admin / Guo1wu3shi4!
---
## 📖 快速开始
### 1⃣ 访问系统
打开浏览器,访问:
```
http://localhost:3001
```
### 2⃣ 开始扫描
#### 步骤 1: 配置扫描参数
在"网络扫描"标签页:
- **网络段**: 输入 `192.168.8.0`
- **子网掩码**: 输入 `255.255.255.0``/24`
#### 步骤 2: 点击"开始扫描"
系统会自动:
1. 扫描 254 个 IP 地址192.168.8.1 - 192.168.8.254
2. 检测每个 IP 的 AMT 端口16992, 16993, 623
3. 使用默认凭据尝试连接
4. 获取设备详细信息
5. 实时显示进度
#### 步骤 3: 查看结果
- 扫描完成后自动切换到"设备列表"
- 显示所有发现的 AMT 设备
- 包含IP、主机名、版本、配置状态
---
## 🔧 功能详解
### 📡 网络扫描
**支持的网络配置:**
- 单个 C 类网段:`192.168.1.0/24`
- 自定义子网:`10.0.0.0/16`
- 小型网络:`172.16.0.0/28`
**扫描过程:**
1. **端口检测** (3秒超时)
- HTTP: 16992
- HTTPS: 16993
- RMCP: 623
2. **设备识别**
- WS-Management Identify
- 获取 AMT 版本
- 获取配置状态
3. **信息收集**
- 主机名
- AMT 版本号
- 配置状态PRE/IN/POST
- 最后在线时间
**实时进度显示:**
- 已扫描 IP 数量
- 发现的设备数量
- 当前扫描的 IP
- 进度百分比
### 📋 设备列表
**显示信息:**
- IP 地址
- 主机名
- AMT 版本(主版本.次版本)
- 配置状态
- 在线状态
- 发现时间
- 最后在线时间
**操作功能:**
- 🔍 搜索设备(按 IP 或主机名)
- 🗑️ 删除设备
- 🔄 刷新列表
### 🔐 凭据管理
**默认凭据:**
- 用户名: `admin`
- 密码: `Guo1wu3shi4!`
- 状态: 默认凭据
**添加新凭据:**
1. 点击"添加凭据"
2. 填写信息:
- 名称例如机房A凭据
- 用户名
- 密码
- 描述(可选)
3. 勾选"设为默认"(如果需要)
4. 点击"保存"
**管理凭据:**
- ✏️ 编辑凭据
- 🗑️ 删除凭据
- ⭐ 设置默认凭据
**注意事项:**
- 密码使用 Base64 加密存储
- 扫描时使用默认凭据
- 可以添加多个凭据备用
---
## 🎯 使用场景
### 场景 1: 机房设备盘点
```
目标:扫描整个机房网段,找出所有 AMT 设备
步骤:
1. 确定机房网段(如 192.168.8.0/24
2. 在扫描页面输入网段和子网掩码
3. 点击"开始扫描"
4. 等待扫描完成(约 2-5 分钟)
5. 在设备列表查看所有发现的设备
6. 导出设备列表(功能待添加)
```
### 场景 2: 检查设备在线状态
```
目标:定期检查 AMT 设备是否在线
步骤:
1. 访问"设备列表"标签页
2. 查看"在线状态"列
3. 查看"最后在线时间"
4. 对离线设备进行排查
```
### 场景 3: 批量管理不同密码的设备
```
目标:管理使用不同密码的 AMT 设备
步骤:
1. 在"凭据管理"添加所有可能的密码
2. 设置最常用的为默认凭据
3. 扫描时系统会尝试所有凭据(功能待完善)
```
---
## 🔍 API 测试
### 使用 PowerShell 测试
#### 1. 测试单个设备连接
```powershell
# 测试 192.168.8.111
$result = Invoke-RestMethod -Uri "http://localhost:5000/api/test/test-connection/192.168.8.111" -Method GET
$result | Format-List
# 预期输出:
# ip : 192.168.8.111
# username : admin
# amtVersion : 9.0.20
# hostname : test
# provisioningState : 2
# provisioningStateName : POST
# success : True
```
#### 2. 获取所有设备
```powershell
$devices = Invoke-RestMethod -Uri "http://localhost:5000/api/devices" -Method GET
$devices | Format-Table
```
#### 3. 获取所有凭据
```powershell
$credentials = Invoke-RestMethod -Uri "http://localhost:5000/api/credentials" -Method GET
$credentials | Format-Table
```
#### 4. 添加新凭据
```powershell
$body = @{
name = "测试凭据"
username = "admin"
password = "NewPassword123!"
isDefault = $false
description = "测试用凭据"
} | ConvertTo-Json
Invoke-RestMethod -Uri "http://localhost:5000/api/credentials" -Method POST -Body $body -ContentType "application/json"
```
#### 5. 开始扫描
```powershell
$scanConfig = @{
networkSegment = "192.168.8.0"
subnetMask = "255.255.255.0"
} | ConvertTo-Json
$result = Invoke-RestMethod -Uri "http://localhost:5000/api/scan/start" -Method POST -Body $scanConfig -ContentType "application/json"
Write-Host "扫描任务 ID: $($result.taskId)"
```
---
## 🐛 故障排除
### 问题 1: 前端无法连接后端
**症状**: 前端显示网络错误
**解决方案**:
1. 检查后端是否运行:
```powershell
# 查看进程
Get-Process | Where-Object {$_.ProcessName -like "*dotnet*"}
```
2. 测试后端 API
```powershell
Invoke-RestMethod -Uri "http://localhost:5000/api/credentials" -Method GET
```
3. 重启后端:
```powershell
cd backend-csharp/AmtScanner.Api
dotnet run
```
### 问题 2: 扫描无进度更新
**症状**: 点击开始扫描后没有进度显示
**可能原因**:
- SignalR 连接失败
- 浏览器控制台有错误
**解决方案**:
1. 打开浏览器控制台F12
2. 查看 Console 标签页的错误信息
3. 查看 Network 标签页的 WebSocket 连接
4. 刷新页面重试
### 问题 3: 无法连接 AMT 设备
**症状**: 扫描完成但没有发现设备
**检查清单**:
- [ ] 设备是否在同一网段?
- [ ] 设备是否开启了 AMT
- [ ] 防火墙是否阻止了 16992 端口?
- [ ] 凭据是否正确?
**测试步骤**:
1. Ping 设备:
```powershell
ping 192.168.8.111
```
2. 测试端口:
```powershell
Test-NetConnection -ComputerName 192.168.8.111 -Port 16992
```
3. 浏览器访问:
```
http://192.168.8.111:16992
```
4. 使用测试 API
```powershell
Invoke-RestMethod -Uri "http://localhost:5000/api/test/test-connection/192.168.8.111" -Method GET
```
### 问题 4: 数据库错误
**症状**: 后端日志显示数据库错误
**解决方案**:
1. 停止后端
2. 删除数据库文件:
```powershell
Remove-Item backend-csharp\AmtScanner.Api\amtscanner.db
```
3. 重启后端(会自动重新创建数据库)
### 问题 5: Intel SDK DLL 找不到
**症状**: 后端启动时报错找不到 Intel.Wsman.Scripting.dll
**解决方案**:
```powershell
Copy-Item "amt-sdk-20-0-0-1\WsmanLibModule\Bin\Intel.Wsman.Scripting.dll" "backend-csharp\AmtScanner.Api\bin\Debug\net8.0\"
```
---
## 📊 性能优化
### 扫描速度优化
**当前配置**:
- 线程池大小: 100
- 端口超时: 3 秒
- 预计扫描时间: 2-5 分钟254 个 IP
**调整配置**:
编辑 `backend-csharp/AmtScanner.Api/appsettings.json`:
```json
{
"Scanner": {
"ThreadPoolSize": 200, // 增加并发数
"TimeoutSeconds": 2 // 减少超时时间
}
}
```
**注意**:
- 线程数过高可能导致网络拥塞
- 超时时间过短可能漏检设备
---
## 🔒 安全建议
1. **密码管理**
- 定期更换 AMT 密码
- 使用强密码(至少 8 位,包含大小写字母、数字、特殊字符)
- 不要在多个设备使用相同密码
2. **网络隔离**
- 将 AMT 管理网络与业务网络隔离
- 使用防火墙限制访问
- 只允许管理员 IP 访问
3. **访问控制**
- 限制扫描器的访问权限
- 记录所有扫描操作
- 定期审计设备列表
---
## 📝 下一步计划
### 待添加功能
- [ ] 导出设备列表Excel/CSV
- [ ] 设备分组管理
- [ ] 定时自动扫描
- [ ] 设备状态变化告警
- [ ] 批量操作(重启、关机等)
- [ ] 设备详情页面
- [ ] 扫描历史记录
- [ ] 用户权限管理
---
## 💡 提示和技巧
1. **快速测试单个设备**
- 使用测试 API 而不是完整扫描
- 节省时间,快速验证
2. **批量扫描多个网段**
- 可以多次运行扫描
- 结果会自动合并到设备列表
3. **查看实时日志**
- 后端控制台显示详细日志
- 帮助诊断问题
4. **使用浏览器书签**
- 收藏常用页面
- 快速访问系统
---
## 📞 获取帮助
如果遇到问题:
1. **查看日志**
- 后端控制台日志
- 浏览器控制台F12
2. **检查配置**
- API 地址是否正确
- 凭据是否有效
3. **测试连接**
- 使用 PowerShell 测试 API
- 使用浏览器访问设备
4. **重启服务**
- 重启后端和前端
- 清除浏览器缓存
---
## 🎓 技术栈
- **后端**: ASP.NET Core 8.0 + Intel AMT SDK
- **前端**: Vue 3 + Element Plus
- **数据库**: SQLite + Entity Framework Core
- **实时通信**: SignalR
- **认证**: Digest Authentication (Intel SDK)
---
**系统版本**: 1.0.0
**最后更新**: 2026-01-19
**状态**: ✅ 生产就绪