serverRoom/使用指南.md

9.0 KiB
Raw Permalink Blame History

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. 测试单个设备连接

# 测试 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. 获取所有设备

$devices = Invoke-RestMethod -Uri "http://localhost:5000/api/devices" -Method GET
$devices | Format-Table

3. 获取所有凭据

$credentials = Invoke-RestMethod -Uri "http://localhost:5000/api/credentials" -Method GET
$credentials | Format-Table

4. 添加新凭据

$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. 开始扫描

$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. 检查后端是否运行:

    # 查看进程
    Get-Process | Where-Object {$_.ProcessName -like "*dotnet*"}
    
  2. 测试后端 API

    Invoke-RestMethod -Uri "http://localhost:5000/api/credentials" -Method GET
    
  3. 重启后端:

    cd backend-csharp/AmtScanner.Api
    dotnet run
    

问题 2: 扫描无进度更新

症状: 点击开始扫描后没有进度显示

可能原因:

  • SignalR 连接失败
  • 浏览器控制台有错误

解决方案:

  1. 打开浏览器控制台F12
  2. 查看 Console 标签页的错误信息
  3. 查看 Network 标签页的 WebSocket 连接
  4. 刷新页面重试

问题 3: 无法连接 AMT 设备

症状: 扫描完成但没有发现设备

检查清单:

  • 设备是否在同一网段?
  • 设备是否开启了 AMT
  • 防火墙是否阻止了 16992 端口?
  • 凭据是否正确?

测试步骤:

  1. Ping 设备:

    ping 192.168.8.111
    
  2. 测试端口:

    Test-NetConnection -ComputerName 192.168.8.111 -Port 16992
    
  3. 浏览器访问:

    http://192.168.8.111:16992
    
  4. 使用测试 API

    Invoke-RestMethod -Uri "http://localhost:5000/api/test/test-connection/192.168.8.111" -Method GET
    

问题 4: 数据库错误

症状: 后端日志显示数据库错误

解决方案:

  1. 停止后端
  2. 删除数据库文件:
    Remove-Item backend-csharp\AmtScanner.Api\amtscanner.db
    
  3. 重启后端(会自动重新创建数据库)

问题 5: Intel SDK DLL 找不到

症状: 后端启动时报错找不到 Intel.Wsman.Scripting.dll

解决方案:

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:

{
  "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
状态: 生产就绪