尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
如何扩展 Scanopy:自定义服务发现与插件开发完整指南
如何扩展 Scanopy自定义服务发现与插件开发完整指南【免费下载链接】scanopyNetwork diagrams that update themselves项目地址: https://gitcode.com/gh_mirrors/ne/scanopyScanopy 是一款自动网络拓扑发现工具能定时扫描你的网络并生成持续更新的网络文档。当默认的 230 多种服务定义无法覆盖你环境中的设备时你可以通过扩展 Scanopy 来实现自定义服务发现从最轻量的“服务定义插件”新增一个被识别的服务到更深层的“发现集成插件”接入 Docker、SNMP、UniFi 之外的新数据源。本文带你分两步走通这两条插件开发路径。一、扩展前先了解Scanopy 的服务发现架构Scanopy 采用「服务端 守护进程」的双组件架构二者的扩展点不同组件位置职责服务端backend/src/server/服务定义注册、扫描结果的存储与拓扑计算守护进程backend/src/daemon/discovery/真正执行网络扫描、端口探测与集成采集好消息是绝大多数“扩展需求”识别一个新服务、新设备都只需要改服务端的服务定义一行注册即可生效无需编译守护进程、无需写复杂的网络代码。只有当你需要接入全新协议的数据源比如某个厂商的管理 API才需要开发第二层——发现集成。二、插件路径一添加自定义服务定义推荐新手服务定义是官方推荐的第一个贡献方向位于 contributing.md 的 “Adding Service Definitions” 章节也是社区贡献最集中的地方。2.1 第一步创建服务定义文件服务定义集中存放于backend/src/server/services/definitions/目录该目录下已有 257 个现成定义如home_assistant.rs、plex.rs可作模板。新建一个以你的服务命名的文件例如myapp.rs核心是四件事命名、分类、声明“怎么发现它”最后注册#[derive(Default, Clone, Eq, PartialEq, Hash)] pub struct MyApp; impl ServiceDefinition for MyApp { fn name(self) - static str { MyApp } fn description(self) - static str { My custom app } fn category(self) - ServiceCategory { ServiceCategory::Web } fn discovery_pattern(self) - Pattern_ { Pattern::Endpoint(PortBase::Http, /health, MyApp) } } // 这一行宏让服务进入自动发现注册表 inventory::submit!(ServiceDefinitionFactory::new(create_service::MyApp));随后在backend/src/server/services/definitions/mod.rs中登记pub mod myapp;就完成了整个插件开发。2.2 挑选合适的发现模式discovery_pattern决定识别精度官方支持的组合方式如下Endpoint首选探测某 HTTP 路径并检查响应内容信号最强适合有 Web 界面的服务Port仅按端口匹配适合无 Web 接口的服务如数据库、缓存自定义端口用PortBase::new_tcp(6379)这类写法AnyOf / AllOf / Not逻辑组合多个条件避免误报例如“某端口开放且页面含服务名”特殊模式IsGateway主机是网关、MacVendor按 MAC 厂商识别设备、SubnetIsType限定子网类型可用来精确锁定物理设备。 经验之谈短服务名容易误匹配如 “Plex” 会出现在单词 “Complex” 中建议 Endpoint 匹配用特征短语再叠加一个端口条件保险。2.3 可选增强图标与分类定义中还可通过dashboard_icons_path/logo_url为服务配图标is_generic标记通用型服务。如果现有分类不合适分类枚举在backend/src/server/services/types/categories.rs中可扩展。三、插件路径二开发新的发现集成进阶当你要让 Scanopy 从新协议源不只是端口扫描拉取数据——例如像 Docker、Podman、SNMP、UniFi 那样的集成——需要实现DiscoveryIntegrationtrait其源码位于backend/src/daemon/discovery/integration/mod.rs。所有集成遵循统一的三段式流程见该文件头部注释probe()—— 用给定凭据探测目标是否响应成功结果还会反哺服务匹配凭据匹配—— 管线按凭据映射自动分发编排器中没有任何集成专属代码execute()—— 采集数据丰富主机信息或创建新实体。你要实现的核心方法只有四个credential_type()声明处理哪种凭据类型凭据类型定义在backend/src/daemon/discovery/credentials.rsestimated_seconds()/timeout()供进度估算与超时控制probe()与execute()实际的探测与采集逻辑。调度逻辑由backend/src/daemon/discovery/integration/dispatch.rs统一处理对每个 IP 逐一尝试凭据失败会被自动分类并转化为扫描警告凭据问题会在 UI 中清晰呈现。参考实现可直接研读integration/snmp/SNMP 会话、OID 查询拆分清晰或integration/docker/目录。四、搭建开发环境并验证你的插件开发环境搭建指南在 contributing.md 中要点如下克隆仓库git clone https://gitcode.com/gh_mirrors/ne/netvisor安装依赖Linux 执行make install-dev-linuxmacOS 执行make install-dev-mac需 Rust、Node.js 20、PostgreSQL 17初始化数据库make setup-db启动本地开发环境热重载make dev-server # 终端 1服务端 make dev-ui # 终端 2前端界面 make dev-daemon # 终端 3守护进程集成插件才需要触发一次网络扫描后在 UI 的服务列表与拓扑视图中确认你的新服务出现即代表自定义服务发现生效。若贡献给社区记得按贡献指南补充测试并提交。五、小结两种扩展方式怎么选想让 Scanopy 认出某个服务/设备→ 写一个服务定义文件第二节改动小、见效快是新手第一插件的最佳起点想让 Scanopy 对接新的数据源协议→ 实现DiscoveryIntegrationtrait第三节深入守护进程扫描管线。无论是哪种路径Scanopy 的注册表机制inventory宏 trait 分发都保证了新插件“放入即生效”无需改动核心编排代码。输出文章【免费下载链接】scanopyNetwork diagrams that update themselves项目地址: https://gitcode.com/gh_mirrors/ne/scanopy创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

WechatHook微信自动化完整指南:一文搞懂微信机器人5大核心玩法

WechatHook微信自动化完整指南:一文搞懂微信机器人5大核心玩法

WechatHook微信自动化完整指南:一文搞懂微信机器人5大核心玩法 【免费下载链接】WechatHook Enjoy hooking wechat by Xposed....Accessibility...and so on... 项目地址: https://gitcode.com/gh_mirrors/we/WechatHook 人在忙碌时,好友的"…

📅 2026/10/26 15:07:45
Windows 11 LTSC 微软商店安装完整指南:5 步找回完整应用生态

Windows 11 LTSC 微软商店安装完整指南:5 步找回完整应用生态

Windows 11 LTSC 微软商店安装完整指南:5 步找回完整应用生态 【免费下载链接】LTSC-Add-MicrosoftStore Add Windows Store to Windows 11 24H2 LTSC 项目地址: https://gitcode.com/gh_mirrors/ltscad/LTSC-Add-MicrosoftStore 想在 Windows 11 LTSC 上安装…

📅 2026/10/26 15:08:05
Awoo Installer 安装使用指南:3 种通道把 NSP、NSZ、XCI、XCZ 一次装进 Switch

Awoo Installer 安装使用指南:3 种通道把 NSP、NSZ、XCI、XCZ 一次装进 Switch

Awoo Installer 安装使用指南:3 种通道把 NSP、NSZ、XCI、XCZ 一次装进 Switch 【免费下载链接】Awoo-Installer A No-Bullshit NSP, NSZ, XCI, and XCZ Installer for Nintendo Switch 项目地址: https://gitcode.com/gh_mirrors/aw/Awoo-Installer 游戏文件…

📅 2026/10/6 6:23:53
MORE NEWS

更多资讯

📰

修仙类QQ机器人运营模式与技术架构对比分析

1. 修仙类QQ机器人运营模式概述 在QQ社群生态中,修仙题材机器人已经成为垂直领域的重要工具。这类机器人通常以文字互动游戏为核心,通过模拟修仙小说中的境界突破、功法修炼、门派争斗等元素,为社群用户提供沉浸式体验。目前市场上主要存在两…

📰

焊接数值模拟中热源路径规划与FLUENT仿真优化

1. 焊接数值模拟中的热源路径规划挑战焊接数值模拟领域有个特别有意思的现象:当热源沿直线移动时,熔池形态和温度场分布往往能获得不错的仿真精度。可一旦遇到圆弧轨迹,整个模拟结果就开始变得"任性"起来。去年我在模拟一个环形焊缝…

📰

DeepSeek Harness桌面版发布:开箱即用的AI工作台与插件体系解析

1. 桌面端AI工作台到底解决了谁的痛点第一次看到"DeepSeek Harness桌面版正式发布,开箱即用"这个消息,我脑子里冒出来的第一个念头不是"又一个套壳客户端",而是"终于有人把命令行那套东西搬到图形界面了"。过去…

📰

Linux下Redis安装配置与性能优化实战指南

1. Linux环境下Redis的安装与启动全指南Redis作为当下最流行的内存数据库之一,在Linux服务器上的部署是每个开发者必备的基础技能。我在过去五年里为数十家企业部署过Redis集群,发现80%的初级开发者遇到的启动问题其实都源于几个常见的配置误区。本文将带…

📰

Agent定时任务总跑偏?触发与补跑规则设计实战

1. 定时任务跑偏的根因拆解1.1 为什么 Agent 场景下的定时任务格外容易失控做过传统后端定时任务的人,第一次把定时逻辑搬到 Agent 上,大概率会经历一次“信心崩塌”。传统 Cron 任务面对的是一个确定性系统:到点执行、执行完写库、失败重试&…

📰

Python频次统计与多关键字排序:数字次数排序题详解

1. 题目还原:这道“数字次数排序”到底让你干什么第一次看到“数字次数排序”这个题目名,很多人会以为是要把数字本身排个序,结果一读题面才发现压根不是这么回事——它要排的是“数字出现的次数”。这个差别看起来很小,但直接决定…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬