开发者社区> wljslmz> 正文

如何写批量备份交换机配置的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脚本,欢迎在下方评论区留言!

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
20个华为路由器常用的Python脚本,网工写自动化脚本时候可以参考!
20个华为路由器常用的Python脚本,网工写自动化脚本时候可以参考!
85 0
如何编写网络设备割接方案?这七个步骤要牢记!
如何编写网络设备割接方案?这七个步骤要牢记!
58 0
MyKtv点歌系统前台主要功能实现,内附数据库脚本,可以直接运行
MyKtv点歌系统前台主要功能实现,内附数据库脚本,可以直接运行
92 0
环境管理3阶段:从说明书到命令到说明式|学习笔记
快速学习环境管理3阶段:从说明书到命令到说明式
58 0
作业收缴系统使用手册(自写开源小系统)
系统概述:写了个作业收缴系统。系统旨在优化作业上交流程,解决收缴作业的繁琐过程,传统收缴作业基于qq文件,或者邮箱收发。需要大量的人工操作和精力取维护。而本系统将作业系统部署到服务器,大大方便了教师/收作业者对作业的管理。系统简单易用。能够满足大部分需求。项目已开源,可以自己使用或者二次开发等等。欢迎star!!
104 0
作业收缴系统设计手册(自写开源小系统)
系统旨在优化作业上交流程,解决收缴作业的繁琐过程,传统收缴作业基于qq文件,或者邮箱收发。需要大量的人工操作和精力取维护。而本系统将作业系统部署到服务器,大大方便了教师/收作业者对作业的管理。系统精美简单易用。能够满足大部分需求。项目已开源,可以自己使用或者二次开发等等。欢迎star?!!
146 0
Python自动化办公小程序:实现报表自动化和自动发送到目的邮箱
Python自动化办公小程序:实现报表自动化和自动发送到目的邮箱
101 0
SDN 作业提示器(持续更新)(4)
SDN 作业提示器(持续更新)(4)
71 0
万字长文解析删除Topic流程领导再也不用担心我排查生产环境问题了(附教学视频,建议收藏!!!)
万字长文解析删除Topic流程领导再也不用担心我排查生产环境问题了(附教学视频,建议收藏!!!)
117 0
十分钟上线- CodeIgniter 项目迁移到函数计算
阿里云函数计算 Function Compute(FC),旨在帮助用户采用弹性伸缩、动态分配资源的方式,来执行业务函数。让用户无需购买部署服务器,无需考虑业务负载,就能快速搭建可处理高并发的后台服务。
505 0
十分钟上线-CodeIgniter项目迁移到函数计算
前言 阿里云函数计算 Function Compute(FC),旨在帮助用户采用弹性伸缩、动态分配资源的方式,来执行业务函数。让用户无需购买部署服务器,无需考虑业务负载,就能快速搭建可处理高并发的后台服务。
1077 0
纯手工搭建k8s集群-(一)预先准备环境
1. 准备服务器 这里准备了三台ubuntu虚拟机,每台一核cpu和2G内存,配置好root账户,并安装好了docker,后续的所有操作都是使用root账户。虚拟机具体信息如下表: 系统类型 IP地址 节点角色 CPU Memory Hostname ubuntu16.
1748 0
+关注
wljslmz
公众号:网络技术联盟站,InfoQ签约作者,阿里云社区签约作者,华为云 云享专家,BOSS直聘 创作王者,腾讯课堂创作领航员,博客+论坛:https://www.wljslmz.cn,工程师导航:https://www.wljslmz.com
文章
问答
视频
相关电子书
更多
双剑合璧-Python和大数据计算平台的结合
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载