正文共:1666 字 10图,预估阅读时间:4 分钟
通过前面两篇文章(ZTP自动化方式部署网络设备、利用自动配置功能实现设备的批量零配置上线),我们已经可以实现设备的批量上线,设备批量零接触配置上线的流程总结如下:
先记录设备的MAC地址,然后通过手工绑定DHCP来使设备获取指定的IP地址,再通过配置network.cfg或DNS服务器使设备可以反向解析得到自己的主机名,再从TFTP服务器上拉取与设备名称对应的配置文件,最后完成配置加载。
上次也提到,管理员将配置文件保存在文件服务器上,设备在启动时可以自动从文件服务器上获取并执行配置文件,设备每次启动直接从服务器获取配置,以后的设备都可以不用配置Flash存储了。
其实这里面有个问题,那就是下发配置没有办法自动保存,那怎么办呢?


这里就要提一下H3C Comware V7系统内嵌的TCL(Tool Command Language,工具命令语言)解析器了,它可以支持直接在设备上执行TCL脚本命令。
对于Comware系统的命令,TCL配置视图相当于用户视图,配置方式同用户视图下的配置。
在TCL配置视图下编辑命令时,遵循以下约定:
1、cli命令是TCL脚本命令,不支持输入“?”键获得在线帮助和Tab键补全功能。
2、已经成功执行的Comware系统的命令会记录在历史命令缓冲区中,使用上下光标键可以调用执行过的命令;但是已经成功执行的TCL脚本命令不会记录在历史命令缓冲区中。
3、在TCL中定义的环境变量可以应用到Comware系统的命令。
通过以下三种方式,可以一次执行多条Comware命令:
1、在同一行连续键入多条Comware系统的命令,命令间用分号隔开,多条命令会一起下发,按照下发顺序执行。例如interface GigabitEthernet0/0;ip address dhcp-alloc。
2、在cli命令后连续键入需要执行的多条Comware命令,每条Comware命令之间使用空格加分号进行分隔,在第一条Comware命令的前方和最后一条Comware命令的后方添加英文格式的双引号。例如cli "interface GigabitEthernet0/0;ip address dhcp-alloc"。
3、多次输入cli命令和Comware命令的组合,每组之间使用空格加分号分隔。例如cli interface GigabitEthernet0/0 ; cli ip address dhcp-alloc。


好,相信你对TCL配置已经有了一定了解,那么我们来写一份TCL配置文件device.tcl。
其实很简单,主要把正常配置里面的#号删掉(不删也可以),再增加一些辅助配置(如return、system-view等)、删掉一些无关配置(如版本号等)即可。
device.tcl文件内容如下:
#
return
system-view
#
sysname H3C
#
interface GigabitEthernet0/0
ip address dhcp-alloc
#
line con 0
0 0
#
return


还是上次那张随意的拓扑,实验环境为HCL。路由器MSR36-20(Version 7.1.075, Alpha 7571),是本次测试的自动配置上线设备;交换机S5820V2-54QS-GE(Version 7.1.075, Alpha 7571),承担DHCP服务器的角色;PC上安装HFS,作为存储设备配置的HTTP服务器。


服务器自动配置功能在空配置启动的设备上不需要进行任何配置,但需要在DHCP服务器上配置一些必需的参数,包括TFTP服务器地址、TFTP服务器名和启动文件名或远程启动文件的HTTP形式URL等。
使用TFTP服务器时,使用tftp-server ip-address命令配置了存放配置文件的服务器;而使用TCL配置时,需要使用bootfile-name命令配置DHCP客户端使用的启动文件名。
那么交换机的配置如下:
#
sysname DHCP-Server
#
dhcp enable
#
vlan 1
#
vlan 10
#
dhcp server ip-pool ztp
172.16.113.254
network 172.16.113.0 mask 255.255.255.0
http://192.168.56.1/device.tcl
#
interface Vlan-interface1
ip address 172.16.113.254 255.255.255.0
#
interface Vlan-interface10
ip address 192.168.56.10 255.255.255.0
#
interface GigabitEthernet1/0/1
port link-mode bridge
#
interface GigabitEthernet1/0/2
port link-mode bridge
#
interface GigabitEthernet1/0/3
port link-mode bridge
#
interface GigabitEthernet1/0/4
port link-mode bridge
port access vlan 10


配置好电脑端的HFS,将配置文件放到指定目录下。
将MSR2开机启动,发现第一次竟然提示没有可用的接口,但是查看交换机的接口已经UP了,那就等第二次。
奇妙奇妙真奇妙,又是等第二次才获取到IP地址。
再回过来看自动配置上线过程,成功下载device.tcl,并成功执行脚本命令。
查看设备配置,咦?空配置,难道是不能有#号?
修改一下device.tcl文件内容:
return
system-view
sysname H5C
interface GigabitEthernet0/0
ip address dhcp-alloc
line con 0
idle-timeout 0 0
return
save force
再正常启动MSR3查看一下。
奇了怪了,还是不行,难道是用户视图下不支持return命令导致的?
再修改一下device.tcl文件内容,删掉return:
system-view
sysname H5C
interface GigabitEthernet0/0
ip address dhcp-alloc
line con 0
0 0
return
save force
再正常启动MSR4查看一下。
貌似可以了,看来官网案例有问题,不能加return命令。
从抓包看一下过程。
首先是设备通过DHCP获取IP地址,然后是请求device.tcl,下载之后直接运行。而且,因为是HTTP协议,可以直接看到请求的文件内容。


1、TCL命令和手工配置命令的方式、逻辑都比较像,但是要注意TCL文件的格式问题;
2、华三官网的命令示例不一定准确,因为用户视图不支持return命令,所以第一行用这个命令会直接跳出,#不报错。

长按二维码
关注我们吧

