原标题:解读华为Datacom认证网络自动化开发之批量备份配置
有备方能无患,网络在割接、变更、维护时都需要备份配置,手工备份一台设备需要几分钟,几十台设备的网络就需要几小时,因此网络自动化和智能化是必然的趋势。华为已发布了
HCIP-Datacom-Network Automation Developer
,定位于培养数据通信网络领域具备网络自动化开发专业知识和技能水平的高级工程师,下面就让我们探索其中一个知识点:用Python实现自动化批量备份配置。
案例描述:
如图所示,三台CE12800交换机连成一个环形网络,交换机管理层路由打通,交换机配置为密码认证的STelnet服务器,CE1通过云连接NMS网络管理系统(案例中是本机Python运行环境)。在本机编写待备份设备的设备信息文件,含设备名称、管理IP、用户名和密码。编写Python脚本读取设备信息文件,编写用Paramiko SSH登陆设备,自动备份配置的函数,脚本对设备信息文件中的设备循环调用自动备份配置函数,实现自动批量备份配置到设备名称文件,并输出每个设备备份配置成功或失败的结果。
实现过程:
实现过程可以概括为三大步:连接并配置设备、编写设备信息文件和批量备份配置脚本、自动化批量备份配置。
一、连接并配置设备
按拓扑连接CE1、CE2、CE3、用云连接本机。CE1、CE2、CE3配置OSPF,宣告直连网段和Loopback,本机设CE1的GE1/0/0的IP为网关,基础配置略,配置成功后,本机能ping通三个设备的Loopback。
CE1、CE2、CE3配置STelnet,关键命令如下:
1.配置SSH服务器的VTY用户界面。
user-interface vty 0 4
authentication-mode aaa
user privilege level 3
protocol inbound ssh
2.在服务器端创建本地用户,将用户加入管理员组,并配置用户服务方式。
local-user client001 password irreversible-cipher Huawei@123
local-user client001 service-type ssh
local-user client001 level 3
local-user client001 user-group manage-ug
3.使能STelnet功能,在服务器端创建SSH用户,并配置认证方式为密码,服务类型为STelnet。
stelnet server enable
ssh user client001
ssh user client001 authentication-type password
ssh user client001 service-type stelnet
配置成功后,本机能STelnet登陆三个设备。
二、编写设备信息文件和批量备份配置脚本
1. 在Excel中编写待备份设备信息,格式如下, A、B、C、D列依次是设备名称、管理IP、SSH用户名、密码,每一行是一个待备份设备。另存为逗号分隔的CSV文件,本例中另存为IP_Password.csv文件。
CSV文件也可以用记事本编辑,用记事本打开,内容如下:
CE1,10.1.1.1,client001,Huawei@123
CE2,10.1.1.2,client001,Huawei@123
CE3,10.1.1.3,client001,Huawei@123
2. 编写Python脚本,脚本分为三大块:读取设备信息文件;用ParamikoSSH登陆设备,自动备份配置的函数;对待备份设备循环调用自动备份配置函数。脚本完整内容如下:
import paramiko
from time import sleep
'''把设备信息文件与Python脚本放在同一目录下。脚本将会:
创建空列表,打开设备信息文件,逐行遍历,去掉换行,逐行分割成列表,
列表加入空列表,形成设备信息二维列表,即二维列表中包含多个设备信息的列表。'''
devices = []
with open("IP_Password.csv") as f:
for line in f:
line = line.strip('n').split(',')
devices.append(line)
# 用Paramiko做一个Stelnet备份配置函数,自动登陆设备,把配置写入以设备名称命名的文件。
def backup(Name, IP, Username, Password):
ssh = paramiko.SSHClient
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy)
ssh.connect(hostname=IP,username=Username, password=Password)
cli = ssh.invoke_shell
cli.send('Nn')
sleep(1)
cli.send('screen-length 0 temporaryn')
cli.send('display cun')
sleep(3)
dis_cu = cli.recv(999999).decode
with open(Name+'.txt', 'w') as config:
config.write(dis_cu)
ssh.close
# 用for循环对待备份设备调用备份配置函数,批量备份配置,可以在本文件目录下查看备份文件。
print('已读取设备信息,开始逐个登陆设备,自动备份配置,请稍后……')
for device in devices:
backup(device[0], device[1], device[2], device[3])
print(device[0]+'备份配置成功。')
except:
print(device[0]+'备份配置失败,请检查后重试。')
脚本内容结束,几点说明:如果print(devices),会输出如下内容,[['CE1', '10.1.1.1', 'client001', 'Huawei@123'], ['CE2', '10.1.1.2','client001', 'Huawei@123'], ['CE3', '10.1.1.3', 'client001', 'Huawei@123']]。可以看出,是把每个设备的信息都读入一个列表,三个设备的三个列表又加入一个列表形成设备信息二维列表。备份配置函数中的cli.send('Nn'),密码认证方式会询问是否修改密码,发送N回车,选择不修改。备份配置函数中创建并打开以设备名称命名的txt文件,把配置写入该文件,实现了备份配置到设备名称文件。for循环对待备份设备调用备份配置函数,在try-except下调用,如果某个设备备份配置失败,会执行except下的某设备备份配置失败提示,不影响后续设备继续自动备份配置,且便于查看备份结果。
三、自动化批量备份配置
在安装了paramiko库的本机Python运行环境中,执行批量备份配置脚本,会读取设备信息,逐个登陆设备,自动备份配置。执行结果如下:
在脚本文件所在目录下查看,可以看到已经生成备份配置文件CE1.txt、CE2.txt、CE3.txt,打开文件查看,正是对应设备的备份配置,说明备份配置成功。
如果某个设备备份配置失败,如CE2的密码错误,执行结果如下,会提示CE2备份配置失败,但不影响后续设备继续自动备份配置。只需把备份失败的设备,检查后再次备份即可。
结果总结:
以上实现了设备的SSH自动化批量备份配置,属于设备开放可编程应用一例,可用于日常工作中,能大大节省时间。想了解SDN,网络自动化和智能化等更多精彩内容,可以学习华为认证HCIP-Datacom-NetworkAutomation Developer哦。
王学斌 华为认证讲师,通过HCIE-Transmission和HCIE-R&S Systems instructor认证,具有十年以上传输数通项目和培训经验,对网络自动化有深入研究。授课逻辑清晰,讲解透彻,能帮助学员更加深入地理解和应用华为技术。
返回搜狐,查看更多
责任编辑:
声明:该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。