运维实验|部署本地Ai大模型巡检华为设备
上篇文章聊了,我们可以尝试用 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模型)→ 终端输出(巡检结果)
一、环境准备
硬件要求
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负载)
二、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/config2.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 docker2.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 ollama2.4. 下载 deepseek-r1:7b 模型(AI 巡检核心模型)
```bash
docker exec -it ollama ollama pull deepseek-r1:7b
#验证
ollama run deepseek-r1:7b "请简要说明华为AR1000路由器的主要功能"
#测试完成后,按Ctrl+D退出容器交互模式
exit拉取的时候要费点时间只要没报错就不用着急,报错则多试试或开代理。
2.5.验证http接口:
三、配置 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”确认保存验证连通性:
四、编写 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.04.5.验证巡检结果
(1)后台终端输出验证:
成功登录 AR1000 设备(192.168.1.10);
采集 CPU、内存、路由、接口数据并保存到数据库........
(2)web交互界面输出验证
六、避坑指南
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