Whosthere 配置完全指南:YAML、环境变量与命令行参数优先级详解

发布时间:2026/10/4 5:13:19
Whosthere 配置完全指南:YAML、环境变量与命令行参数优先级详解 Whosthere 配置完全指南YAML、环境变量与命令行参数优先级详解【免费下载链接】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 编写的局域网发现工具它通过 mDNS、SSDP 和 ARP 扫描识别你的内网设备并提供直观的 TUI 界面。本文详解 Whosthere 配置的三种方式——YAML 配置文件、环境变量与命令行参数——以及它们的优先级顺序帮助你快速完成网络扫描配置。 四重配置通道一张图看懂优先级Whosthere 允许同一个配置项来自四个不同的来源。当多个来源同时设置同一个值时按以下优先级从高到低生效配置加载逻辑见 load.go优先级配置方式适用场景1命令行参数Flags一次性临时覆盖如whosthere --timeout5s2环境变量WHOSTHERE__前缀容器/脚本中注入配置3YAML 配置文件日常持久化配置4内置默认值什么都不配时的兜底源码在 config.go记住一个原则越临时的方式优先级越高方便你随时临时改写而不污染配置文件。 配置文件放在哪里Whosthere 按以下顺序查找 YAML 配置文件找到第一个即生效解析逻辑在 loader.go--config参数或WHOSTHERE_CONFIG环境变量指定的路径$XDG_CONFIG_HOME/whosthere/config.yaml如果设置了XDG_CONFIG_HOME~/.config/whosthere/config.yamlLinux/macOS 默认位置Windows 为%APPDATA%/whosthere见 xdg.go 贴心设计首次运行 TUI 时如果配置文件不存在会自动生成一份带注释的默认配置loader.go你直接打开改就行不用手写。⚙️ YAML 配置文件核心字段速查自动生成后的config.yaml每一项都有注释常用字段如下配置项默认值作用network_interface系统默认接口指定扫描网卡如eth0、en0all_interfacesfalse同时展示所有网卡上的设备target_subnets自动探测接口子网手动指定要扫的 IPv4 CIDR 子网scan_interval20s周期性发现扫描的间隔scan_timeout10s单次扫描超时建议小于间隔scanners.mdns/ssdp/arp.enabled均开启三个发现器的开关至少要留一个sweeper.enabledtrue子网 sweeping 探测触发 ARP 解析的主力port_scanner.tcp28 个常见端口对发现的设备做 TCP 端口扫描splash.enabled/delaytrue/1sTUI 启动画面的开关与时长theme.namedefaultTUI 主题可设custom自定义颜色⚠️ 配置不是写了就生效加载后会经过校验与归一化非法的target_subnetsCIDR、不存在的网卡名、全关扫描器等都会被纠正或报错config.go。 环境变量配置法双下划线即嵌套任何 YAML 里能写的配置项都能用环境变量设置规则很简单实现见 env.go统一前缀WHOSTHERE__注意双下划线嵌套层级用__分隔键名不区分大小写常用示例# 禁用启动画面等价于 splash.enabled: false export WHOSTHERE__SPLASH__ENABLEDfalse # 指定扫描主题等价于 theme.name: cyberpunk export WHOSTHERE__THEME__NAMEcyberpunk # 只扫两个子网等价于 target_subnets 列表 export WHOSTHERE__TARGET_SUBNETS10.0.0.0/24,10.0.1.0/24 # 关闭 mDNS 扫描器 export WHOSTHERE__SCANNERS__MDNS__ENABLEDfalse # 自定义端口扫描列表 export WHOSTHERE__PORT_SCANNER__TCP80,443,8080另有三个通用环境变量与具体配置项无关变量说明WHOSTHERE_CONFIG覆盖配置文件路径与--config同效WHOSTHERE_LOG日志级别debug/info/warn/errorNO_COLOR完全关闭 TUI 的 ANSI 彩色输出 命令行参数速查表所有全局参数注册在 settings.go运行whosthere --help可随时查看。最常用的参数参数短选项对应配置项示例--config-c配置文件路径--config/etc/whosthere.yaml--interface-inetwork_interface--interfaceen0--interval-nscan_interval--interval30s--timeout-tscan_timeout--timeout10s--mdns/--ssdp/--arp-m-s-a对应扫描器开关--mdnsfalse--sweeper-Ssweeper.enabled--sweeperfalse--sweeper-interval/--sweeper-timeout-W/-Tsweeper 周期/超时--sweeper-interval5m--all-interfaces—all_interfaces--all-interfaces--target-subnets—target_subnets--target-subnets10.0.0.0/24注意并非每项配置都有对应参数——scan_large_subnets、port_scanner.*、splash.*、theme.*只支持 YAML 与环境变量命令行里找不到它们。 一个容易踩的坑scan 子命令不读 YAML这是阅读 load.go 才能发现的行为差异TUI 模式直接运行whosthere完整走YAML 环境变量 参数三层合并CLI 模式whosthere scan跳过 YAML 配置文件只使用环境变量和命令行参数 默认值。所以whosthere scan -t 5的表现与你在config.yaml里写的sweeper.interval等无关。想让 CLI 单次扫描也生效请把值写进环境变量或参数whosthere scan --timeout5s --sweeperfalse whosthere scan --timeout5s --json --pretty devices.json 验证配置是否生效先跑whosthere --help确认参数名拼写正确设置WHOSTHERE_LOGdebug开启调试日志查看日志文件TUI 模式下日志只写文件Linux/macOS~/.local/state/whosthere/app.logWindows%LOCALAPPDATA%/whosthere/app.log非 TUI 模式如scan、daemon的日志会同时输出到控制台排查更方便。小结需求推荐做法长期个性化主题、端口、扫描节奏编辑~/.config/whosthere/config.yaml脚本、CI、容器里注入WHOSTHERE__前缀环境变量临时调试、一次性覆盖命令行参数指定多个配置文件环境--config或WHOSTHERE_CONFIG掌握参数 环境变量 YAML 默认值这条主线再注意scan子命令跳过 YAML 的特性你就完全掌控了 Whosthere 的全部配置行为可以放心去敲敲门看看局域网里都有谁 。【免费下载链接】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),仅供参考