一个小测试,实现HCL
模拟器下利用python
脚本根据交换机的背板MAC地址(真机环境可以换成序列号)自动加载配置。
环境介绍:
HCL v5.7.1
Python 3.10.10
Tftpd64 version 4.60
步骤 编写python脚本 制作一个后缀名为.py
的脚本。主要作用是空配置交换机开机执行自动配置,下载到本地并执行文件
由于HCL模拟器里的交换机序列号都一样的,勉为其难改用背板MAC地址;如果是真机设备直接用序列号;脚本中预留了序列号的代码,简单修改一下便可
设备 H3C S6850_1: MAC_ADDRESS:68-bf-6d-ad-01-04
设备 H3C S6850_2: MAC_ADDRESS:68-45-dc-f1-02-04
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 #!/usr/bin/python #-*-coding:utf-8-*- import comware import platformtools def do_reboot(): # scheduler job reboot platformtools.CLI('system-view ;scheduler job startup_reboot ;command 1 reboot force ;quit') # exec-delay platformtools.CLI('system-view ;scheduler schedule do_reboot ;job startup_reboot ;time once delay 1') def apply_sw1_config(): # Specify system startup platformtools.CLI('restore startup-configuration from 172.31.100.2 sw1_config.cfg') do_reboot() def apply_sw2_config(): # Specify system startup platformtools.CLI('restore startup-configuration from 172.31.100.2 sw2_config.cfg') do_reboot() # more device ... # def apply_sw3_config(): # # Specify system startup # platformtools.CLI('restore startup-configuration from 172.31.100.2 sw3_config.cfg') # do_reboot() # find DEVICE_SERIAL_NUMBER res = platformtools.CLI('dis dev man', False) for i in res.get_output(): # if 'DEVICE_SERIAL_NUMBER' in i: if '68-bf-6d-ad-01-04' in i: apply_sw1_config() break if '68-45-dc-f1-02-04' in i: apply_sw2_config() break # more device ... # if 'DEVICE_SERIAL_NUMBER' in i: # apply_sw2_config() # break
准备设备配置文件
sw1_config.cfg
sw2_config.cfg
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 # sysname sw1_s6850 # telnet server enable ssh server enable # vlan 10 to 20 # int vlan 1 ip add 172.31.100.10 24 # int vlan 10 ip add 192.168.10.254 24 # interface GigabitEthernet 1/0/23 port link-type trunk port trunk permit vlan all undo shutdown # interface GigabitEthernet 1/0/24 port link-type trunk port trunk permit vlan all undo shutdown # local-user admin password simple Cisco123!@# authorization-attribute user-role network-admin authorization-attribute user-role network-operator service-type ssh telnet quit # line vty 0 63 authentication-mode scheme user-role network-operator # return
启动HTTP服务端 搭建一个简单的http服务端(可以使用网上的各种小工具,安全性自己判断),如果有python
环境可以直接启动一个简易的http服务端,搭建完成后使用浏览器打开链接,确保url
能正确指向第一步中的python脚本文件。
1 2 PS D:\TEMP\tftpd64.460> python -m http.server Serving HTTP on :: port 8000 (http://[::]:8000/) ...
浏览器URL测试
配置TFTP服务端和DHCP服务端参数
TFTP目录选择设备配置文件的目录
如果电脑有多块网卡,选择绑定需要用到的网卡IP地址
DHCP填写的Boot File 是python脚本文件的URL
Tips:为了方便使用建议把device.py
和设备.cfg
配置文件统一放到TFTP的目录下,http服务端的启动命令也在TFTP目录下启动。
启动测试
临时关闭本机环境中的其他DHCP服务端
HCL模拟器里的交换机桥接到本地
模拟器设备开机
TFTP软件观察发现已经分配两个地址
第一台S6850 启动,观察发现下载了device.py
文件,并按照py脚本
命令执行了一些配置
第二台S6850 启动,观察发现下载了device.py
文件,并按照py脚本
命令执行了一些配置
按照设定的1分钟后重启设备,观察到出现两次Press ENTER to get started.
表示已经重启了;设备名称也按照配置文件里的更改了
使用SSH登陆设备,能通过配置文件里配置的IP地址登陆设备
查看sw1的一些配置
结束
HCL模拟器的序列号一致不能通过序列号操作,实为憾事
这个方法可应用在一定规模的组网,前提条件是安装前要记录安装位置与设备序列号的对应关系
这个方法只能应用在完全空配置的设备,保存过配置的交换机就不能操作了
如果是真实设备使用,注意本机电脑的防火墙设置
前线安装人员要确定设备已加电和设备端口的指示灯状态
方法操作没有问题,但是有时候去实施,甲方看到你老是在电脑面前操作,这个体现不出工作量,需要注意,两天的活你半小时不到干完了
修改一下脚本,还能用在没有console线的环境下应急,同样确保设备是空配置启动
device.py
文件里的代码有一个重启设备的定时任务,由于是做实验我设置了1分钟后重启,如果是真实环境这个延时重启建议配置时间大一点