在 DSH 智能体开发中,网络设备的控制台交互往往依赖外部工具。对于使用串口服务器或终端服务器映射网络设备 Console 的情况,通用的方案通常缺乏细粒度的会话管理与指令拦截能力。dsh-console-hub 插件旨在解决这一痛点,提供经 Telnet 或 Raw TCP 连接设备控制台的能力,并支持会话管理、命令交互及高危指令审批。
这是一个面向网络设备 console 映射端口的 DSH 插件。它通过 Telnet 或 Raw TCP 协议连接设备控制台,提供会话管理、设备配置增删改查、命令交互以及分页自动处理等功能。
核心功能¶
- 连接与会话管理:经 Telnet 或 Raw TCP 连接设备控制台,提供会话管理(连接、发送、读取、唤醒、关闭)。
- 设备配置管理:提供设备配置管理(增删改查)。
- 分页自动处理:支持分页自动处理(auto-more / auto-quit / auto-interrupt / manual)。
- 指令拦截与审批:支持高危指令拦截与审批机制。
- 休眠检测与唤醒:支持会话休眠检测与自动唤醒。
安装与启用¶
安装该插件需要先满足前提条件(Node.js、Harness 版本及 dsh-better-sidebar)。安装完成后重启 Harness。
dsh plugin --profile web add github:RBkreb/dsh-console-hub
典型用法¶
插件注册了 console_* 系列工具。核心流程是先通过 console_upsert_view 配置设备清单,再使用 console_connect 连接设备,随后通过 console_send 发送文本命令,利用 console_wait_for 等待设备提示符或模式。
配置设备清单的示例:
# 配置设备清单
console_upsert_view:
viewId: "router-01"
name: "Core Router"
host: "192.168.1.1"
port: 23
kind: "telnet"
password: "secret"
配置项¶
配置项主要分为连接与读取、分页与休眠、拦截与模型三类。
连接与读取¶
trustedHosts:非回环部署被访问的host:port(或仅host);未声明拒绝所有请求。defaultKind:默认连接类型,支持'telnet'或'raw'。defaultEncoding:默认编码,支持utf-8/gbk/gb18030/big5/shift_jis/euc-kr/latin1。connectTimeoutMs:socket 连接预算,默认 8000ms。readTimeoutMs:单次 read 等待新字节的时长,默认 15000ms。idleTimeoutMs:空闲控制台回收时长,默认 600000ms(10分钟)。
分页与休眠¶
pagingMode:缺省分页反应,可选auto-more/auto-quit/auto-interrupt/manual。dormantAutoWake:检测到半关闭标记时自动唤醒,默认 true。wakeOnConnect:连接自动输入回车,默认 true。
拦截与模型¶
approvalMode:拦截模式,可选always(每条提问)或high-risk(仅未命中规则放行)。fenceRules:高危拦截规则数组,支持deny(直接拒绝)、ask(人工确认)、allow(放行)动作。
限制与安全¶
- 协议限制:仅支持 Telnet / Raw TCP,不支持 SSH 或串口直连。
- 依赖正则:提示符、分页、休眠识别依赖正则,部分 CLI 需要调整。
- 会话隔离:控制台池全宿主共享,无会话隔离。
- 安全建议:高危拦截是防护栏不是沙箱,建议同时在设备侧限制权限。
- 权限范围:对已配置设备发起出站 TCP;不执行 shell;无 PTY。
适用场景与注意¶
适用于使用串口服务器映射网络设备的场景。使用前应检查源码与许可证(MIT)。安装前应检查 Node.js 版本(>=22.19.0)及 Harness 版本依赖。
该项目由 RBkreb 维护,为 DSH 生态提供了网络设备控制台的标准接入能力。