news 2026/10/9 17:05:09

Scanopy 服务定义完全手册:轻松添加200+服务类型

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Scanopy 服务定义完全手册:轻松添加200+服务类型

Scanopy 服务定义完全手册:轻松添加200+服务类型

【免费下载链接】scanopyNetwork diagrams that update themselves项目地址: https://gitcode.com/gh_mirrors/ne/scanopy

Scanopy 是一款"能自己更新的"开源网络拓扑工具,而让它真正聪明的,正是内置的200+ 服务定义(Service Definitions)。网络扫描器跑完一遍之后,Scanopy 能自动认出你的网段里藏着 Postgres、Grafana、Home Assistant 还是 UniFi 交换机——这一切都靠一个个小巧的"服务定义"驱动。无论你是想搞懂它如何识别服务,还是想亲手添加第一个新服务,这份手册都能帮你在 10 分钟内上手。

服务定义是什么?为什么重要

一次网络扫描只会得到一堆"某 IP 的某端口开着"这样的原始信息。把原始信息变成"这是一台 Elasticsearch",靠的就是服务定义:每份定义告诉 Scanopy 三件事:

  • 它叫什么:名称、描述、图标;
  • 它属于哪类:监控、数据库、媒体服务器、虚拟化……决定它在拓扑图里怎么分组;
  • 怎么认出它:一组"发现模式"(端口、HTTP 端点内容、MAC 厂商等)。

定义命中之后,服务会自动挂到对应主机上,进入你看到的四种视图。下图就是扫描结果生成的工作负载视图,每一个带图标的方块都是被服务定义成功识别出来的:

内置 272 份服务定义,覆盖几乎所有场景

所有定义集中存放在 backend/src/server/services/definitions/ 目录,目前包含272 个服务定义文件,从网络基础设施到智能家居一应俱全:

类别你会遇到的服务定义文件示例
监控与日志Prometheus、Grafana、Zabbix、Lokiprometheus.rs
数据库MySQL、PostgreSQL、Redis、MongoDBpostgresql.rs
媒体服务器Plex、Jellyfin、Emby、Sonarrplex.rs
虚拟化与容器Proxmox、ESXi、Kubernetes、Dockerkubernetes.rs
家庭自动化Home Assistant、OpenHAB、Zigbee2MQTThome_assistant.rs
IoT 与终端摄像头、智能音箱、打印机、工业 PLCcamera.rs

完整分类可以在 mod.rs 中按章节浏览——文件本身就是最好的目录。

自动识别是怎么做到的:读懂"发现模式"

每份定义的核心是discovery_pattern(),它描述"满足什么条件就认为是这个服务"。常见模式有这几类(完整说明见 contributing.md):

  • 端点模式(Endpoint)⭐ 首选:访问某个 HTTP 路径,检查响应里是否出现服务名。信号最强、误报最少,比如 Plex 定义就是查32400端口/web/index.html里是否包含 "Plex" 字样,见 plex.rs;
  • 端口模式(Port):只认固定端口,适合没有可探测端点的服务(如 Redis 认 6379);
  • 逻辑组合(AnyOf / AllOf / Not):多个条件"或/且/非"组合,能显著提升准确性;
  • 特殊模式:IsGateway(是网关)、MacVendor(MAC 地址厂商,如 Eero)、SubnetIsType(子网类型)、None(仅手动识别)。

💡 一个实用技巧:想知道某个服务的识别逻辑,直接查 ui/static/services.json——所有 268+ 个定义都以人类可读的语言导出了发现模式,例如 Sonarr 的描述就是"响应体包含 Sonarr 字样的 8989 端口请求即命中"。

后端则通过 ServiceDefinitionRegistry 统一注册和查找这些定义,扫描时逐条比对、命中即识别。

三步添加一个新服务定义

添加服务定义是 Scanopy 官方推荐的首个贡献,不需要深入理解整个代码库。

第 1 步:新建定义文件在 definitions/ 下创建your_service.rs,核心就是实现ServiceDefinitiontrait:

fn discovery_pattern(&self) -> Pattern<'_> { Pattern::Endpoint( PortBase::HttpAlt, // 服务监听的端口 "/api/health", // 探测路径 "your_service_name" // 响应中需包含的关键词 ) }

同时声明名称、描述和所属类别。类别清单定义在 categories.rs,从Monitoring、Database到IoT、Industrial共 40 余种,选最贴近的一个即可。

第 2 步:在注册表中登记在 mod.rs 对应分类下加一行pub mod your_service;,文件末尾加上inventory::submit!注册宏——服务即可被自动发现,无需改动任何扫描器代码。

第 3 步:本地验证用make dev-server启动后端确认编译通过;如果网络里真实运行着该服务,跑一次发现扫描,确认它被正确识别、图标正常显示,然后按 contributing.md 的 PR 模板提交(一次 PR 只加一个服务)。

写在最后

服务定义看似只是"认名字",却是 Scanopy 从"端口扫描工具"进化为"活的网络文档"的关键——272 份定义覆盖了从工业 PLC 到智能音箱的广阔世界,而它依然欢迎社区补充:每添加一个定义,所有用户的下一次扫描都会变得更聪明一点。📈

如果你的网段里总有一台设备显示为"未知服务",去 contributing.md 看看,为它写一份定义,就是最简单的开源参与方式。

【免费下载链接】scanopyNetwork diagrams that update themselves项目地址: https://gitcode.com/gh_mirrors/ne/scanopy

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/9 17:04:39

热成像人物检测数据集:面向边缘部署的夜间鲁棒目标检测基准

简介&#xff1a;本资源是面向计算机视觉开发者与AI研究者的热成像人物检测专用数据集&#xff0c;聚焦低光、夜间及复杂环境下的目标检测与实例分割任务&#xff0c;特别适配YOLO系列模型训练与红外安防系统研发。数据集共606张热成像与对比视觉图像&#xff0c;配套606个YOLO…

作者头像 李华
网站建设 2026/10/9 17:01:52

PaddleDetection人脸检测与情绪识别模型推理实践指南

简介&#xff1a;面向计算机视觉开发者与研究者&#xff0c;该模型包基于百度飞桨PaddleDetection库构建&#xff0c;覆盖人脸检测与情绪识别两大任务&#xff0c;支持多种检测算法在复杂背景中快速定位人脸&#xff0c;并能基于经典卷积网络识别快乐、悲伤、愤怒、惊讶、恐惧、…

作者头像 李华
网站建设 2026/10/9 16:58:14

Python地图绘制实战:Cartopy从入门到精通

1. 为什么我劝你用Python画地图&#xff0c;而不是打开绘图软件很多人第一次接触地图绘制&#xff0c;脑子里蹦出来的工具是各种在线地图编辑器或者桌面端绘图软件。拖拖拽拽&#xff0c;点几下鼠标&#xff0c;一张图就出来了&#xff0c;看起来门槛极低。但只要你真正做过几个…

作者头像 李华
网站建设 2026/10/9 16:57:24

AI视频打斗戏总是翻车?6条提示词规则将崩溃率从八成压到两成

说个扎心的事实&#xff1a;2026年了&#xff0c;各家AI视频模型连几分钟的连续镜头都能生成了&#xff0c;但打斗戏依然是翻车重灾区。角色原地抽搐、俩人隔空互殴、一拳打出去半个人没了&#xff0c;这类事故我见得太多。我自己用可灵、Vidu、Seedance、Runway这几个主流工具…

作者头像 李华
网站建设 2026/10/9 16:54:35

csv文件编辑器中文版:从编码探测到流式解析的工程实践

简介&#xff1a;CSV文件编辑器&#xff08;中文版&#xff09;是一款面向中文用户、专为查看与编辑CSV数据而设计的轻量工具&#xff0c;适合需要处理联系人导出、应用数据迁移或跨平台表格交换的普通用户与办公人群。它针对中文环境优化&#xff0c;可避免Excel打开CSV时常见…

作者头像 李华