尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Whosthere 守护进程模式详解:如何搭建局域网设备监控 HTTP API 并集成其他工具

Whosthere 守护进程模式详解:如何搭建局域网设备监控 HTTP API 并集成其他工具 Whosthere 守护进程模式详解如何搭建局域网设备监控 HTTP API 并集成其他工具【免费下载链接】whosthereLocal Area Network discovery tool with an interactive Terminal User Interface (TUI) written in Go. Discover, explore, and understand your LAN in an intuitive way. Knock Knock.. whos there? 项目地址: https://gitcode.com/gh_mirrors/wh/whosthereWhosthere 是一款用 Go 编写的局域网设备发现工具除了直观的 TUI 界面外它的**守护进程模式daemon mode**可以让 Whosthere 在后台持续扫描局域网并暴露一个简单的HTTP API方便你把局域网设备监控数据接入 Grafana、Home Assistant、Shell 脚本或自己的自动化系统中。这篇文章带你从零搭建这套设备监控 HTTP API并给出实用的集成思路。什么是 Whosthere 守护进程模式Whosthere 提供三种运行方式模式命令适用场景TUI 交互模式whosthere手动浏览局域网设备单次扫描 CLIwhosthere scan -t 5一次性获取设备列表守护进程模式whosthere daemon后台持续监控 HTTP API 集成守护进程模式的工作流程很简单启动后Whosthere 会并行运行 mDNS、SSDP 扫描器和 ARP 缓存扫描按配置周期默认 20 秒循环扫描子网把发现的设备合并进内存状态同时启动一个 HTTP 服务供外部查询。相关实现位于 internal/cmd/daemon.go扫描引擎的组装逻辑见 internal/core/engine_builder.go。 与 CLI 单次扫描不同守护进程会把多轮扫描结果累积合并同一 IP 的数据按 IP 地址归并记录首次/最近发现时间因此能提供更稳定的设备全景视图。启动守护进程一条命令搭建设备监控 HTTP API基本启动步骤whosthere daemon --port8080启动后的行为来自 internal/cmd/daemon.go未指定--port时默认使用8080端口HTTP 服务监听所有网卡0.0.0.0:端口发现引擎开始按scan_interval循环扫描事件驱动地更新设备状态。后台常驻运行在服务器上建议以后台方式运行并把日志输出到文件nohup whosthere daemon --port8080 /var/log/whosthere-daemon.log 21 非 TUI 模式下日志同时写入控制台和状态目录Linux/macOS 为~/.local/state/whosthere/app.log排查问题时可随时查阅。三个核心 API 端点与调用示例守护进程模式暴露的 HTTP API 非常精简一共 3 个端点方法端点说明GET/devices获取所有已发现的局域网设备列表JSON 数组GET/device/{ip}获取指定 IP 设备的详情JSON 对象GET/health健康检查返回OK1. 获取全部设备列表curl http://localhost:8080/devices返回按 IP 排序的 JSON 数组每个设备包含这些字段定义见 pkg/discovery/device.go字段含义ip设备 IPv4 地址macMAC 地址冒号分隔格式displayNamemDNS/SSDP 发现的可读名称manufacturer由 MAC 地址 OUI 前缀解析出的厂商sources数据来源如arp-cache、mdns、ssdpfirstSeen/lastSeen首次/最近发现时间extraData协议元数据如 SSDP 设备类型2. 查询单个设备详情curl http://localhost:8080/device/192.168.1.100IP 不存在时返回 404IP 格式非法返回 400。这个端点非常适合在脚本中做某台设备是否还在线的判断。3. 健康检查curl http://localhost:8080/health # 输出: OK适合接入监控系统的存活探测比如配合WHOSTHERE_LOGdebug环境变量调高日志级别时也能看到每次请求记录。调整扫描频率修改 YAML 配置文件守护进程完全复用 TUI 的配置体系配置文件默认位于~/.config/whosthere/config.yaml查找顺序和优先级见 README.md。对设备监控最相关的几项# 发现扫描频率默认 20s调小可更快发现新设备 scan_interval: 20s # 单轮扫描超时建议小于扫描间隔 scan_timeout: 10s scanners: mdns: { enabled: true } # mDNS 广播发现 ssdp: { enabled: true } # SSDP 设备发现电视、NAS 等 arp: { enabled: true } # ARP 缓存扫描 sweeper: enabled: true # 子网 sweep触发 ARP 解析以发现沉默设备 interval: 5m # 每隔 5 分钟做一次全子网 sweep timeout: 20s如果只想盯着特定网段可以用target_subnets指定多个 CIDR避免无谓流量也可以通过环境变量WHOSTHERE__SCAN_INTERVAL30s这类方式在不改文件的情况下覆盖任意配置项。把设备数据集成到其他工具有了 HTTP API集成就变得非常直接 方案一Shell 脚本 cron 定时巡检curl -s http://localhost:8080/devices | jq -r .[] | \(.ip) \(.manufacturer) \(.lastSeen)配合 cron 每 5 分钟执行一次与上次结果做 diff就能实现新设备上线告警。 方案二接入 Home Assistant在 HA 中通过rest传感器周期性请求/devices端点即可在家庭仪表盘上展示局域网设备数量与在线状态。 方案三喂给 Grafana / InfluxDB写一个轻量采集任务定时拉取/devices并写入时序库再绘制设备在线数、firstSeen新增设备趋势等面板。/health端点可以直接作为采集任务的存活探测。⚙️ 方案四作为其他自动化工具的数据源任何支持 HTTP 请求的工具n8n、node-red、Ansibleuri模块等都可以把http://主机:8080/devices当作局域网设备清单的数据源实现按厂商、按网段过滤后触发后续动作。使用注意事项仅限授权网络Whosthere 只应在自己拥有权限的网络如家庭网络上使用扫描第三方网络可能违反法律。数据为内存态设备列表保存在守护进程内存中进程重启后从零开始积累别名等元数据有本地 bbolt 缓存见 internal/core/devicemeta/。端口安全HTTP API 监听所有网卡且无鉴权公网主机上请自行用防火墙限制 8080 端口或仅在内网使用。大网段谨慎对大于 /16 的网段启用scan_large_subnets会产生 65535 IP 的流量家庭网络一般无需开启。总结Whosthere 守护进程模式用一个极简的设计一个命令 3 个端点解决了如何把局域网设备监控数据暴露给其他工具的问题whosthere daemon --port8080启动后台持续扫描通过/devices、/device/{ip}、/health三个端点以 JSON 获取设备数据用 YAML 配置调整扫描节奏与扫描器组合自由集成到脚本、cron、Home Assistant、Grafana 等生态中。从手动敲门问是谁到 7×24 小时自动化设备监控只需一条命令的距离。【免费下载链接】whosthereLocal Area Network discovery tool with an interactive Terminal User Interface (TUI) written in Go. Discover, explore, and understand your LAN in an intuitive way. Knock Knock.. whos there? 项目地址: https://gitcode.com/gh_mirrors/wh/whosthere创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表