Python批量备份交换机

使用方法

一、
1、将devlist_IP目录及network_backup.py文件放在同一目录内
2、直接运行network_backup.py,即可完成自动批量备份交换机

二、目录说明
1、备份的文件统一存放至目录:net_config_backup,如无此文件夹,运行脚本后会自动创建
2、交换机登录信息统一存放至devlist.txt文本里,位置:devlist_IP\devlist.txt

三、
编辑目录devlist_IP里的devlist.txt,填入需要备份配置的交换机信息,每行一台
格式:
设备名称,设备厂家,IP,用户名,密码

注:厂家(huawei_对应华为,hp_comware_对应H3C,cisco_ios_对应思科、浪潮)

设备名(这里随便写),厂家(huawei,hp_comware,cisco_ios),IP,ssh用户名,ssh密码

例子:
LJQ,huawei,10.1.1.1,ljq,admin@123
huawei_2,huawei,10.1.1.2,dell,admin@123
huawei_3,huawei,10.1.1.3,test,admin@123
办公楼POE交换机,huawei,10.1.1.4,ljq,admin@12345
办公楼一楼交换机,huawei,10.1.1.5,ljq,admin@1234
from netmiko import ConnectHandler
import time
import os
import shutil
from multiprocessing.dummy import Pool
#python 3.10.5
#netmiko 4.1.1

#版本说明,此版本是多进程并行运行,登录设备使用的是SSH方式
#通过devlist_IP/devlist.txt文件读取登录信息
#生成以设备描述名称_登录IP_日期.log 命名的配置备份文件,存放在net_config_backup目录下对应的文件夹里

#定义全局变量
today = time.strftime("%Y%m%d-%H%M", time.localtime())    #获取本地时间,打印效果:20220806-2149
dis_config = 'dis cur'  #华为、H3C,查看配置命令
show_config = 'show run' # 思科查看配置命令
back_path = 'net_config_backup'  #文件路径,在此目录下存放不同时间段生成的备份目录

backuperror_result = [] #存放备份失败的结果
def ssh_session(devlist): ##定义备份函数

    list= devlist.split( ",") #以逗号分割字符串,生成列表

    hostname = str( list[0]) #设备名
    devtype = list[1] # 设备厂商
    ip = list[2] # 登陆ip
    name = list[3]  #登陆用户名
    devpasswd = list[4] #登陆密码

    if devtype == 'hp_comware':     #H3C设备
        net_connect = ConnectHandler(
            device_type=devtype,
            ip=ip,
            username=name,
            password=devpasswd,
        )
        logname =back_path + "/" + back_path +'_' + today + "/"+ hostname + "__" + ip + "__" + today + ".log"
        time.sleep(2)
        output = net_connect.send_command(dis_config)
        wr = open(logname, 'w', encoding='utf-8')
        wr.write(output)
        wr.close
    try:
        if devtype == 'huawei':     #华为设备
            net_connect = ConnectHandler(
                device_type=devtype,
                ip=ip,
                username=name,
                password=devpasswd,
            )
            logname =back_path + "/" + back_path +'_' + today + "/"+ hostname + "__" + ip + "__" + today + ".log"
            time.sleep(2)
            output = net_connect.send_command(dis_config)

            wr = open(logname, 'w', encoding='utf-8')
            wr.write(output)
            wr.close
    except:
        re_error = '连接'+hostname+'_'+ip+'失败'
        backuperror_result.append(re_error)  
        # print(re_error)
    else:
        re_yes = print('备份'+hostname+'_'+ip+'完成')
        backuperror_result.append(re_yes)

    if devtype == 'cisco_ios':      #思科浪潮设备
        net_connect = ConnectHandler(
            device_type=devtype,
            ip=ip,
            username=name,
            password=devpasswd,
        )
        logname =back_path + "/" + back_path +'_' + today + "/"+ hostname + "__" + ip + "__" + today + ".log"
        time.sleep(2)
        output = net_connect.send_command(show_config)
        wr = open(logname, 'w', encoding='utf-8')
        wr.write(output)
        wr.close     

start = time.time() #程序开始时间

if os.path.exists(back_path + "/" + back_path +'_'  + today + "/"): #判断文件夹是否存在,如有同名文件夹则删除
    shutil.rmtree(back_path + "/" + back_path +'_' + today + "/")  #删除已有文件夹
os.makedirs(back_path + "/" + back_path +'_' + today + "/") #创建文件夹
# time.sleep(2)   #停滞2S
with open(r'devlist_IP\devlist.txt','r',encoding='utf-8') as f: #读取登录信息
    devlist= f.readlines()  

SW_DL = [] #存放登录信息的列表
for line in devlist:
    line = line.replace('\n', '')   #去除\N
    line = line.replace(' ', '')   #去除空格
    SW_DL.append(line)  #将每一行登录信息存进列表里

# 实例化一个进程池
pool = Pool()
# 调用进程执行函数
pool.map(ssh_session,SW_DL)

end = time.time()#程序结束时间
for i in backuperror_result:
    if i !=None:
        print(i)
print ('备份完成,用时:'+ str(end-start))
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇