上篇文章聊了,我们可以尝试用 AI 大模型重构网络巡检流程的思路,以及AI 大模型是如何落地网络自动化巡检的。今天呢我们就聊聊如何用 AI 大模型做些 “具体可落地” 的小尝试。

做运维的都知道,想试验新工具却怕影响生产环境?这次分享一个 “零风险低成本” 的实验:用 CentOS 8 系统,搭配华为 eNSP 模拟器,搭一套完整的 AR1000 路由器 AI 巡检环境。不用真实设备,不用复杂配置,1 小时就能从 “环境搭建” 到 “AI 自动识别异常”,我会尽可能的详细,让新手也能跟着做。

先说说这个实验的价值:为啥值得做?

很多运维同学想尝试 AI 巡检,却卡在两个问题上:一是没有真实设备怕搞坏,二是不知道从哪开始搭环境。万事开头难,这个实验刚好解决这两个痛点:

  • 零硬件成本:用 eNSP 模拟器代替真实 AR1000 路由器,PC 就能跑;

  • 贴近生产场景:基于 CentOS 8(企业常用系统)部署,脚本后续能直接迁移到生产;

  • 全流程可复现:从数据采集到 AI 分析,每一步都有明确命令,跟着敲就能成;

  • 能看到实际效果:AI 会自动识别路由器异常,还能给出华为专属排查命令,不是 “光说不练”。

AI 不是替代运维,而是把我们从重复劳动中解放出来 —— 以前花半天查日志,现在只要盯着 AI 推送的异常清单,把更多时间用在网络优化上,这才是自动化巡检的真正价值。

不管是想入门 AI 运维,还是想给团队验证方案,这个实验都很适合当 “第一个练手项目”。

实验整体架构:先搞懂逻辑再动手

整个实验的核心逻辑很简单,就是 “模拟设备→抓数据→AI 判异常”,

华为eNSP(虚拟AR1000)→ CentOS 8(数据采集+AI模型)→ 终端输出(巡检结果)

640-btSw

一、环境准备

硬件要求

  • CentOS 8 服务器:最低 8 核 CPU、16GB 内存、50GB 硬盘。

  • 模拟器:用于运行虚拟 AR1000,为了便于复现实验希望大家选择eNSP。

组件规划

关于DeepSeek-R1-7B 官方:https://ollama.com/library/deepseek-r1:7b

DeepSeek-R1-7B 是 DeepSeek 推出的一款 70 亿参数的语言模型,在性能与资源消耗上取得了较好的平衡,适合多种应用场景。在硬件需求上相对适中,16G 内存配合适当的量化技术可以运行,若有 NVIDIA GPU(如 RTX 3060、RTX 3090 等),则能进一步提升推理速度。

总结一句话:

  • 卡紧张 → q4_K_M、想几乎不丢精度→ q8_0卡管够、要极限精度→ 原版 FP16。

  • 如果没有显卡纯CPU的环境,Ai分析阶段会很慢(对命令回显分析的时候CPU负载)

640-FPiU

二、CentOS 8 配置

2.1. 基础配置

```bash
# 切换到root用户
su - root

# 关闭防火墙和SELinux
systemctl stop firewalld && systemctl disable firewalld
setenforce 0 && sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

2.2. 安装 Docker

```# 1. 配置Docker官方yum源
dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo

# 2. 安装Docker CE(社区版)
dnf install -y docker-ce docker-ce-cli containerd.io

# 3. 启动Docker服务并设置开机自启
systemctl start docker
systemctl enable docker

# 4. 验证Docker安装(应显示active(running))
systemctl status docker

2.3. 拉取 Ollama 镜像并启动容器

``` 1. 拉取最新版Ollama镜像
docker pull ollama/ollama:latest

# 2. 启动Ollama容器(关键参数说明)
# -d:后台运行容器
# --name:容器命名为ollama
# -p 11434:11434:映射容器11434端口到宿主机(Ollama默认端口)
# -v ollama_data:/root/.ollama:挂载数据卷,持久化模型数据(避免容器删除后模型丢失)
# --restart always:容器异常退出时自动重启
docker run -d \
  --name ollama \
  -p 11434:11434 \
  -v ollama_data:/root/.ollama \
  --restart always \
  ollama/ollama

# 3. 验证容器状态(应显示Up状态)
docker ps | grep ollama

2.4. 下载 deepseek-r1:7b 模型(AI 巡检核心模型)

```bash
docker exec -it ollama ollama pull deepseek-r1:7b
#验证 
ollama run deepseek-r1:7b "请简要说明华为AR1000路由器的主要功能"
#测试完成后,按Ctrl+D退出容器交互模式
exit

拉取的时候要费点时间只要没报错就不用着急,报错则多试试或开代理。

640-ngcJ

2.5.验证http接口:

640-maET

三、配置 AR1000 路由器

```# 进入系统视图
<Huawei> system-view

# 重命名设备(便于识别)
[Huawei] sysname AR1000-Test

# 生成SSH登录必需的RSA密钥对(AR系列路由器必须配置)
[AR1000-Test] rsa local-key-pair create
# 按提示输入“y”,然后回车默认2048位密钥

# 配置VTY虚拟终端(支持SSH登录)
[AR1000-Test] user-interface vty 0 4
# 启用AAA认证
[AR1000-Test-ui-vty0-4] authentication-mode aaa
# 仅允许SSH协议登录(禁止Telnet,提高安全性)
[AR1000-Test-ui-vty0-4] protocol inbound ssh
# 退出VTY视图
[AR1000-Test-ui-vty0-4] quit

# 配置AAA本地用户(用于SSH登录)
[AR1000-Test] aaa
# 创建用户,密码(不可逆加密)
[AR1000-Test-aaa] local-user python password irreversible-cipher Ai@#2323
# 授予用户SSH服务权限
[AR1000-Test-aaa] local-user python service-type ssh
# 授予用户最高权限(级别3)
[AR1000-Test-aaa] local-user python privilege level 3
# 退出AAA视图
[AR1000-Test-aaa] quit

# 配置管理IP(与CentOS 8同网段,如192.168.31.199)
[AR1000-Test] interface GigabitEthernet 0/0/0
[AR1000-Test-GigabitEthernet0/0/0] ip address 192.168.31.199 255.255.255.0
[AR1000-Test-GigabitEthernet0/0/1] ip address 10.1.1.2 255.255.255.0# 退出接口视图

[AR1000-Test-GigabitEthernet0/0/1] stelnet server enable

# 保存配置(避免重启后丢失)
[AR1000-Test] save    # 按提示输入“y”确认保存

验证连通性:

640-EntT

640-Jipc

640-NkKa

四、编写 AI 巡检系统

4.1.文件结构及思路

```
[root@IT_Online ar-inspect]# tree
.
├── docker-compose.yml   #为了便于运行我选择的全容器化构建 
├── Dockerfile           # Docker Compose配置文件
├── requirements.txt     # Python依赖库列表
└── src
    ├── app.py           # Flask后端主程序(路由、SSE、巡检逻辑)
    ├── collector.py     # 采集
    ├── __init__.py      # 空文件,标记为Python包
    ├── inspect_tool.py  # 调用 ollama 生成报告
    ├── progress.py      # 进度队列(跨线程共享消息)
    └── templates        # Web 服务
        └── index.html

#总的思路如下
┌------------- 宿主机(CentOS 8) -------------┐
│  ① Ollama 容器(deepseek-r1:7b)             │
│     职责:读日志 → 给分数 → 写建议            │
│     接口:http://127.0.0.1:11434/api/generate│
├----------------------------------------------┤
│  ② ar-inspect 容器(Flask + paramiko)       │
│     职责:Web 点按钮 → SSH 采日志 → 推报告     │
│     接口:http://宿主机IP:5000                │
└----------------------------------------------┘
        │ SSH
        ▼
华为 AR1000 路由器(192.168.31.199)

4.2.采集层:paramiko 如何“一分钟拿到 6 张体检表”

SSH 执行与输出捕获:通过 Paramiko 库建立 SSH 连接,逐行执行命令并捕获输出。对于有分页的输出(如--- More ----),会自动发送空格翻页,确保获取完整内容。系统通过命令列表定义:在src/collector.py 中,预先定义了需执行的 6 条命令:

```
CMDS = [
    "display version",               # 软件版本
    "display cpu-usage",             # 5 分钟平均
    "display memory",                # 内存占用
    "display interface brief",       # 端口 up/down
    "display ip routing-table",      # 路由条目
    "display logbuffer | include ERROR"  # 近期报错
]

把所有 display 输出拼接成一段纯文本,每条命令的输出会被去除冗余的分页提示和命令前缀,最终整理成字符串,塞进下面模板交给大模型处理:

```
你是资深网络运维专家,请根据下方原始巡检数据,给出:
1. 整体健康评分(0-100)
2. 存在的风险或异常(逐条)
3. 优化建议(逐条)
4. 用表格形式汇总关键指标

原始数据:
---- display version ----
...
---- display cpu-usage ----
...

4.3.Web 层:Flask + SSE 的“实时打字机”原理

(1)SSE(Server-Sent Events)单向 HTTP 长连接,服务器随时 push 文本,EventSource 逐行接收,比 WebSocket 轻,比轮询省。系统最终将该报告通过 SSE 推送到前端页面,完成整个巡检流程。通过这种 “命令采集→格式整理→AI 分析→结果展示” 的流程,系统实现了对路由器的自动化智能巡检。

(2)后端核心代码

```
def event():
    q = queue.Queue()
    threading.Thread(target=generate, args=(q,), daemon=True).start()
    while True:
        msg = q.get()
        yield f"data: {msg}\n\n"
        if "AI 巡检结束" in msg:
            break
return Response(event(), mimetype="text/event-stream")

(3)前端核心代码

```
const sse = new EventSource('/stream');
sse.onmessage = e => {
    document.getElementById('log').innerText += e.data + '\n';
    if (e.data.includes('AI 巡检结束')) sse.close();
};

4.4.构建容器镜像:

整体打包做镜像 “包目录 + 模块启动” 把代码放进 src/ 包,用模块方式启动,所有命名冲突、导入错误、警告问题一次解决。

```
docker build -t ar-inspect:1.0 .

docker stop ar-inspect && docker rm ar-inspect

docker run -d --name ar-inspect --network host \
  -e OLLAMA_URL=http://172.17.0.1:11434/api/generate \
  -e ROUTER_HOST=192.168.31.199 \
  -e ROUTER_PORT=22 \
  -e ROUTER_USER=python \
  -e ROUTER_PASS=Ai@#2323 \
  ar-inspect:1.0

4.5.验证巡检结果

(1)后台终端输出验证:

成功登录 AR1000 设备(192.168.1.10);

采集 CPU、内存、路由、接口数据并保存到数据库........

640-dVBs

640-bjzF

(2)web交互界面输出验证

640-ySGz

640-DFmO

640-qsUB

六、避坑指南

  • Docker 启动失败:CentOS 8 若提示 “containerd 启动失败”,执行systemctl restart containerd后再启动 Docker;若报 “端口占用”,用netstat -tuln | grep 11434查看占用进程,kill 后重启。

  • eNSP 与 CentOS 网络互通:若 CentOS ping 不通 eNSP 的 AR1000,检查 eNSP 的 “云设备” 配置 —— 需将云设备的 “虚拟网卡” 与 CentOS 的网卡桥接(eNSP 云设备右键 “设置→添加→桥接→选择 CentOS 的网卡”)。

  • Ollama 拉取模型慢:可配置 Docker 镜像加速(如阿里云镜像),或手动下载模型文件放到/root/.ollama/models目录。

  • 密钥对必配:AR1000 启用 SSH 前必须执行rsa local-key-pair create,否则会提示 “SSH server not enabled”,这是与交换机配置的核心区别。

  • 命令适配版本:不同 AR1000 固件版本命令可能有差异(如 V300R022 与 V300R023),若display ip routing-table summary报错,改用display ip routing-table解析。

最后:关于本实验的代码部分我已放在Github

https://github.com/qinshihu/Huawei-network-equipment-Ai-inspection