百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

网络自动化-H3C设备开局自动配置

haoteby 2024-12-14 11:54 22 浏览

很多中大型项目中用到的设备比较多,一开始我们都是先安装后到现场一个设备一个设备的配置。后来聪明一点了,先把交换机在机房或库房配置好打上标签安装就行了,但这也需要很多的时间来处理,有没有一种简单的方法呢?肯定是有的!



先看官方链接的配置指导(https://www.h3c.com/cn/d_201711/1046618_30005_0.htm#_Toc499550665)

查阅了H3C官方资料(今天先说H3C),有4种方法。分析了一下这4种方法首先都是通过DHCP报文来获取的,
DHCP中除了获取IP地址和DNS地址等信息外还有

1.Option 67或file字段:用来获取配置文件名或远程启动文件的HTTP形式的URL;

2.Option 66:用来获取TFTP服务器域名;

3.Option 150:用来获取TFTP服务器IP地址。

这4种方法我大概说一下:

第一种是通过配置配置Option file字段通过TFTP获取配置文件,将配置文件作为自己的启动配置文件;

第二种和第三种是通过HTTP服务器来获取tc的配置文件和PY的配置文件的举例:

1.tcl配置文件方式 - 配置DHCP客户端远程启动配置文件为HTTP形式的URL

【dhcp-pool-1】bootfile-name http://192.168.1.40/device.tcl

在HTTP服务器创建配置文件device.tcl,文件内容如下:

return
system-view
telnet server enable
local-user user
password simple abcabc
service-type telnet
quit
user-interface vty 0 63
authentication-mode scheme
user-role network-admin
quit

比交换机配置多了个return

2.py配置文件方式 - 配置DHCP客户端远程启动配置文件为HTTP形式的URL。

[dhcp-pool-1]bootfile-name
http://192.168.1.40/device.py

在HTTP服务器创建配置文件device.py,文件内容如下:

import comware
comware.CLI(‘system-view ;telnet server enable ;local-user user ;password simple abcabc ;
service-type telnet ;quit ;user-interface vty 0 4 ;authentication-mode scheme ;
user-role network-admin ;quit ;interface Vlan-interface1 ;ip address dhcp-alloc ;return’)

相当于通过交换机的python引入系统的comware模块把命令发送给交换机。

第四种他是个案例,大概就是通过TFTP服务器把python文件和sn.txt文件下载到设备,解析sn.txt文件并修改设备的IRF成员编号做个一个堆叠的配置。

其实这4种方法都有缺陷,就还是不能自动化配置,因为实际需求交换机不可能都是一样的配置的,比如怎么实现SW1,SW2,SW3不同的配置呢?之前我是这样解决的:记录安装位置对应交换机的sn或者是mac地址,然后写一个配置文件放到tftp。配置文件一般就是配置用户开启Telnet,ssh,管理vlanif配置为自动获取,然后待到机房再通过crt具体一个一个配置。

最近一段时间学习了python,其实只学到了一点皮毛,查看了H3C交换机的python配置,结合了他的自动化配置的案例。

先看他的comware模块,comware可以实现2个功能:建立tftp或ftp链接,实现文件上传下载;下发CLI命令。如下:

import comware 
#引入comware
comware.Transfer('tftp', '192.168.0.2', 'main.cfg.cfg', 'flash:/main.cfg.cfg', user='', password='')
#登录tftp服务器下载配置文件main.cfg.cfg到flash
comware.CLI('startup saved-configuration flash:/main.cfg main;reboot force') 
#发送命令将配置文件main.cfg.cfg设置为启动配置文件并且重启设备。

下一步怎么识别设备呢?H3C有一条命令dis device manuinfo 可以查看到设备信息,比如型号;序列号;mac地址。(这里是模拟器的s6850,不同型号设备显示行数都是不一样的)



我们可以通过使用getout来获取命令行回显具体内容,比如第4行序列号:



我们得到SN为:DPPMWWB76;这样我们结合python的判断函数if-esif写一个这样的py脚本:

import comware

ls = comware.CLI('display dev m ;', False)
sn = ls.get_output()
if 'DPPMWWB76' in sn[4]: #如果第4行有DPPMWWB76字段

comware.Transfer('tftp', '192.168.0.2', 'SW-DPPMWWB76.cfg', 'flash:/main.cfg', user='', password='') #下载配置文件

comware.CLI('startup saved-configuration flash:/main.cfg main ;reboot force ') #将配置文件设置为启动文件并且重启设备。

elif '0e-85-5f-74-04-04' in lst5[5]:

#如果第5行有0e-85-5f-74-04-04字段

comware.Transfer('tftp', '192.168.0.2', 'SW-04-04.cfg', 'flash:/main.cfg', user='', password='') #下载配置文件

comware.CLI('startup saved-configuration flash:/main.cfg main ;reboot force ') #将配置文件设置为启动文件并且重启设备。

将脚本命名为down.py

DHCP配置:

dhcp server ip-pool vlan1

gateway-list 10.0.0.1

network 10.0.0.0 mask 255.255.255.0

bootfile-name test.py

tftp-server ip-address 10.0.0.2

PC将IP配置为10.0.0.2,使用3CDAEMO搭建TFTP服务器,把own.py SW-04-04.cfg SW-DPPMWWB76.cfg 3个文件放入tftp目录



然后开启没配置的交换机就可以了,模拟器没测试,经过真机测试是没有问题的,到这里就结束了吗?显然没有,还有个问题遇到标准的核心层-汇聚层-接入层这种网络拓扑的时候还是有点问题的,一般配置都会在级联口把vlan1 undo掉,如果汇聚层的设备开启后配置完成是不是接入层的设备就没办法自动配置了呢?再没undo vlan1的情况下可以还有一种方法就是:空配置的设备下载完py脚本以后在没有下载到自己的配置脚本时,它是每30秒再运行一次下载的脚本,所以开局配置时先把接入层的配置文件放入TFTP目录,过个3-5分钟再把汇聚层的脚本放进tftp目录就可以了。也可以通过3CDAEMO查看日志判断接入层设备是否全部下载完成,然后再放入汇聚层的设备。

后话-down.py和设备配置文件还可以通过python用jinjia2模板直接生成的,这个就留给网络自动化的同学们了。

想自学网络自动化的同学 推荐去王印老师,朱嘉盛课代表的知乎,以及购买他们联合创作的书籍《网络工程师的Python之路:网络运维自动化实战》第二版

# 相关目录:

# 王印老师的分享目录:
https://zhuanlan.zhihu.com/p/486260131

# 朱嘉盛课代表的分享目录:
https://zhuanlan.zhihu.com/p/370526806

本人第一次写作,欢迎同指导!

相关推荐

一日一技:用Python程序将十进制转换为二进制

用Python程序将十进制转换为二进制通过将数字连续除以2并以相反顺序打印其余部分,将十进制数转换为二进制。在下面的程序中,我们将学习使用递归函数将十进制数转换为二进制数,代码如下:...

十进制转化成二进制你会吗?#数学思维

六年级奥赛起跑线:抽屉原理揭秘。同学们好,我是你们的奥耀老师。今天一起来学习奥赛起跑线第三讲二进制计数法。例一:把十进制五十三化成二进制数是多少?首先十进制就是满十进一,二进制就是满二进一。二进制每个...

二进制、十进制、八进制和十六进制,它们之间是如何转换的?

在学习进制时总会遇到多种进制转换的时候,学会它们之间的转换方法也是必须的,这里分享一下几种进制之间转换的方法,也分享两个好用的转换工具,使用它们能够大幅度的提升你的办公和学习效率,感兴趣的小伙伴记得点...

c语言-2进制转10进制_c语言 二进制转十进制

#include<stdio.h>intmain(){charch;inta=0;...

二进制、八进制、十进制和十六进制数制转换

一、数制1、什么是数制数制是计数进位的简称。也就是由低位向高位进位计数的方法。2、常用数制计算机中常用的数制有二进制、八进制、十进制和十六进制。...

二进制、十进制、八进制、十六进制间的相互转换函数

二进制、十进制、八进制、十六进制间的相互转换函数1、输入任意一个十进制的整数,将其分别转换为二进制、八进制、十六进制。2、程序代码如下:#include<iostream>usingna...

二进制、八进制、十进制和十六进制等常用数制及其相互转换

从大学开始系统的接触计算机专业,到现在已经过去十几年了,今天整理一下基础的进制转换,希望给还在上高中的表妹一个入门的引导,早日熟悉这个行业。一、二进制、八进制、十进制和十六进制是如何定义的?二进制是B...

二进制如何转换成十进制?_二进制如何转换成十进制例子图解

随着社会的发展,电器维修由继电器时代逐渐被PLC,变频器,触摸屏等工控时代所替代,特别是plc编程,其数据逻辑往往涉及到数制二进制,那么二进制到底是什么呢?它和十进制又有什么区别和联系呢?下面和朋友们...

二进制与十进制的相互转换_二进制和十进制之间转换

很多同学在刚开始接触计算机语言的时候,都会了解计算机的世界里面大多都是二进制来表达现实世界的任何事物的。当然现实世界的事务有很多很多,就拿最简单的数字,我们经常看到的数字大多都是十进制的形式,例如:我...

十进制如何转换为二进制,二进制如何转换为十进制

用十进制除以2,除的断的,商用0表示;除不断的,商用1表示余0时结束假如十进制用X表示,用十进制除以2,即x/2除以2后为整数的(除的断的),商用0表示;除以2除不断的,商用1表示除完后的商0或1...

十进制数如何转换为二进制数_十进制数如何转换为二进制数举例说明

我们经常听到十进制数和二进制数,电脑中也经常使用二进制数来进行计算,但是很多人却不清楚十进制数和二进制数是怎样进行转换的,下面就来看看,十进制数转换为二进制数的方法。正整数转二进制...

二进制转化为十进制,你会做吗?一起来试试吧

今天孩子问把二进制表示的110101改写成十进制数怎么做呀?,“二进制”简单来说就是“满二进一”,只用0和1共两个数字表示,同理我们平常接触到的“十进制”是“满十进一”,只用0-9共十个数字表示。如果...

Mac终于能正常打游戏了!苹果正逐渐淘汰Rosetta转译

Mac玩家苦转译久矣!WWDC2025苹果正式宣判Rosetta死刑,原生游戏时代终于杀到。Metal4光追和AI插帧技术直接掀桌,连Steam都连夜扛着ARM架构投诚了。看到《赛博朋克2077》...

怎么把视频的声音提出来转为音频?音频提取,11款工具实测搞定

想把视频里的声音单独保存为音频文件(MP3/AAC/WAV/FLAC)用于配音、播客、听课或二次剪辑?本文挑出10款常用工具,给出实测可复现的操作步骤、优缺点和场景推荐。1)转换猫mp3转换器(操作门...

6个mp4格式转换器测评:转换速度与质量并存!

MP4视频格式具有兼容性强、视频画质高清、文件体积较小、支持多种编码等特点,适用于网络媒体传播。如果大家想要将非MP4格式的视频转换成MP4的视频格式的话,可以使用MP4格式转换器更换格式。本文分别从...