dsh-ensp 0.1.2 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +183 -274
- package/docs/plugin-detail.en.md +14 -0
- package/docs/plugin-detail.zh.md +14 -0
- package/package.json +5 -3
- package/screenshots.json +3 -0
package/README.md
CHANGED
|
@@ -1,274 +1,183 @@
|
|
|
1
|
-
<p align="center">
|
|
2
|
-
<strong>中文</strong>
|
|
3
|
-
</p>
|
|
4
|
-
|
|
5
|
-
<p align="center">
|
|
6
|
-
<a href="https://www.npmjs.com/package/dsh-ensp"><img alt="npm" src="https://img.shields.io/npm/v/dsh-ensp?style=flat-square&color=6c5ce7"></a>
|
|
7
|
-
<a href="https://www.npmjs.com/package/dsh-ensp"><img alt="npm downloads" src="https://img.shields.io/npm/dm/dsh-ensp?style=flat-square&color=4b6fff"></a>
|
|
8
|
-
<a href="https://github.com/lizi600jin/dsh-ensp/stargazers"><img alt="GitHub stars" src="https://img.shields.io/github/stars/lizi600jin/dsh-ensp?style=flat-square&color=eab308"></a>
|
|
9
|
-
<a href="LICENSE"><img alt="license" src="https://img.shields.io/badge/license-GPL--3.0--or--later-blue?style=flat-square"></a>
|
|
10
|
-
</p>
|
|
11
|
-
|
|
12
|
-
# dsh-ensp
|
|
13
|
-
|
|
14
|
-
面向华为 eNSP
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
- CLI
|
|
19
|
-
- MCP Server
|
|
20
|
-
- DeepSeek Harness
|
|
21
|
-
|
|
22
|
-
##
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
ensp
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
# 3. 查看设备状态
|
|
186
|
-
ensp status --topology lab.topo
|
|
187
|
-
|
|
188
|
-
# 4. 下发配置
|
|
189
|
-
ensp apply ./configs --topology lab.topo --save
|
|
190
|
-
```
|
|
191
|
-
|
|
192
|
-
## 实现说明
|
|
193
|
-
|
|
194
|
-
以下问题在开发过程中实际出现过,记录于此以便后续维护。
|
|
195
|
-
|
|
196
|
-
### DPI 缩放会破坏坐标一致性
|
|
197
|
-
|
|
198
|
-
在 150% 缩放下,同一个窗口存在两套坐标:
|
|
199
|
-
|
|
200
|
-
| 调用方式 | 坐标系 | 同一窗口的取值 |
|
|
201
|
-
|---|---|---|
|
|
202
|
-
| 未声明 DPI 感知的 `GetWindowRect` | 逻辑坐标(已缩放) | 213,133,尺寸 1280×800 |
|
|
203
|
-
| 调用 `SetProcessDPIAware()` 之后 | 物理坐标 | 320,200,尺寸 1920×1200 |
|
|
204
|
-
| `CopyFromScreen` | 始终为物理像素 | 图像尺寸 1920×1200 |
|
|
205
|
-
|
|
206
|
-
混用会导致每次点击偏移 1.5 倍,表现为“点击无反应”。本项目全程使用物理坐标,且 `SetProcessDPIAware()` 必须在所有测量之前调用。
|
|
207
|
-
|
|
208
|
-
### `<interface>` 分组必须与 eNSP 一致
|
|
209
|
-
|
|
210
|
-
AR2220 的接口需要声明为两组:
|
|
211
|
-
|
|
212
|
-
```xml
|
|
213
|
-
<interface sztype="Ethernet" interfacename="GE" count="1" /> <!-- GE0/0/0 -->
|
|
214
|
-
<interface sztype="Ethernet" interfacename="GE" count="2" /> <!-- GE0/0/1~2 -->
|
|
215
|
-
```
|
|
216
|
-
|
|
217
|
-
若合并为一个 `count="3"`,eNSP 打开后画布为空,且不产生任何错误提示。
|
|
218
|
-
|
|
219
|
-
### PC 的接口名在文件与命令行中不一致
|
|
220
|
-
|
|
221
|
-
拓扑文件中写作 `interfacename="GE"`,命令行中对应 `Ethernet0/0/1`。
|
|
222
|
-
|
|
223
|
-
### 正则单词边界对 `GigabitEthernet0` 不成立
|
|
224
|
-
|
|
225
|
-
`GigabitEthernet` 与紧随的 `0` 均为单词字符,两者之间不存在单词边界,`\b` 断言因此失败且不报错,进而导致主机名解析错误和视图判断错误。
|
|
226
|
-
|
|
227
|
-
### 视图切换存在竞态
|
|
228
|
-
|
|
229
|
-
执行 `interface GigabitEthernet0/0/2` 后立即发送下一条命令时,设备可能尚未完成视图切换,该命令会被丢弃。需要等该命令本身回显之后,才能确认切换完成。
|
|
230
|
-
|
|
231
|
-
## 致谢与许可
|
|
232
|
-
|
|
233
|
-
### 开源协议
|
|
234
|
-
|
|
235
|
-
本项目采用 [GPL-3.0-or-later](LICENSE),即 GNU General Public License 第 3 版或更新版本。
|
|
236
|
-
|
|
237
|
-
该协议与发布者的意愿对应如下:
|
|
238
|
-
|
|
239
|
-
| 期望 | GPL-3.0 的对应条款 |
|
|
240
|
-
|---|---|
|
|
241
|
-
| 允许任何人修改 | 第 2 条,可自由修改与分发 |
|
|
242
|
-
| 二次分发时注明原作者 | 第 5 条要求保留版权声明;本项目另依据第 7(b) 条增加署名要求 |
|
|
243
|
-
| 二次修改的作品同样开源 | 第 5 条,衍生作品须以同一协议发布 |
|
|
244
|
-
|
|
245
|
-
基于本项目修改并对外分发时,需要做到三点:
|
|
246
|
-
|
|
247
|
-
1. 保留 `LICENSE` 中的版权声明。
|
|
248
|
-
2. 在源码及随附文档中注明原项目名称 `dsh-ensp` 与仓库地址 <https://github.com/lizi600jin/dsh-ensp>。
|
|
249
|
-
3. 使所分发的作品同样以 GPL-3.0-or-later 授权。
|
|
250
|
-
|
|
251
|
-
仅自行使用而不对外分发时,上述要求不适用。
|
|
252
|
-
|
|
253
|
-
未选用 MIT 或 Apache-2.0 的原因在于,这两者允许二次修改后闭源,与“二次修改也须开源”的意愿冲突。
|
|
254
|
-
|
|
255
|
-
### 致谢
|
|
256
|
-
|
|
257
|
-
- Huawei eNSP:仿真器本体。本项目的格式规则均来自对其自带 40 个样例拓扑的分析。
|
|
258
|
-
- dsh-ops:本 README 的组织方式参考了该项目。
|
|
259
|
-
- 在 issue 中反馈问题的使用者。
|
|
260
|
-
|
|
261
|
-
## 免责声明
|
|
262
|
-
|
|
263
|
-
本项目是一个自动化外壳,不包含 eNSP,也不包含任何华为软件或镜像。使用前请自行安装,并遵守华为的软件许可。
|
|
264
|
-
|
|
265
|
-
自动化操作图形界面存在固有风险,例如窗口被遮挡、eNSP 版本升级、系统缩放变化。插件在检测到异常时会明确报错,但仍建议先在非关键环境中验证。
|
|
266
|
-
|
|
267
|
-
## 相关文档
|
|
268
|
-
|
|
269
|
-
| 文档 | 内容 |
|
|
270
|
-
|---|---|
|
|
271
|
-
| [`docs/ENSP-FORMAT.md`](docs/ENSP-FORMAT.md) | `.topo` 格式的完整规则,基于 40 个样例统计得出 |
|
|
272
|
-
| [`docs/UI-ANCHORS.md`](docs/UI-ANCHORS.md) | 界面坐标、DPI 处理与启动流程 |
|
|
273
|
-
| [`docs/SCENARIOS.md`](docs/SCENARIOS.md) | 23 个场景预设的详细说明 |
|
|
274
|
-
| [`scripts/survey-topologies.mjs`](scripts/survey-topologies.mjs) | 重新统计样例格式,供 eNSP 升级后核对 |
|
|
1
|
+
<p align="center">
|
|
2
|
+
<strong>中文</strong>
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
<p align="center">
|
|
6
|
+
<a href="https://www.npmjs.com/package/dsh-ensp"><img alt="npm" src="https://img.shields.io/npm/v/dsh-ensp?style=flat-square&color=6c5ce7"></a>
|
|
7
|
+
<a href="https://www.npmjs.com/package/dsh-ensp"><img alt="npm downloads" src="https://img.shields.io/npm/dm/dsh-ensp?style=flat-square&color=4b6fff"></a>
|
|
8
|
+
<a href="https://github.com/lizi600jin/dsh-ensp/stargazers"><img alt="GitHub stars" src="https://img.shields.io/github/stars/lizi600jin/dsh-ensp?style=flat-square&color=eab308"></a>
|
|
9
|
+
<a href="LICENSE"><img alt="license" src="https://img.shields.io/badge/license-GPL--3.0--or--later-blue?style=flat-square"></a>
|
|
10
|
+
</p>
|
|
11
|
+
|
|
12
|
+
# dsh-ensp
|
|
13
|
+
|
|
14
|
+
面向华为 eNSP 的自动化工具。生成拓扑、启动设备、按顺序下发配置,并在每条命令后核对结果。
|
|
15
|
+
|
|
16
|
+
提供三种调用方式,共用同一套核心:
|
|
17
|
+
|
|
18
|
+
- CLI:适合脚本化批量操作
|
|
19
|
+
- MCP Server:接入 Claude Desktop、Cursor 等客户端
|
|
20
|
+
- DeepSeek Harness 插件:以模型工具的形式在会话内使用
|
|
21
|
+
|
|
22
|
+
## 功能
|
|
23
|
+
|
|
24
|
+
### 生成拓扑
|
|
25
|
+
|
|
26
|
+
生成 eNSP 可直接打开并正常显示的 `.topo` 文件。支持内置场景,也可自定义设备与链路。
|
|
27
|
+
|
|
28
|
+
```js
|
|
29
|
+
import { twoPcLab, writeTopology } from 'dsh-ensp'
|
|
30
|
+
|
|
31
|
+
await writeTopology('lab.topo', twoPcLab({ vlan: 10 }))
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
```js
|
|
35
|
+
import { buildTopology, autoLayout } from 'dsh-ensp'
|
|
36
|
+
|
|
37
|
+
const topo = autoLayout(
|
|
38
|
+
buildTopology()
|
|
39
|
+
.add('R1', 'AR2220', { x: 180, y: 120 })
|
|
40
|
+
.add('R2', 'AR2220', { x: 460, y: 260 })
|
|
41
|
+
.link('R1', 'GigabitEthernet0/0/0', 'R2', 'GigabitEthernet0/0/0')
|
|
42
|
+
.finish()
|
|
43
|
+
)
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### 启动与停止设备
|
|
47
|
+
|
|
48
|
+
自动定位工具栏按钮,无需手动点击。启动后按设备逐一确认就绪,窗口随即最小化,桌面可继续使用。
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
ensp probe # 重新标定按钮位置
|
|
52
|
+
ensp up lab.topo # 打开、启动、确认就绪、最小化
|
|
53
|
+
ensp stop # 关闭全部设备
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### 下发配置
|
|
57
|
+
|
|
58
|
+
逐条发送,每条命令确认提示符返回后才继续。任一命令出错即中断,并回报行号、命令与设备原始输出。
|
|
59
|
+
|
|
60
|
+
```js
|
|
61
|
+
import { pushConfig } from 'dsh-ensp'
|
|
62
|
+
|
|
63
|
+
const result = await pushConfig({
|
|
64
|
+
device: 'SW1',
|
|
65
|
+
port: 2000,
|
|
66
|
+
script: `
|
|
67
|
+
system-view
|
|
68
|
+
vlan 10
|
|
69
|
+
quit
|
|
70
|
+
interface GigabitEthernet0/0/1
|
|
71
|
+
port link-type access
|
|
72
|
+
port default vlan 10
|
|
73
|
+
quit
|
|
74
|
+
`,
|
|
75
|
+
})
|
|
76
|
+
|
|
77
|
+
if (!result.ok) {
|
|
78
|
+
console.log(result.failedAt.line, result.failedAt.command, result.failedAt.error)
|
|
79
|
+
}
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### 场景预设
|
|
83
|
+
|
|
84
|
+
内置 23 个场景,覆盖 VLAN、STP、静态路由、RIP、OSPF、BGP、NAT、DHCP、ACL、IPsec、IPv6、WLAN、IS-IS 等主题。
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
ensp preset # 按难度列出全部
|
|
88
|
+
ensp preset ospf-single # 查看某个场景
|
|
89
|
+
ensp preset --search bgp # 按关键词搜索
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
每个场景给出三项信息:需要创建的对象、配置顺序、用于确认结果的检查命令。具体命令由使用者按设备补全。
|
|
93
|
+
|
|
94
|
+
## 安装
|
|
95
|
+
|
|
96
|
+
### 作为 DSH 插件
|
|
97
|
+
|
|
98
|
+
在插件市场搜索 `dsh-ensp` 并安装,或:
|
|
99
|
+
|
|
100
|
+
```console
|
|
101
|
+
dsh plugin --profile desktop add dsh-ensp
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### 作为 CLI 或库
|
|
105
|
+
|
|
106
|
+
```console
|
|
107
|
+
npm install -g dsh-ensp
|
|
108
|
+
ensp status
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### 作为 MCP Server
|
|
112
|
+
|
|
113
|
+
```json
|
|
114
|
+
{
|
|
115
|
+
"mcpServers": {
|
|
116
|
+
"ensp": {
|
|
117
|
+
"command": "npx",
|
|
118
|
+
"args": ["-y", "dsh-ensp", "mcp"]
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
提供 12 个工具:`ensp_status`、`ensp_build_topology`、`ensp_open`、`ensp_start`、`ensp_stop`、`ensp_apply`、`ensp_apply_dir`、`ensp_query`、`ensp_probe`、`ensp_scenarios`、`ensp_scenario`、`ensp_preset_config`。
|
|
125
|
+
|
|
126
|
+
## 环境要求
|
|
127
|
+
|
|
128
|
+
| 项 | 要求 |
|
|
129
|
+
|---|---|
|
|
130
|
+
| 操作系统 | Windows。eNSP 仅有 Windows 版本 |
|
|
131
|
+
| eNSP | 已安装且可正常运行,需要管理员权限 |
|
|
132
|
+
| Node.js | 18 或更高版本 |
|
|
133
|
+
| 权限 | 插件与 eNSP 需处于相同权限级别 |
|
|
134
|
+
|
|
135
|
+
## 快速开始
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
ensp preset vlan-access # 查看场景方向
|
|
139
|
+
|
|
140
|
+
node -e "import('dsh-ensp').then(async m => {
|
|
141
|
+
await m.writeTopology('lab.topo', m.twoPcLab())
|
|
142
|
+
})"
|
|
143
|
+
|
|
144
|
+
ensp up lab.topo # 启动设备
|
|
145
|
+
ensp status --topology lab.topo # 查看控制台状态
|
|
146
|
+
ensp apply ./configs --topology lab.topo --save
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
## 致谢与许可
|
|
150
|
+
|
|
151
|
+
### 开源协议
|
|
152
|
+
|
|
153
|
+
采用 [GPL-3.0-or-later](LICENSE)。
|
|
154
|
+
|
|
155
|
+
基于本项目修改并对外分发时,需要:
|
|
156
|
+
|
|
157
|
+
1. 保留 `LICENSE` 中的版权声明;
|
|
158
|
+
2. 在源码及随附文档中注明原项目名称 `dsh-ensp` 与仓库地址 <https://github.com/lizi600jin/dsh-ensp>;
|
|
159
|
+
3. 使所分发的作品同样以 GPL-3.0-or-later 授权。
|
|
160
|
+
|
|
161
|
+
仅自行使用而不对外分发时,上述要求不适用。
|
|
162
|
+
|
|
163
|
+
未选用 MIT 或 Apache-2.0,是因为这两者允许二次修改后闭源,与"二次修改也须开源"的意愿冲突。
|
|
164
|
+
|
|
165
|
+
### 致谢
|
|
166
|
+
|
|
167
|
+
- Huawei eNSP:仿真器本体。
|
|
168
|
+
- dsh-ops:本 README 的组织方式参考了该项目。
|
|
169
|
+
- 在 issue 中反馈问题的使用者。
|
|
170
|
+
|
|
171
|
+
## 免责声明
|
|
172
|
+
|
|
173
|
+
本项目是一个自动化外壳,不包含 eNSP,也不包含任何华为软件或镜像。使用前请自行安装,并遵守华为的软件许可。
|
|
174
|
+
|
|
175
|
+
自动化操作图形界面存在固有风险,例如窗口被遮挡、eNSP 版本升级、系统缩放变化。建议先在非关键环境中验证。
|
|
176
|
+
|
|
177
|
+
## 相关文档
|
|
178
|
+
|
|
179
|
+
| 文档 | 内容 |
|
|
180
|
+
|---|---|
|
|
181
|
+
| [`docs/ENSP-FORMAT.md`](docs/ENSP-FORMAT.md) | `.topo` 格式规则 |
|
|
182
|
+
| [`docs/UI-ANCHORS.md`](docs/UI-ANCHORS.md) | 界面坐标与启动流程 |
|
|
183
|
+
| [`docs/SCENARIOS.md`](docs/SCENARIOS.md) | 场景预设说明 |
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
|
|
2
|
+
# dsh-ensp
|
|
3
|
+
|
|
4
|
+
Automation for Huawei eNSP: generate topologies, boot devices, push configuration line by line and verify every command's result.
|
|
5
|
+
|
|
6
|
+
- Generates `.topo` files eNSP opens directly, from built-in scenarios or custom devices and links
|
|
7
|
+
- Locates the toolbar buttons to start and stop devices, confirms each one individually, then minimises the window
|
|
8
|
+
- Pushes configuration one command at a time; the first error aborts the batch and reports the line, the command and the device's raw output
|
|
9
|
+
- Ships 23 scenario presets covering VLAN, STP, routing, BGP, NAT, ACL, IPsec, IPv6, WLAN and IS-IS
|
|
10
|
+
- Usable as a CLI, an MCP server, or a DeepSeek Harness plugin
|
|
11
|
+
|
|
12
|
+
Scroll down and open "dsh-ensp>" under the included components to reach its settings.
|
|
13
|
+
|
|
14
|
+
Full documentation: [repository](https://github.com/lizi600jin/dsh-ensp#readme).
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
|
|
2
|
+
# dsh-ensp
|
|
3
|
+
|
|
4
|
+
面向华为 eNSP 的自动化工具:生成拓扑、启动设备、逐条下发配置并核对每条命令的结果。
|
|
5
|
+
|
|
6
|
+
- 生成 eNSP 可直接打开的 `.topo` 文件,支持内置场景与自定义设备、链路
|
|
7
|
+
- 自动定位工具栏按钮完成设备启停,启动后按设备逐一确认就绪,窗口随即最小化
|
|
8
|
+
- 逐条下发配置,任一命令出错即中断并回报行号、命令与设备原始输出
|
|
9
|
+
- 内置 23 个场景预设,覆盖 VLAN、STP、路由、BGP、NAT、ACL、IPsec、IPv6、WLAN、IS-IS 等主题
|
|
10
|
+
- 提供 CLI、MCP Server 与 DeepSeek Harness 插件三种调用方式
|
|
11
|
+
|
|
12
|
+
向下翻页后点击“包含的组件”内的“dsh-ensp>”进入设置界面。
|
|
13
|
+
|
|
14
|
+
完整说明见 [仓库文档](https://github.com/lizi600jin/dsh-ensp#readme)。
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-ensp",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "Automate Huawei eNSP labs
|
|
3
|
+
"version": "0.1.3",
|
|
4
|
+
"description": "Automate Huawei eNSP labs: generate .topo files, start and stop devices, and push configuration one command at a time with per-command error reporting.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"dsh",
|
|
7
7
|
"dsh-plugin",
|
|
@@ -10,7 +10,8 @@
|
|
|
10
10
|
"huawei",
|
|
11
11
|
"vrp",
|
|
12
12
|
"network-simulation",
|
|
13
|
-
"mcp"
|
|
13
|
+
"mcp",
|
|
14
|
+
"automation"
|
|
14
15
|
],
|
|
15
16
|
"type": "module",
|
|
16
17
|
"license": "GPL-3.0-or-later",
|
|
@@ -37,6 +38,7 @@
|
|
|
37
38
|
"docs",
|
|
38
39
|
"scripts",
|
|
39
40
|
"cordis.patch.yml",
|
|
41
|
+
"screenshots.json",
|
|
40
42
|
"README.md",
|
|
41
43
|
"LICENSE"
|
|
42
44
|
],
|
package/screenshots.json
ADDED