oclaw/skills/_workspace/ops/ops-netx-managed-ne-playbook/SKILL.md
2026-08-12 21:27:30 +08:00

85 lines
5.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
name: ops-netx-managed-ne-playbook
description: 面向 ops 专家的 netx 纳管网元(网元管理)作业手册。覆盖设备清单、连通状态、经 netx 登录设备执行只读 CLI。
---
# Ops Netx 纳管网元作业手册
## 强制使用范围
凡是需要在 **netx 网元管理** 中已录入的设备上**登录并查询**(show/display/ping 等)时,必须加载并遵循本技能。
与 UME 网元清单(`ops-netx-ume-playbook`)不同:本手册针对 **SSH/Telnet 纳管设备**(含 ZTE/华为/思科跳板、Linux SSH 隧道、堡垒机协议代理),不是 UME REST 同步清单。
## 工具选择顺序
使用 **MCP**(`mcp__netx__*`)。旧 inline `netx_*` 工具已移除。
1. **定位设备**
- `mcp__netx__listManagedNe`:`keyword`、`connect_status=pass`(**首选定位**)
- `mcp__netx__getManagedNe`:仅当需要单条 `connect_detail` 时调用;**入参必须是纳管 ne_id**(来自 listManagedNe / listCliTargets `source=managed`)
- **禁止**把告警/UME 的 UUID 当 `getManagedNe` 的 `ne_id`;失败时跟返回 `hint`:改 `listManagedNe` / `getUmeNe` / `execManagedNe(ume_ne_id=...)`,禁止相同参数盲重试
- **UME 清单(无需逐台纳管)**:`mcp__netx__listCliTargets`(`source=ume`)或 `queryUmeNeInventory` 取 `ne_id`,再用 `ume_ne_id` 执行 CLI(需先在 netx **UME → CLI 连接** 配置统一凭据/跳板)
2. **登录查信息**
- `mcp__netx__execManagedNe`:`ne_id` **或** `ume_ne_id` + `commands`(默认最多 5 条,可由 `NETX_NE_EXEC_MAX_COMMANDS` 调高,硬上限 50)
- **多台必须 batch-first(一次调用,服务端并发登录,默认 concurrency=4,最多 20 台)**:
- **同命令**:`ne_ids` / `ume_ne_ids` + 共享 `commands`
- **每台命令不同(厂商/角色不同)**:用 `targets=[{ume_ne_id|ne_id, commands:[…]}, …]` 一次提交;**不要**因为命令不同就退化成逐台 `execManagedNe`
- 可按厂商拆成 1~2 次 batch(华为一批、Cisco 一批),仍远好于 N 次单台
- **禁止**对多台排查逐台循环 `execManagedNe`(stdio 串行 + 重复登录)
- **一次会话内**:`listCliTargets` 最多调用一次,缓存返回的 id;同台多条 show 合并进该台的 `commands[]`,禁止「list→exec→list→exec」循环
- 超时:提高 `read_timeout_sec`(默认 60,慢命令 90–120)或减少命令条数,禁止对同一命令盲重试
## Field link recipes (WhatsApp EN)
### Capacity / optical power between two names
When user says **capacity**, **bandwidth between A and B**, or **optical power A <> B** (prod vocabulary):
1. Resolve nicknames → real `host_name` via inventory/wiki (`SEMBAWA` → e.g. `PLG-SMW-EN1-…`).
2. Find interconnect: `findTopologyPaths` and/or LLDP (`show lldp …` / vendor equivalent) — identify **both ports**.
3. Read optics on **both** ends with the correct vendor command (below). Summarize: interface, RX/TX power, threshold, whether link is up.
4. Do **not** answer with only UME bandwidth-usage-rate alarms unless the user asked for congestion alarms.
### ZTE optical CLI (prod corrections)
Try in order; **one failure → switch command, do not retry the same spelling**:
| Prefer | Fallback / notes |
|--------|------------------|
| `show opticalinfo brief` | Field-confirmed on ZXR10 (e.g. ANGKATAN / `PLG-A45-…`) |
| `show optical brief` | Some EN platforms |
| `show opticalinfo brief \| begin <if>` | Narrow to one interface after port known |
Cisco/Huawei: use `show interface transceiver` / `display optical-module` style allowlisted commands as applicable.
### Multi-NE CLI (batch-first)
- **Same show on many NEs**: `execManagedNe(ume_ne_ids=[…], commands=[…])` once.
- **Different commands per NE** (vendor / role): one call with
`targets=[{ume_ne_id, commands:[…]}, {ume_ne_id, commands:[…]}, …]` — still concurrent on the server.
- Cap to NEs on the asked path (usually 2–5). Never one-NE `execManagedNe` loops.
## CLI 约束(服务端强制)
- 允许前缀:`show `、`display `、`ping `、`ping6 `、`traceroute `、`tracert `、`trace `、`trace6 `
- 管道:仅白名单过滤(`include`/`exclude`/`begin`/`section`/`count`/`match`/`grep`/`one-line`/`no-more`);禁止 `redirect`/`append`/`tee`/`send`
- 禁止:`;`、换行拼接、改配置类(configure/write/copy/reload/delete 等)
- 示例:
- 思科:`show version`、`show configuration | include hostname`
- 华为:`display version`、`display current-configuration | include sysname`
- ZTE:`show version`、`show interface`
- 连通:`ping 192.168.0.1`、`ping6 2001::db8::1`、`traceroute 10.0.0.1`
## 排障流程
1. `connect_status` 为 `fail`:先 `netx_get_managed_ne` 阅读 `connect_detail`,勿反复盲 exec
2. 设备经跳板:详情中确认 `hop_enabled`、`hop_vendor`、模板是否正确
- **堡垒机**(`hop_vendor=bastion`):检查 `hop_host`、`hop_port`(常见 22 或 2222)、`hop_username`、用户名模板渲染是否为 `{堡垒机用户}@{目标用户}@{目标IP}@{堡垒机地址}`(例:`bastion-user@target-user@2.2.2.2@1.1.1.1`);`hop_target_auth_mode=bastion_managed` 时目标密码在堡垒机侧,netx 可不存目标密码
3. 超时:对慢命令提高 `read_timeout_sec`(最大 120),或减少单次命令条数
## 输出约定
- 结论 + **工具返回 output 摘录**(勿编造 CLI 结果)
- 标明 `ip_address`、`name`、`ne_id`(对用户展示优先 name/IP,ne_id 作关联键)
- 英文会话:用户可见回复不得含汉字(CLI 原文可摘录但需说明为设备原文)