首页 / 资讯中心 / 文章详情

网络设备自动巡检方案:用 OpenClaw 批量检测交换机 / 路由器状态,生成巡检报告

网络设备自动巡检方案:用 OpenClaw 批量检测交换机 / 路由器状态,生成巡检报告 ★ FEATURED ARTICLE
1. 从一次深夜巡检说起OpenClaw 批量检测交换机与路由器状态到底解决什么问题凌晨两点你手里攥着一份 Excel 设备清单准备逐台 SSH 登录 200 台交换机和路由器敲show interface、show cpu、show version再把结果复制到表格里。这个场景对运维人来说太熟悉了。问题不在于命令难而在于重复劳动多、窗口时间短、人工判断容易漏。网络设备自动巡检方案的核心就是用 OpenClaw 把「登录—执行命令—解析结果—生成巡检报告」这条链路自动化。OpenClaw 在这里扮演的是一个轻量级自动化编排框架它负责维护 SSH 连接池、按设备清单并发下发命令、把不同厂商的 CLI 输出归一化最后把结构化数据交给报告模板。它适合谁适合手里有几十到几百台交换机/路由器、又不想上重型网管平台的运维团队。你可以把它理解成一个「会自己跑命令的巡检员」你只需要告诉它去哪台设备、执行什么命令、结果怎么判断。我试过用纯 Shell 脚本加expect做类似的事设备一多就卡在连接超时和输出解析上。OpenClaw 的价值在于把连接管理、重试、并发控制这些脏活封装掉让你专注在巡检项本身。下面我会按「环境准备—配置片段—命令模板—报告校验—排错」的顺序把可复制的落地路径写清楚。全文围绕 OpenClaw、交换机、路由器、巡检报告、SSH 这几个关键词展开每一步都能直接跟做。2. 前置准备OpenClaw 环境、设备清单与 SSH 凭据管理在写配置之前先把三样东西准备好OpenClaw 运行环境、设备清单文件、SSH 凭据。这一步不做扎实后面批量巡检一定会在连接阶段翻车。2.1 安装 OpenClaw 与基础依赖OpenClaw 通常以 Python 包或二进制形式分发建议在独立的虚拟环境里跑避免和系统 Python 冲突。以 Python 环境为例python3 -m venv openclaw-env source openclaw-env/bin/activate pip install openclaw paramiko netmiko jinja2 pandasparamiko和netmiko是 SSH 连接与多厂商 CLI 适配的底层依赖jinja2用来渲染巡检报告模板pandas用来做结果汇总。安装完成后用openclaw --version确认可执行文件在 PATH 里。如果你的设备数量超过 100 台建议把 OpenClaw 跑在一台跳板机或运维专机上确保这台机器到所有设备的 SSH 可达。可以用下面这段脚本先做一轮可达性预检while read -r ip; do ping -c 2 -W 2 $ip /dev/null 21 echo $ip OK || echo $ip UNREACHABLE done devices.txt把不可达的设备先剔出去能省掉后面大量超时等待。2.2 设备清单文件怎么写设备清单是巡检的输入源建议用 CSV 或 YAML字段至少包含设备名、管理 IP、厂商、设备角色、SSH 端口。CSV 版本如下hostname,mgmt_ip,vendor,role,ssh_port core-sw-01,10.0.0.1,cisco,core,22 agg-sw-02,10.0.0.2,huawei,aggregation,22 edge-rt-01,10.0.0.3,h3c,edge,22厂商字段很关键因为 Cisco、华为、H3C 的show命令输出格式不同OpenClaw 需要根据vendor选择对应的解析器。角色字段用来决定巡检项比如核心交换机要查 BGP 邻居接入交换机只需要查接口错包和 CPU。2.3 SSH 凭据的安全存放不要把明文密码写进配置文件。推荐用环境变量加加密凭据库的方式。先设置环境变量export OPENCLAW_SSH_USERnetops export OPENCLAW_SSH_PASSyour-encrypted-pass然后在 OpenClaw 配置里引用${OPENCLAW_SSH_USER}。如果团队有密钥体系优先用 SSH Key把公钥提前推到设备的local-user或username配置里。密钥方式比密码方式稳定批量并发时不容易触发设备的登录失败锁定。注意部分交换机默认限制并发 SSH 会话数比如同时只允许 5 个 vty 连接。批量巡检前先确认设备的user-interface vty最大会话数必要时临时调大巡检结束后恢复。3. 可复制配置OpenClaw 巡检任务 JSON 与命令模板这一节是整篇的核心给出可以直接落地的 OpenClaw 配置片段。配置文件建议命名为inspection.json放在项目根目录。3.1 主配置文件 inspection.json{ inventory: devices.csv, concurrency: 20, timeout: 30, retry: 2, retry_interval: 5, credentials: { username: ${OPENCLAW_SSH_USER}, password: ${OPENCLAW_SSH_PASS}, key_file: ~/.ssh/id_rsa }, tasks: [ { name: device_health, vendor_commands: { cisco: [show version, show processes cpu | include CPU, show memory statistics], huawei: [display version, display cpu-usage, display memory-usage], h3c: [display version, display cpu-usage, display memory] }, parser: health_parser }, { name: interface_status, vendor_commands: { cisco: [show interfaces | include errors], huawei: [display interface | include error], h3c: [display interface | include error] }, parser: interface_parser } ], report: { template: report_template.j2, output_dir: ./reports, format: [html, csv] } }concurrency控制并发数20 是一个比较稳的起点设备性能差或 vty 限制严的可以降到 10。retry和retry_interval是失败重试后面排错章节会详细讲。3.2 命令模板与厂商适配不同厂商的命令差异用vendor_commands映射解决。如果你的设备型号更杂可以再细分一层比如按role区分核心和接入{ name: bgp_check, role_commands: { core: { cisco: [show bgp summary], huawei: [display bgp peer], h3c: [display bgp peer ipv4] } } }这样核心设备才跑 BGP 检查接入设备跳过减少无效命令和解析负担。3.3 报告模板 report_template.j2用 Jinja2 渲染 HTML 报告字段包括设备名、巡检时间、CPU 使用率、内存使用率、接口错包数、异常等级!DOCTYPE html html headmeta charsetutf-8title网络设备巡检报告/title/head body h1巡检报告 {{ report_time }}/h1 table border1 trth设备/ththCPU/thth内存/thth接口错包/thth等级/th/tr {% for d in devices %} tr td{{ d.hostname }}/td td{{ d.cpu }}/td td{{ d.memory }}/td td{{ d.interface_errors }}/td td{{ d.severity }}/td /tr {% endfor %} /table /body /html模板里的severity由解析器根据阈值判定比如 CPU 超过 90% 标 CRIT接口错包大于 0 标 MAJOR。3.4 启动巡检任务配置齐了之后一条命令启动openclaw run --config inspection.json --inventory devices.csv --output ./reports执行过程中 OpenClaw 会打印每台设备的连接状态和命令执行结果。跑完后./reports下会生成带时间戳的 HTML 和 CSV 文件。4. 验证请求与成功结果巡检报告字段校验与失败重试配置写完不代表能跑通必须做验证。这一节给出具体的验证动作和预期结果。4.1 单设备冒烟测试先拿一台设备验证 SSH 和命令解析是否正常openclaw run --config inspection.json --inventory devices.csv --filter core-sw-01 --dry-run--dry-run只连接并执行命令不生成报告方便你看原始输出。预期看到类似[INFO] connecting to core-sw-01 (10.0.0.1) via ssh [INFO] executing: show version [INFO] executing: show processes cpu | include CPU [INFO] parsed cpu23%, memory41% [INFO] device core-sw-01 OK如果parsed行有值说明解析器工作正常。4.2 报告字段校验生成报告后用一段脚本校验关键字段是否为空import pandas as pd df pd.read_csv(./reports/inspection_latest.csv) required [hostname, cpu, memory, interface_errors, severity] missing df[required].isnull().sum() print(missing) assert missing.sum() 0, 存在空字段检查解析器如果某个字段整列为空通常是命令输出格式和正则不匹配回到解析器里调整。4.3 失败重试验证故意把一台设备的 IP 改错观察重试行为[WARN] connect to 10.0.0.99 failed, retry 1/2 [WARN] connect to 10.0.0.99 failed, retry 2/2 [ERROR] device 10.0.0.99 marked as UNREACHABLE预期结果是重试两次后标记为不可达但不影响其他设备继续巡检。这就是并发加隔离的价值。4.4 成功结果长什么样一次完整巡检结束后报告里应该能看到每台设备的 CPU、内存、接口错包和异常等级。正常情况下大部分设备是 OK少数标 MAJOR 或 CRIT 的需要人工跟进。把报告和上一期对比就能看出哪些设备指标在恶化。5. 常见报错排查401、local proxy failed、reading choices、OAuth批量 SSH 巡检最容易在这几类错误上卡住逐个说清楚。5.1 401 Authentication failedparamiko.ssh_exception.AuthenticationException: Authentication failed.原因通常是用户名密码错、密钥没推、或者设备只允许特定源 IP 登录。排查顺序先用ssh -v netops10.0.0.1手动连一次确认凭据本身没问题再检查 OpenClaw 读到的环境变量是否为空echo $OPENCLAW_SSH_USER验证最后确认设备 ACL 是否放行了跳板机 IP。5.2 local proxy failed[ERROR] local proxy failed: connection refused这个报错一般出现在你通过本地端口转发或跳板代理连接设备时。检查跳板机上的转发进程是否还在端口是否被占用。如果是 OpenClaw 配置里写了proxy字段确认代理地址和端口正确。注意不要使用任何违规的网络代理工具企业环境应走合规的堡垒机或跳板机。5.3 reading choices 相关解析错误[ERROR] reading choices failed: unexpected output format这是解析器报错说明设备返回的 CLI 输出和正则不匹配。常见原因是设备语言是中文、或者命令被分页打断。解决办法在命令前加terminal length 0Cisco或screen-length 0 temporary华为/H3C关闭分页确认设备 CLI 语言为英文把原始输出打到日志里对照正则逐行调。5.4 OAuth 相关报错[ERROR] OAuth token expired如果你把巡检结果推送到内部平台或工单系统可能用到 OAuth 令牌。令牌过期就重新获取并在配置里加上自动刷新逻辑。如果只是本地生成报告不涉及 OAuth可以忽略这类配置。5.5 三件套检查清单无论哪种接入方式出现连接类报错时先核对三件套Base URL、Key、Model ID。以 OpenClaw 对接模型服务做报告摘要为例配置里要写全{ llm: { base_url: https://taotoken.net/api, api_key: ${TAOTOKEN_API_KEY}, model_id: claude-sonnet-4-5 } }Base URL 指向 API 入口Key 从控制台生成Model ID 按实际使用的模型填写。三者缺一请求就会失败。6. 把巡检跑成日常接入方式与持续优化巡检脚本跑通一次不难难的是让它稳定跑成日常。建议把 OpenClaw 任务挂到 cron 或内部调度平台上每天凌晨业务低峰期执行。报告生成后自动推送到运维群或工单系统异常设备直接生成待办。如果你需要让 OpenClaw 在巡检后自动生成一段自然语言的分析摘要可以接入模型对话能力把结构化结果转成可读结论。API Key 在控制台创建接入文档里有完整的请求示例。对于需要长期跑编码和 Agent 任务的团队Coding Plan 提供了更稳定的调用额度适合把巡检、报告、告警串成一条自动化流水线。最后给一个实用技巧把每次巡检的 CSV 结果按日期归档用 pandas 做趋势对比。连续三周 CPU 缓慢上升的设备往往比一次性飙高的更值得关注。巡检报告的价值不在单次快照而在时间序列里的异常拐点。
阅读完成 · 觉得有帮助?
咨询建站