# 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 **状态**: ✅ 生产就绪