前言:
最近一直在研究如何使用python对网络设备进行配置文件备份,经过半天的研究终于实现对几十台交换机进行自动备份。
准备工作:
1.python环境搭建,我使用的是python3.9和pycharm;
2.安装os、netmiko、 time、re、multiprocessing.dummy模块;
3.准备一个放IP地址的文本文件,我这里用的是ip.txt;
4.SecureCRT.exe用来登陆设备分析参数。
代码:
import os
from netmiko import ConnectHandler
import time
import re
from multiprocessing.dummy import Pool
user = 'admin'
psd = 'xxxxxxxxxx'
dev = 'huawei'
# 获取当前时间
today = time.strftime("%Y%m%d-%H%M", time.localtime())
# 如果不存在此文件夹就创建文件夹
if not os.path.exists(today):
os.makedirs(today)
# add = open('ip.txt', 'r')
def get_text(ip):# 定义函数获取配置文件
connect = ConnectHandler(device_type=dev, host=ip, username=user, password=psd)
# 向设备发送命令并获取显示的文本
connect.send_command('screen-length disable')
output = connect.send_command('dis cu')
# 匹配管理地址
ex = 'interface Vlan-interface1.*?ip address (.*?) 255.255.255.0'
re_ip = re.findall(ex, output, re.S)[0]
re_ip_txt = re_ip + '.txt'
# 保存配置文件
path = today + '/' + re_ip_txt
with open(path, 'w', encoding='utf-8') as fp:
fp.write(output)
# 获取文本里面的ip
ipad = []
add = open('ip.txt', 'r')
for ips in add:
ipad.append(ips)
# 实例化一个进程池
pool = Pool(10)
# 调用进程执行函数
pool.map(get_text, ipad)
# 关闭打开的文件
add.close()
结果:
总结:
总体来说还是比较顺利,第一次执行的时候有两个设备没有备份,后面发现是因为这两台设备需要对终端进行身份验证,使用SecureCRT.exe登陆一下设备就可以了,然后在执行脚本就没有任何问题了。
这个脚本可以更具需要进行改动,对于刚入门的小伙伴来说非常友善,有什么问题也可以给我留言,我们一起学习交流。
最后祝大家事业有成,身强体健!