Probe Agent¶
Probe Agent 执行活跃性检测和跨多设备的并行 CLI 执行。它是唯一直接访问实时网络设备的 Ops 子 agent。
功能声明
| ID | 声明 | 状态 |
|---|---|---|
| C-NE-24 | execute_cli_parallel 在执行前验证命令白名单 |
🔶 需设备环境 |
| C-NE-25 | 设备名仅允许 [a-zA-Z0-9_\-.],非法字符被拒绝 |
⬜ 待验证 |
使用场景¶
- "所有核心路由器可达吗?"
- "在所有设备上执行
show ip route" - "检查全网 OSPF 邻居状态"
编排器将这些请求路由到 Probe,因为它们需要实时 SSH 连接。
工具:execute_cli_parallel¶
使用 Nornir 在多台设备上同时执行 CLI 命令。
execute_cli_parallel(
command: str, # 要执行的 CLI 命令
devices: list[str], # 目标设备名(来自 netops.devices)
timeout: int = 30 # 每设备超时(秒)
)
安全模型¶
SSH 连接建立前强制执行三项检查:
-
设备名验证 — 名称必须匹配
[a-zA-Z0-9_\-.]。防止通过构造主机名的注入攻击。 -
白名单检查 — 命令必须存在于目标设备平台的
commands表中。不在白名单的命令被拒绝。 -
黑名单检查 — 即使在白名单中,匹配
blacklisted_commands.yaml中任何 pattern 的命令也被拒绝。
管道命令¶
包含 |(管道)的命令需要 commands 表条目中 pipe_allowed = true。防止通过管道输出的意外 shell 注入。
使用示例¶
通过 Ops 编排器:
编排器委托给 Probe,后者:
- 查询
netops.devices获取所有设备名 - 在每台设备上并行执行
show ip bgp summary - 返回聚合结果(含每设备状态)