知用网
第二套高阶模板 · 更大气的阅读体验

网络自动化最佳实践:让重复操作自己跑起来

发布时间:2025-12-12 23:53:42 阅读:287 次

别再手动敲命令了

你有没有遇到过这种情况:每天早上第一件事,就是登录三四台服务器,挨个检查日志、重启服务、备份配置?干完一套流程得花二十分钟,还容易手抖输错命令。其实这些事完全可以交给脚本自动完成,这就是网络自动的意义——把人从重复劳动里解放出来。

从小任务开始,别一上来就想全盘自动化

很多人一听说自动化,就想着搞个大项目,结果半途而废。更现实的做法是先挑一个最烦人的小任务开刀。比如你每周都要给交换机做一次配置备份,可以先写个简单的脚本,用 SSH 登录设备,执行 show running-config,然后把结果保存到本地文件。

下面是个用 Python + Paramiko 实现的小例子:

import paramiko
import datetime

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('192.168.1.1', username='admin', password='pass123')

stdin, stdout, stderr = ssh.exec_command('show running-config')
config = stdout.read().decode()

filename = f'backup_{datetime.datetime.now():%Y%m%d}.txt'
with open(filename, 'w') as f:
    f.write(config)

ssh.close()

用版本控制管理你的配置和脚本

很多人备份配置就是扔进一个叫“配置备份”的文件夹,时间一长连哪份是最新的都分不清。更好的做法是把所有网络设备的配置文件和自动化脚本都放到 Git 仓库里。每次变更都有记录,还能对比差异。比如某天路由器出问题了,直接 git diff 就能看出上周改了哪些配置。

别在生产环境直接试脚本

有个朋友写了个批量修改 VLAN 的脚本,没在测试环境验证,直接在公司核心交换机上运行,结果整个办公网断了十分钟。正确的做法是先用模拟器(比如 GNS3 或 EVE-NG)搭个小型拓扑,或者找一台闲置设备做实验。哪怕只是用文本文件模拟输出结果,也比直接上真设备安全。

加点容错,别让脚本一出错就罢工

网络不稳定是常态。你的脚本不能因为某个设备暂时 ping 不通就直接报错退出。可以在代码里加个重试机制,比如三次尝试登录失败再标记为异常。同时把运行日志记下来,方便事后排查。比如在 Python 里可以用 logging 模块:

import logging
logging.basicConfig(filename='net_auto.log', level=logging.INFO)

try:
    ssh.connect('192.168.1.1', timeout=5)
except Exception as e:
    logging.error(f'无法连接 192.168.1.1: {e}')

用模板生成配置,避免手敲出错

新来一批接入交换机,每台都要配类似的 VLAN 和端口策略。与其一台台改 IP 和名称,不如用 Jinja2 模板写个配置模板,变量部分动态填充。比如:

interface Vlan{{ mgmt_vlan }}
   ip address {{ mgmt_ip }}/24
   name Management

hostname {{ device_name }}

这样只要准备个 CSV 表格,列出每台设备的名称和 IP,脚本自动生成完整配置,贴上去就行。

定期审查和清理旧脚本

半年前写的脚本,可能已经不适应现在的网络结构了。比如当时只支持 Cisco 命令,现在换了华为设备就不灵了。建议每季度花点时间看看哪些脚本还在用,哪些已经失效,及时更新或删除。不然仓库里一堆废弃代码,反而影响效率。