尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

NetAlertX 设备管理完全指南:Main Info 字段、虚拟设备、状态控制与字段锁定

发布时间:2026/9/29 2:22:40

资讯中心
01
ARTICLE

NetAlertX 设备管理完全指南:Main Info 字段、虚拟设备、状态控制与字段锁定

NetAlertX 设备管理完全指南:Main Info 字段、虚拟设备、状态控制与字段锁定
后端网络运维数据可视化【免费下载链接】NetAlertXCentralized network visibility and continuous asset discovery. Monitor devices, detect change, and stay aware across distributed networks.项目地址https://gitcode.com/gh_mirrors/ne/NetAlertX点击查看免费下载导读本文以 NetAlertX 的 DEVICE_MANAGEMENT.md 文档为主线系统讲解设备管理的完整知识体系从设备识别信息Main Info各字段的含义与填写建议到虚拟设备Dummy Device的创建与三种状态控制方式再到防止扫描插件覆盖手工数据的字段锁定Field Lock机制及其底层数据源Source规则。读完本文你将掌握如何高效地录入、维护、保护设备数据并理解 NetAlertX 扫描数据更新与用户数据保护之间的完整决策链路能够结合源码定位问题、按需配置插件写入权限。设备识别信息Main Info字段详解NetAlertX 的设备详情页中Main Info主要信息区块存储了设备的大部分可识别信息也是日常设备管理中最常编辑的区域。其中部分信息由各种发现类插件自动探测得到例如名称、厂商、图标等而大多数字段的初始默认值可以在NEWDEV插件中预先指定这样每次新设备被扫描发现时都会套用这些默认值。[!NOTE] 你可以通过三种入口对设备进行批量编辑multi-edit在主设备列表页勾选设备、进入 Maintenance维护分区操作或借助 Maintenance 下的 CSV 导出功能。详见 DEVICES_BULK_EDITING.md。字段说明与填写建议字段含义与行为MAC设备的 MAC 地址。默认不可编辑除非是在创建新的虚拟设备Dummy Device时。Last IP设备的最后已知 IP 地址。同样默认不可编辑创建虚拟设备时变为可编辑。Name设备的友好名称。由各类名称发现Name discovery插件自动探测参见 PLUGINS_OVERVIEW.md。若名称是通过IP 匹配而非 MAC 匹配发现的应用会附加(IP match)标记——因为 IP 可能变化这暗示该名称可能不准确。Icon设备图标。部分场景可自动探测。可选择一个已有图标或按 ICONS.md 添加自定义图标还可以将同一图标自动应用到所有相同类型的设备上。Owner设备所有者。下拉列表会自动汇集已有所有者同时支持输入自定义值。Type设备类型从下拉列表中选择Smartphone、Tablet、Laptop、TV、router等也可新增类型。若希望设备作为**网络设备Network device**参与网络视图Network view拓扑应选择 Network Devices 类型下的选项或到 Settings 中新增网络设备类型。详见 NETWORK_TREE.md。Vendor制造商。当值为空或未知时NetAlertX 会自动更新也可手动编辑。厂商信息通常来自 OUI 前缀匹配仓库根目录的 ieee-oui.txt 即用于此类解析。Group设备分组Always on、Personal、Friends等也支持输入自定义分组名。Location设备位置通常为房间Kitchen、Attic、Living room等可新增自定义位置。Comments设备备注可记录序列号、维护信息等任意内容。[!NOTE] 以上字段用途只是建议性的。你可以按需复用这些字段来存储其他信息例如网络接口名、设备所属公司等。源码层面的字段落库从源码看上述字段在数据库中对应Devices表的列devMac、devLastIP、devName、devVendor、devGroup、devLocation、devComments等。当通过界面保存设备时server/models/device_instance.py 的setDeviceData方法负责更新或创建设备记录updateField方法则负责单字段更新二者都校验设备 GUID/MAC 是否存在并抛出明确的错误信息。这意味着你在界面上看到的每一个 Main Info 字段最终都会经由此模型层写入 SQLite 数据库并且用户更新会触发后面将讲到的 Source 追踪机制。创建虚拟设备Dummy Device你可以在Devices设备列表页面直接创建虚拟设备Dummy Device用于登记那些无法被扫描自动发现、但需要纳入资产管理范围的设备。创建后MAC与Last IP字段将变为可编辑状态允许你手工指定这两个关键标识。从源码看创建虚拟设备时setDeviceData会走createNewTrue分支devSourcePlugin被写为DUMMY见 device_instance.py 附近表明该记录来源为手工创建同时会自动为新记录初始化各个*Source源追踪字段为NEWDEV仅当创建载荷提供了非空值时这一点在集成测试test_create_new_devices_sets_sources中也有验证。虚拟 / 手工创建设备的状态控制对于虚拟设备或手工创建设备你可以通过两种途径控制其在线状态ICMP 自动探测或Force Status强制状态手动指定。选择依据是设备是否为真实设备以及你对**数据卫生data hygiene**的重视程度。ICMP 方式适用于真实设备为虚拟设备填写一个真实存在且能响应 ping 的 IP 地址NetAlertX 会通过 ICMP 探测自动更新设备状态无需人工干预。Force Status 方式数据卫生最佳实践当设备不可达或纯逻辑存在如一个不存在的网络节点时建议手动设置Force Status字段。这能保持数据干净避免产生假 IP记录。源码中update_devPresentLastScan_based_on_force_statusserver/scan/device_handling.py会在每次扫描周期直接根据devForceStatus值覆写devPresentLastScanonline→devPresentLastScan 1强制在线offline→devPresentLastScan 0强制离线dont_force或空 → 不改变交给正常扫描逻辑test/scan/test_force_status.py 对上述三种取值含大小写不敏感的ONLINE做了完整验证确认强制状态可以覆盖扫描结果。环回地址127.0.0.1、0.0.0.0当你希望设备通过 ICMP 永远显示在线时可填写环回地址。注意这会模拟可达性并引入人为数据。但如果你希望基于 IP 过滤来区分虚拟设备与真实设备这种方案可能是首选。从已有设备复制数据为了加速设备库填充你还可以从一台已有设备复制数据到新设备。入口位于设备详情页的Tools工具标签页。源码层面DeviceInstance.copyDevice(mac_from, mac_to)device_instance.py通过创建临时表、改写目标 MAC、删除旧目标记录再插入的方式完成整行复制因此源设备的所有字段包括自定义属性、父节点关系等都会被一并复制适合批量录入结构相似设备的场景。字段锁定Field Locking防止插件覆盖手工数据NetAlertX 允许你锁定特定设备字段防止插件自动覆盖你手工修正的值。当你手动更正了某条信息而发现类插件可能探测到不同值时这一机制非常有用。快速上手打开设备进入编辑界面点击任意被追踪字段旁边的锁定按钮该字段即受保护——在你解锁之前插件无法修改它。哪些字段可以被锁定Tracked Fields只有以下字段支持锁定这些是插件和用户都可能修改的字段devName— 设备主机名/别名devVendor— 设备制造商devFQDN— 完整域名devSSID— WiFi 网络名称devParentMAC— 父级/网关 MACdevParentPort— 父设备端口devParentRelType— 关系类型如gatewaydevVlan— VLAN 标识此外以下字段也被追踪若可用UI 会显示其来源devMac、devLastIP、devFQDN。在源码中这份映射由 server/db/authoritative_handler.py 的FIELD_SOURCE_MAP定义每个可锁字段对应一个*Source追踪列如devName→devNameSource锁定机制本质上就是改写该源列的值。字段来源Source指示器含义每个受追踪字段都有一个来源指示器说明该值为何受保护指示器含义能否被修改LOCKED你锁定了该字段否直到你解锁✏️USER你编辑过该字段否插件无法覆盖NEWDEV默认/未设置值是插件可更新插件名最近由某插件更新如UNIFIAPI是若该字段在插件的SET_ALWAYS列表中[!TIP] 你可以在 Multi-edit 批量编辑 对话框中批量解锁设备这会清除所选设备所有*Source字段中的USER和LOCKED值。锁定与解锁的源码实现锁定lock_fieldauthoritative_handler.py执行UPDATE Devices SET {source_field}LOCKED并校验字段是否在FIELD_SOURCE_MAP中、源列是否存在解锁unlock_field执行UPDATE Devices SET {source_field}将源恢复为空等价于NEWDEV级别的可写状态模型层封装DeviceInstance.lockDeviceField/unlockDeviceField/unlockFieldsdevice_instance.py提供单字段与批量按 MAC 列表或全部设备解锁能力。场景化操作示例场景 1命名了设备并希望保留该名称手动将设备名改为 Living Room Smart TV某个扫描插件之后探测到 Unknown Device 或 DEVICE-ABC123解法锁定设备名称字段之后的每次扫描都会保留你的自定义名称。场景 2锁定了字段但它仍然变化这通常意味着字段源实际是USER或LOCKED受保护。请检查是否显示了锁图标有时变更需要几秒才显示尝试刷新页面。场景 3希望让插件再次更新找到带锁定字段的设备依次点击每个字段旁的解锁按钮刷新页面下次插件运行时即可更新该字段。锁定/解锁后的行为锁定后你的自定义值被保留后续插件扫描不会覆盖你仍可在解锁后随时手动编辑锁定跨插件运行持续生效其他用户也能看到锁定状态。解锁后插件可在下次扫描时再次更新若插件有新值将被应用你随时可以重新锁定你的手动编辑仍保存在数据库中。错误信息与排查消息含义处理方式Field cannot be locked尝试锁定不支持锁定的字段只锁定上文列表中的字段Device not found设备 MAC 不存在确认设备未被删除锁按钮不工作网络或权限问题刷新页面重试字段意外变化字段可能已被解锁检查是否显示解锁图标何时该锁、何时不该锁✅ 建议锁定已自定义且正确的设备名称不应改变的静态 IP已配置的 VLAN 信息已知父设备且不希望被自动纠正。❌ 不建议锁定值似乎有误时应先编辑再锁定试图掩盖另一个数据源的问题强行设置系统不认同的值。常见故障排查锁按钮不出现确认字段属于被追踪字段确认设备已保存新设备不显示锁按钮刷新页面。按钮存在但点击无效检查网络连接检查是否有编辑设备的权限打开浏览器控制台F12 Console查看报错稍后重试。锁定后字段仍变化再次确认锁图标存在重载页面可能是显示问题检查是否误解锁若持续存在请反馈问题。底层原理字段更新决策与源追踪Source Rules要真正理解字段锁定需要理解 NetAlertX 的数据源规则Source Rules体系。当系统扫描网络时会获得设备的各类信息名称、IP、厂商等。为避免意外覆盖手动修改系统为每条信息维护一个Source来源并根据来源决定扫描结果是否可以覆盖该值。保护等级来源状态描述扫描能否覆盖USER你手动输入的值绝不LOCKED被固定/保护的值绝不NEWDEV由NEWDEV插件设置初始化的值总是可以插件名由特定扫描器发现如NBTSCAN仅当满足特定规则扫描如何更新信息非 USER/LOCKED 字段1. 空字段规则默认系统默认谨慎只在当前字段为空如unknown、0.0.0.0、空白时才填充信息不会随意改动已有值。2.SET_ALWAYS某些插件被配置为权威来源。若某字段在该插件的SET_ALWAYS列表中扫描器将总是用新值覆盖旧值——但仍绝不会覆盖USER或LOCKED字段。注意在大规模网络中对名称解析字段如devName开启SET_ALWAYS会扩大解析范围并增加 DNS 查询量详见 PERFORMANCE.md — Plugin Field Authority。3.SET_EMPTY若字段在SET_EMPTY列表中扫描器仅在字段当前为空时提供值。适用于填空但不改已确立值的场景。4. 自动覆盖实时追踪部分字段如 IP 地址devLastIP和完整域名devFQDN被设置为随变化自动更新。设备更换 IP 时系统会立即反映无需手动操作。决策逻辑汇总若当前值是…而扫描发现…是否更新USER / LOCKED任意值否空一个新值是插件值一个不同值否除非开启SET_ALWAYSIP 地址不同 IP是自动更新源码级验证can_overwrite_field核心判定函数can_overwrite_fieldauthoritative_handler.py严格按以下顺序裁决当前来源为USER/LOCKED→ 拒绝覆盖新值为空或占位符0.0.0.0、NULL_EQUIVALENTS等→ 拒绝新旧值相同 → 允许用于刷新 Source 字段字段在SET_ALWAYS→ 允许字段在SET_EMPTY→ 仅当前值为空时允许默认规则 → 仅当前值为空时允许allow_override_if_changed标志用于devLastIP等→ 值变化时允许。同时插件的SET_ALWAYS/SET_EMPTY配置通过get_plugin_authoritative_settings读取形如{插件前缀}_SET_ALWAYS的配置项动态获取且扫描更新在 SQL 层也构建了对应的覆盖条件get_overwrite_sql_clause确保海量设备更新时依然遵守同样规则。测试验证test/scan/test_field_lock_scan_integration.py 用真实扫描流程覆盖了全部组合场景新设备创建时正确初始化各*Source字段空名称设备NEWDEV源可被扫描更新名称USER源名称不会被扫描覆盖My Custom Device保持不变LOCKED源名称不会被扫描覆盖Important Device保持不变空厂商字段可被扫描填充混合来源的多设备扫描中只有符合规则的字段被更新。此外test/scan/test_field_lock_scenarios.py、test/scan/test_device_field_lock.py 分别覆盖了更多边界场景可作深入研究参考。通过 API 编程式锁定字段除了 UI 上的锁按钮字段锁定能力也暴露为 HTTP API便于脚本与自动化集成。详见 API_DEVICE_FIELD_LOCK.md关键信息如下POST /device/{mac}/field/lock Authorization: Bearer {API_TOKEN} Content-Type: application/json { fieldName: devName, lock: true }参数mac路径必填设备 MAC 地址如AA:BB:CC:DD:EE:FFfieldName请求体必填要锁定/解锁的字段名必须是上文受追踪字段之一lock请求体必填布尔值true锁定false解锁。响应示例成功200{success: true, message: Field devName locked, fieldName: devName, locked: true}400缺少fieldName或Field devInvalidField cannot be locked403Unauthorized404Device not found命令行示例锁定设备名curl -X POST https://your-netalertx.local/api/device/AA:BB:CC:DD:EE:FF/field/lock \ -H Authorization: Bearer your-api-token \ -H Content-Type: application/json \ -d { fieldName: devName, lock: true }解锁只需将lock改为false。API Token 的获取与鉴权方式参见 API.md。授权处理链路Authorization Handler插件通过自身配置的SET_ALWAYS/SET_EMPTY提供新值 → 权威字段更新处理器位于DeviceInstance检查{field}Source值 → 若为LOCKED或USER则拒绝更新 → 若为NEWDEV或插件名则接受更新。这与 UI 锁定按钮的行为完全一致保证了界面与 API 两条路径的数据一致性。相关文档速查DEVICE_FIELD_LOCK.md — 字段锁定/解锁的 UI 快速参考含常见错误表与更多场景DEVICE_SOURCE_FIELDS.md — 数据源字段与权威更新规则的详细说明API_DEVICE_FIELD_LOCK.md — 字段锁定 HTTP API 技术参考API_DEVICE.md — 设备通用 API 端点PLUGINS_DEV_CONFIG.md — 插件字段配置SET_ALWAYS/SET_EMPTY开发者参考NETWORK_TREE.md — 网络视图与网络设备类型配置DEVICES_BULK_EDITING.md — 设备批量编辑与 CSV 导入导出ICONS.md — 自定义设备图标赞分享后端网络运维数据可视化【免费下载链接】NetAlertXCentralized network visibility and continuous asset discovery. Monitor devices, detect change, and stay aware across distributed networks.项目地址https://gitcode.com/gh_mirrors/ne/NetAlertX点击查看免费下载相关推荐Formily React VoidField 组件完全指南用虚拟字段控制布局、显隐与交互状态Formily React VoidField 组件完全指南用虚拟字段控制布局、显隐与交互状态 导读 VoidField虚拟字段是 Formily 体系中前端UI组件终极指南Solaar设备配置完全解析与JSON结构详解终极指南Solaar设备配置完全解析与JSON结构详解 Solaar是一款功能强大的Linux设备管理器专门用于管理罗技Logitech无线键盘、鼠标和开发工具KeystoneJS 虚拟字段(Virtual Fields)完全指南KeystoneJS 虚拟字段 Virtual Fields 完全指南 引言 在内容管理系统 CMS 开发中我们经常需要处理计算字段、动态数据或复杂业务逻辑。后端上一篇imgui-node-editor API完全参考所有函数、配置与使用场景详解下一篇T-MAC 项目使用教程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。