用Python搞定网络设备配置备份

为什么需要自动备份配置

在公司运维中,路由器、交换机这些网络设备的配置一旦出问题,恢复起来特别麻烦。靠手动登录每台设备去保存配置,不仅费时间,还容易遗漏。尤其是设备一多,今天改了这个,明天忘了备份那个,出事的时候只能干瞪眼。

这时候,写个简单的 Python 脚本自动备份,就成了最实在的选择。不需要复杂的系统,几行代码就能让每天的配置自动存到本地,出了问题随时能找回。

用Paramiko连接设备

大多数网络设备支持 SSH 登录,Python 的 Paramiko 库正好能用来自动化登录和执行命令。比如,连上一台华为交换机,执行 display current-configuration,把输出保存下来就行。

import paramiko
import datetime

def backup_config(host, username, password, enable_pwd):
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(host, port=22, username=username, password=password)

shell = ssh.invoke_shell()
shell.send('screen-length 0 temporary\n')
shell.send('system-view\n')
shell.send('display current-configuration\n')
shell.send('\n')

result = ''
while True:
if shell.recv_ready():
data = shell.recv(65535).decode('utf-8')
result += data
if len(data) < 65535:
break
ssh.close()

filename = f'{host}_config_{datetime.datetime.now().strftime("%Y%m%d_%H%M")}.txt'
with open(filename, 'w') as f:
f.write(result)
print(f'配置已保存至 {filename}')

批量处理多台设备

实际环境中设备不止一台,可以把 IP、账号密码列在 CSV 文件里,脚本读取后循环执行备份。

import csv

with open('devices.csv', 'r') as f:
reader = csv.DictReader(f)
for row in reader:
backup_config(row['ip'], row['user'], row['pwd'], row['enable'])

每次运行脚本,几十台设备的配置几分钟就全存好了,还能按日期命名归档,查找方便。

配合定时任务更省心

把脚本交给系统的定时任务,比如 Linux 的 cron,每天凌晨自动跑一次。

0 2 * * * /usr/bin/python3 /path/to/backup_script.py

这样每天上班打开文件夹,昨天的配置已经整整齐齐躺在里面了,再也不用担心谁手滑改错配置没备份。

加点容错更稳定

网络不稳定或者密码错了,脚本直接崩溃也不合适。加上异常捕获,记录失败日志,不影响其他设备的备份。

try:
backup_config(row['ip'], row['user'], row['pwd'], row['enable'])
except Exception as e:
with open('error.log', 'a') as log:
log.write(f'Failed to backup {row['ip']}: {str(e)}\n')

时间久了你会发现,这种小脚本虽然不起眼,但关键时刻能救命。不用花钱买商业工具,一个Python脚本就能把配置管理得明明白白。