02-Tcl配置
本章节下载: 02-Tcl配置 (184.09 KB)
目 录
ComwareV9系统内嵌了Tcl(Tool Command Language,工具命令语言)解析器,支持直接在设备上执行Tcl脚本命令,以实现通过Tcl脚本配置设备。
在用户视图下执行tclsh命令,会进入Tcl配置视图。为兼容Comware配置方式,在Tcl配置视图下,用户可以直接输入Tcl脚本命令,也可以输入Comware系统的命令。命令输入完成后,直接回车即可执行。
Tcl配置视图下,支持Tcl8.5版本的所有命令。
对于Comware系统的命令,Tcl配置视图相当于用户视图,配置方式同用户视图下的配置。
通过Tcl脚本配置设备或在Tcl配置视图下执行Comware命令的过程中,如需退回上一级视图,只能使用quit命令。如需退回Tcl配置视图,不能使用return命令,可以使用组合键<Ctrl+Z>。
在Tcl配置视图下编辑命令时,遵循以下约定:
· 用户需保证输入的Tcl脚本命令可以正确执行。
· 由于执行Tcl脚本命令过程无法使用快捷键或命令行方式中断,如果用户通过Telnet/SSH方式登录设备并执行脚本命令时出现问题,需要关闭当前连接来终止执行过程;如果用户通过Console口方式登录设备并执行脚本命令时出现问题,则可以通过重启设备或者通过其他方式登录设备执行free line命令断开该Console用户线的连接。有关free line命令的详细介绍,请参见“基础配置命令”中的“登录设备”。
建议用户通过Telnet/SSH方式登录设备并进入Tcl视图执行脚本命令。
· 在Tcl中定义的环境变量可以应用到Comware系统的命令。
· Tcl脚本命令不支持输入“?”键获得在线帮助和Tab键补全功能。
· 已经成功执行的Tcl脚本命令不会记录在历史命令缓冲区中。
· 通过Tcl脚本命令read stdin进行读取操作时,可以通过<Ctrl+D>结束读取。
(1) 从用户视图进入Tcl配置视图。
tclsh
(2) 根据需求执行Tcl脚本。
Tcl command
(3) 从Tcl配置视图退回到用户视图。
¡ tclquit
¡ quit
在Tcl配置视图下执行Comware命令有两种方式:一种是在Tcl配置视图下直接输入Comware命令,如果Tcl命令与Comware命令的命令字冲突,则执行Tcl命令;另一种是在Comware命令前添加cli命令关键字,该方式在Tcl命令与Comware命令的命令字冲突时能够优先执行Comware命令。
在Tcl配置视图下执行Comware命令时,遵循以下约定:
· 当Comware命令配置的字符串被特殊字符""或{}包围时,只有在特殊字符前加上\,该特殊字符才有效。例如,在接口视图下设置描述信息为"a"时,需要执行description \"a\";如果执行description "a",配置结果为description a。
· Comware系统的命令支持输入“?”键获得在线帮助和Tab键补全功能。关于输入“?”键获得在线帮助和Tab键补全功能的详细描述,请参见“基础配置指导”中的“CLI”。
· cli命令是Tcl脚本命令,不支持输入“?”键获得在线帮助和Tab键补全功能。
· 已经成功执行的Comware系统的命令会记录在历史命令缓冲区中,使用上下光标键可以调用执行过的命令。
· 通过以下三种方式,可以一次执行多条Comware命令:
¡ 在同一行连续键入多条Comware系统的命令,命令间用分号隔开。多条命令会按顺序下发并执行。例如vpn 2;description Tech。
¡ 在cli命令后连续键入需要执行的多条Comware命令,每条Comware命令之间使用空格加分号进行分隔,在第一条Comware命令的前方和最后一条Comware命令的后方添加英文格式的双引号。例如cli "vpn 2 ;description Tech"。
¡ 多次输入cli命令和Comware命令的组合,每组之间使用空格加分号分隔。例如cli vpn 2 ;cli description Tech。
(1) 从用户视图进入Tcl配置视图。
tclsh
(2) 执行Comware命令。
¡ 直接执行Comware命令。
Command
¡ 通过增加cli命令关键字执行Comware命令。
cli command
(3) 从Tcl配置视图退回到用户视图。
¡ tclquit
¡ quit
用来创建CLI通道。
【命令】
::comware::create-cli
【使用指导】
CLI通道用于下发命令行配置(相关API为write-cli)。
多次执行本命令可以创建多个CLI通道。创建的CLI通道名称依次为cli0、cli1、……,以此类推。
不同的CLI通道之间互相独立,可看作不同的命令行终端。
【举例】
# 创建一个CLI通道。
<Sysname> tclsh
<Sysname-tcl> ::comware::create-cli
【结果】
cli0
用来删除CLI通道。
【命令】
::comware::destroy-cli cli-channel-name
【参数】
cli-channel-name:已创建的CLI通道名称。
【举例】
# 删除已创建的CLI通道cli0。
<Sysname> tclsh
<Sysname-tcl> ::comware::destroy-cli cli0
用来在CLI通道中执行Comware命令。
【命令】
::comware::write-cli cli-channel-name command
【参数】
cli-channel-name:已创建的CLI通道名称。
command:表示要下发的Comware命令。命令前后需要添加英文格式的双引号。仅支持下发一条命令。
【使用指导】
CLI通道在后台下发命令,不显示任何输出信息,不支持下发需要和用户交互确认的命令。
CLI通道缺省从用户视图开始下发命令;当需要下发其他视图的命令时,需要先下发进入视图的命令,再下发具体的配置命令。
【举例】
# 在已创建的CLI通道cli0中下发命令进入系统视图,并修改设备名称为abc。
<Sysname> tclsh
<Sysname-tcl> ::comware::write-cli cli0 "system-view"
<Sysname-tcl> ::comware::write-cli cli0 "sysname abc"
<Sysname-tcl>
【结果】
<abc-tcl>
用来执行Comware命令。
【命令】
::comware::execute-shell-cmd command
【参数】
command:表示要下发的Comware命令。命令前后需要添加英文格式的双引号。多条命令之间以空格加分号分隔,例如"system-view ;sysname test"。
【使用指导】
下发命令从用户视图开始,如果command中不指定视图,直接输入命令,表示该命令在用户视图下执行;当需要执行其他视图的命令时,需要先输入进视图的命令,再输入具体的配置命令。
【举例】
# 使用Tcl API进入系统视图,修改设备名称为test,并执行ping命令。
<Sysname> tclsh
<Sysname-tcl> ::comware::execute-shell-cmd "system-view ;sysname test ;ping 192.168.56.1"
【结果】
<Sysname> system-view
System View: return to User View with Ctrl+Z.
[Sysname] sysname test
[test] ping 192.168.56.1
Ping 192.168.56.1 (192.168.56.1): 56 data bytes, press the char(ASCII 0) to break
56 bytes from 192.168.56.1: icmp_seq=0 ttl=128 time=1.000 ms
...
用来获取当前系统支持的最大slot编号。
【命令】
::comware::getmaxslotnumber
【使用指导】
该命令获取的是全局slot编号。
【举例】
# 使用Tcl API获取系统支持的最大slot编号。
<Sysname> tclsh
<Sysname-tcl> ::comware::getmaxslotnumber
【结果】
839
用来获取当前系统支持的最小slot编号。
【命令】
::comware::getminslotnumber
【举例】
# 使用Tcl API获取系统支持的最小slot编号。
<Sysname> tclsh
<Sysname-tcl> ::comware::getminslotnumber
【结果】
0
用来获取主用主控板所在的槽位号。
【命令】
::comware::get_self_slot
【返回值】
返回一个列表对象,格式为:(-1,slot-number),其中slot-number表示主用主控板所在的槽位号。
【举例】
# 使用Tcl API获取主用主控板所在的槽位号。
<Sysname> tclsh
<Sysname-tcl> ::comware::get_self_slot
【结果】
(-1,0)
用来获取slot信息。
【命令】
::comware::get_slot_info global-slot-number
【参数】
global-slot-number:全局slot编号。
【返回值】
返回一个字典对象,返回值始终为Chassis chassis-number Slot slot-number Cpu CPU-number Role role Status status。chassis-number表示设备的成员编号,slot-number表示单板所在的槽位号,CPU-number表示单板上主CPU的编号,role表示单板的角色,status表示单板的状态。
【举例】
# 使用Tcl API获取指定slot的信息。
<Sysname> tclsh
<Sysname-tcl> ::comware::get_slot_info 0
【结果】
Chassis Slot 0 Cpu 0 Role Master Status Normal
用来获取所有备用主控板所在的槽位号。
【命令】
::comware::get_standby_slot
【返回值】
返回一个列表对象,格式为:(-1,slot-number),其中slot-number表示备用主控板所在的槽位号。如果设备上没有备用主控板,则返回空值。
【举例】
# 使用Tcl API获取备用主控板所在的槽位号。
<Sysname> tclsh
<Sysname-tcl> ::comware::get_standby_slot
【结果】
(-1,1),(-1,2)
用来将指定文件通过指定协议下载到本地。
【命令】
::comware::transfer protocol server-ip source-file dest-file vpn-instance-name session-timeout user-name password
【参数】
protocol:表示下载文件时使用的协议。取值为:
· ftp:表示使用FTP协议传输文件。
· tftp:表示使用TFTP协议传输文件。
· http:表示使用HTTP协议传输文件。
server-ip:表示远程服务器的IP地址。
source-file:表示服务器上源文件的名称。
dest-file:表示保存到本地的目的文件的名称。
vpn-instance-name:指定目的端所属的MPLS L3VPN的VPN实例名称,为1~31个字符的字符串,区分大小写。
session-timeout:表示下载文件时连接超时时间,单位为秒,取值必须大于等于0。取值为0时,将使用超时时间300秒。
user-name:表示登录时使用的用户名称。
password:表示登录时使用的用户密码。
【举例】
# 使用Tcl API将FTP服务器上的文件“testfile”下载到设备上,目的文件名为“flash:/localfile.cfg”。
<Sysname> tclsh
<Sysname-tcl> ::comware::transfer ftp 192.168.3.76 testfile flash:/localfile.cfg vpn1 0 admin admin
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!