如何写批量备份交换机配置的Python脚本?今日文章安排5个厂商的,牛叉!

简介: 如何写批量备份交换机配置的Python脚本?今日文章安排5个厂商的,牛叉!

你好,这里是网络技术联盟站。

在昨天的文章中,我们介绍了20个华为路由器常用的Python脚本:

文章末尾的评论区中,有小伙伴提出想要一下批量备份交换机配置的脚本:

既然没有提出要哪个厂商,今天瑞哥就安排多厂商的脚本:

下面让我们直接开始!

一、华为

import paramiko
import time
import os

# 创建SSH客户端对象
ssh = paramiko.SSHClient()

# 自动添加主机密钥
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

# 配置SSH连接信息
username = 'username'  # SSH用户名
password = 'password'  # SSH密码
port = 22  # SSH端口号

# 读取交换机列表
with open('switch_list.txt') as f:
    switch_list = f.read().splitlines()

# 遍历交换机列表,备份配置文件
for switch_ip in switch_list:
    print(f'正在备份交换机 {switch_ip} 的配置文件...')
    
    # 建立SSH连接
    ssh.connect(switch_ip, port=port, username=username, password=password, timeout=10)

    # 发送命令
    ssh.exec_command('system-view')
    time.sleep(1)
    ssh.exec_command('backup configuration to tftp 10.0.0.1 config.cfg')

    # 等待备份完成
    time.sleep(5)

    # 关闭SSH连接
    ssh.close()

    # 保存备份文件
    filename = f'{switch_ip}.cfg'
    os.system(f'tftp -g -r config.cfg 10.0.0.1')
    os.rename('config.cfg', filename)

    print(f'交换机 {switch_ip} 的配置文件备份完成,保存为 {filename}。')

二、H3C

import paramiko
import time
import os

# 创建SSH客户端对象
ssh = paramiko.SSHClient()

# 自动添加主机密钥
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

# 配置SSH连接信息
username = 'username'  # SSH用户名
password = 'password'  # SSH密码
port = 22  # SSH端口号

# 读取交换机列表
with open('switch_list.txt') as f:
    switch_list = f.read().splitlines()

# 遍历交换机列表,备份配置文件
for switch_ip in switch_list:
    print(f'正在备份交换机 {switch_ip} 的配置文件...')
    
    # 建立SSH连接
    ssh.connect(switch_ip, port=port, username=username, password=password, timeout=10)

    # 发送命令
    ssh.exec_command('system-view')
    time.sleep(1)
    ssh.exec_command('save backup.cfg')

    # 等待备份完成
    time.sleep(5)

    # 关闭SSH连接
    ssh.close()

    # 保存备份文件
    filename = f'{switch_ip}.cfg'
    os.system(f'tftp -g -r backup.cfg 10.0.0.1')
    os.rename('backup.cfg', filename)

    print(f'交换机 {switch_ip} 的配置文件备份完成,保存为 {filename}。')

三、思科

import paramiko
import time
import os

# 创建SSH客户端对象
ssh = paramiko.SSHClient()

# 自动添加主机密钥
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

# 配置SSH连接信息
username = 'username'  # SSH用户名
password = 'password'  # SSH密码
port = 22  # SSH端口号

# 读取交换机列表
with open('switch_list.txt') as f:
    switch_list = f.read().splitlines()

# 遍历交换机列表,备份配置文件
for switch_ip in switch_list:
    print(f'正在备份交换机 {switch_ip} 的配置文件...')
    
    # 建立SSH连接
    ssh.connect(switch_ip, port=port, username=username, password=password, timeout=10)

    # 发送命令
    ssh.exec_command('enable')
    time.sleep(1)
    ssh.exec_command('terminal length 0')
    time.sleep(1)
    ssh.exec_command('show running-config')
    time.sleep(5)

    # 获取输出结果
    output = ssh.recv(65535).decode('ascii')

    # 关闭SSH连接
    ssh.close()

    # 保存备份文件
    filename = f'{switch_ip}.cfg'
    with open(filename, 'w') as f:
        f.write(output)

    print(f'交换机 {switch_ip} 的配置文件备份完成,保存为 {filename}。')

四、锐捷

import telnetlib
import time
import os

# 配置Telnet连接信息
username = b'username\n'  # Telnet用户名,注意要使用字节串
password = b'password\n'  # Telnet密码,注意要使用字节串
port = 23  # Telnet端口号

# 读取交换机列表
with open('switch_list.txt') as f:
    switch_list = f.read().splitlines()

# 遍历交换机列表,备份配置文件
for switch_ip in switch_list:
    print(f'正在备份交换机 {switch_ip} 的配置文件...')

    # 建立Telnet连接
    tn = telnetlib.Telnet(switch_ip, port=port, timeout=10)

    # 登录
    tn.read_until(b'>>User name:', timeout=5)
    tn.write(username)
    tn.read_until(b'>>User password:', timeout=5)
    tn.write(password)

    # 发送命令
    tn.write(b'enable\n')
    tn.write(password)
    tn.write(b'display current-configuration\n')
    time.sleep(5)

    # 获取输出结果
    output = tn.read_very_eager().decode('gbk')

    # 关闭Telnet连接
    tn.write(b'quit\n')
    tn.close()

    # 保存备份文件
    filename = f'{switch_ip}.cfg'
    with open(filename, 'w') as f:
        f.write(output)

    print(f'交换机 {switch_ip} 的配置文件备份完成,保存为 {filename}。')

五、Juniper

import paramiko
import time
import os

# 创建SSH客户端对象
ssh = paramiko.SSHClient()

# 自动添加主机密钥
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

# 配置SSH连接信息
username = 'username'  # SSH用户名
password = 'password'  # SSH密码
port = 22  # SSH端口号

# 读取交换机列表
with open('switch_list.txt') as f:
    switch_list = f.read().splitlines()

# 遍历交换机列表,备份配置文件
for switch_ip in switch_list:
    print(f'正在备份交换机 {switch_ip} 的配置文件...')
    
    # 建立SSH连接
    ssh.connect(switch_ip, port=port, username=username, password=password, timeout=10)

    # 发送命令
    ssh.exec_command('configure exclusive')
    time.sleep(1)
    ssh.exec_command('show')
    time.sleep(5)

    # 获取输出结果
    output = ssh.recv(65535).decode('ascii')

    # 关闭SSH连接
    ssh.close()

    # 保存备份文件
    filename = f'{switch_ip}.cfg'
    with open(filename, 'w') as f:
        f.write(output)

    print(f'交换机 {switch_ip} 的配置文件备份完成,保存为 {filename}。')

六、脚本说明

以上脚本使用了Paramiko库来实现SSH连接和命令执行,使用了os库来进行文件操作。在使用脚本前,请确保已经安装好Paramiko库并且已经将需要备份的交换机的IP地址列表保存在名为switch_list.txt的文件中,每行一个IP地址。另外,需要将脚本中的username和password替换成实际的值。注意,Juniper交换机的备份命令与其他厂商的命令略有不同。

另外,由于华为和H3C设备的配置命令几乎一致,思科和锐捷设备的配置命令也几乎一致,所以写出来的脚本也差不多一样,大家在练习或者使用的时候注意一下就好。

总结

本文给大家介绍了五个厂商(华为、H3C、思科、锐捷、Juniper)批量备份交换机配置的Python脚本,希望对您有所帮助!如果您还想了解或者学习更多针对网络设备配置的Python脚本,欢迎在下方评论区留言!

目录
相关文章
|
22天前
|
监控 安全 程序员
Python日志模块配置:从print到logging的优雅升级指南
从 `print` 到 `logging` 是 Python 开发的必经之路。`print` 调试简单却难维护,日志混乱、无法分级、缺乏上下文;而 `logging` 支持级别控制、多输出、结构化记录,助力项目可维护性升级。本文详解痛点、优势、迁移方案与最佳实践,助你构建专业日志系统,让程序“有记忆”。
140 0
|
3月前
|
JSON 算法 API
深度分析小红书城API接口,用Python脚本实现
小红书作为以UGC内容为核心的生活方式平台,其非官方API主要通过移动端抓包解析获得,涵盖内容推荐、搜索、笔记详情、用户信息和互动操作等功能。本文分析了其接口体系、认证机制及请求规范,并提供基于Python的调用框架,涉及签名生成、登录态管理与数据解析。需注意非官方接口存在稳定性与合规风险,使用时应遵守平台协议及法律法规。
|
3月前
|
JSON API 数据安全/隐私保护
【干货满满】分享微店API接口到手价,用python脚本实现
微店作为知名社交电商平台,其开放平台提供商品查询、订单管理等API接口。本文介绍如何通过微店API获取商品到手价(含优惠、券等),涵盖认证机制、Python实现及关键说明。
|
3月前
|
JSON API 数据安全/隐私保护
【干货满满】分享淘宝API接口到手价,用python脚本实现
淘宝开放平台通过API可获取商品到手价,结合商品详情与联盟接口实现优惠计算。需使用AppKey、AppSecret及会话密钥认证,调用taobao.tbk.item.info.get接口获取最终价格。代码示例展示签名生成与数据解析流程。
|
3月前
|
JSON API 数据安全/隐私保护
深度分析苏宁API接口,用Python脚本实现
苏宁易购开放平台提供覆盖商品、订单、库存、门店等零售全链路的API服务,采用RESTful架构与“AppKey+AppSecret+签名”认证机制,支持线上线下一体化业务处理。本文详解其API特性、认证流程及Python调用实现。
|
3月前
|
自然语言处理 安全 API
深度分析洋码头API接口,用Python脚本实现
洋码头是国内知名跨境电商平台,专注于海外商品直购。本文基于其API的通用设计逻辑,深入解析了认证机制、签名规则及核心接口功能,并提供了Python调用示例,适用于商品与订单管理场景。
|
3月前
|
JSON API 数据格式
深度分析易贝API接口,用Python脚本实现
本文深度解析了eBay开放平台的RESTful API接口体系,涵盖其核心功能、OAuth 2.0认证机制、请求规范及限流策略,并基于Python构建了完整的API调用框架。内容包括商品与订单管理接口的实现逻辑、认证流程、错误处理机制及实战调用示例,适用于跨境电商系统开发与多平台集成。
|
3月前
|
JSON API 数据格式
深度分析大麦网API接口,用Python脚本实现
大麦网为国内领先演出票务平台,提供演唱会、话剧、体育赛事等票务服务。本文基于抓包分析其非官方接口,并提供Python调用方案,涵盖演出列表查询、详情获取及城市列表获取。需注意非官方接口存在稳定性风险,使用时应遵守平台规则,控制请求频率,防范封禁与法律风险。适用于个人学习、演出信息监控等场景。
|
2月前
|
JSON 缓存 开发者
淘宝商品详情接口(item_get)企业级全解析:参数配置、签名机制与 Python 代码实战
本文详解淘宝开放平台taobao.item_get接口对接全流程,涵盖参数配置、MD5签名生成、Python企业级代码实现及高频问题排查,提供可落地的实战方案,助你高效稳定获取商品数据。
|
3月前
|
JSON API 开发者
深度分析阿里妈妈API接口,用Python脚本实现
阿里妈妈是阿里巴巴旗下营销平台,提供淘宝联盟、直通车等服务,支持推广位管理、商品查询等API功能。本文详解其API调用方法,重点实现商品推广信息(佣金、优惠券)获取,并提供Python实现方案。

推荐镜像

更多
下一篇
开通oss服务