在 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 生態提供了網絡設備控制台的標準接入能力。