• 产品与解决方案
  • 行业解决方案
  • 服务
  • 支持
  • 合作伙伴
  • 新华三人才研学中心
  • 关于我们

02-基础配置指导

目录

09-Tcl配置

本章节下载 09-Tcl配置  (183.30 KB)

09-Tcl配置


1 Tcl

1.1  Tcl在Comware V9中的使用

ComwareV9系统内嵌了Tcl(Tool Command Language,工具命令语言)解析器,支持直接在设备上执行Tcl脚本命令,以实现通过Tcl脚本配置设备。

在用户视图下执行tclsh命令,会进入Tcl配置视图。为兼容Comware配置方式,在Tcl配置视图下,用户可以直接输入Tcl脚本命令,也可以输入Comware系统的命令。命令输入完成后,直接回车即可执行。

Tcl配置视图下,支持Tcl8.5版本的所有命令。

对于Comware系统的命令,Tcl配置视图相当于用户视图,配置方式同用户视图下的配置。

1.2  Tcl配置限制和指导

通过Tcl脚本配置设备或在Tcl配置视图下执行Comware命令的过程中,如需退回上一级视图,只能使用quit命令。如需退回Tcl配置视图,不能使用return命令,可以使用组合键<Ctrl+Z>。

1.3  通过Tcl脚本配置设备

1.3.1  配置限制和指导

在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.3.2  配置步骤

(1)     从用户视图进入Tcl配置视图。

tclsh

(2)     根据需求执行Tcl脚本。

Tcl command

(3)     从Tcl配置视图退回到用户视图。

¡     tclquit

¡     quit

1.4  在Tcl配置视图下执行Comware命令

1.4.1  功能简介

在Tcl配置视图下执行Comware命令有两种方式:一种是在Tcl配置视图下直接输入Comware命令,如果Tcl命令与Comware命令的命令字冲突,则执行Tcl命令;另一种是在Comware命令前添加cli命令关键字,该方式在Tcl命令与Comware命令的命令字冲突时能够优先执行Comware命令。

1.4.2  配置限制和指导

在Tcl配置视图下执行Comware命令时,遵循以下约定:

·     当Comware命令配置的字符串被特殊字符""或{}包围时,只有在特殊字符前加上\,该特殊字符才有效。例如,在接口视图下设置描述信息为"a"时,需要执行description \"a\";如果执行description "a",配置结果为description a。

·     Comware系统的命令支持输入“?”键获得在线帮助和Tab键补全功能。关于输入“?”键获得在线帮助和Tab键补全功能的详细描述,请参见“基础配置指导”中的“CLI”。

·     cli命令是Tcl脚本命令,不支持输入“?”键获得在线帮助和Tab键补全功能。

·     已经成功执行的Comware系统的命令会记录在历史命令缓冲区中,使用上下光标键可以调用执行过的命令。

·     通过以下三种方式,可以一次执行多条Comware命令:

¡     在同一行连续键入多条Comware系统的命令,命令间用分号隔开。多条命令会按顺序下发并执行。例如vlan 2;description Tech

¡     在cli命令后连续键入需要执行的多条Comware命令,每条Comware命令之间使用空格加分号进行分隔,在第一条Comware命令的前方和最后一条Comware命令的后方添加英文格式的双引号。例如cli "vlan 2 ;description Tech"

¡     多次输入cli命令和Comware命令的组合,每组之间使用空格加分号分隔。例如cli vlan 2 ;cli description Tech

1.4.3  配置步骤

(1)     从用户视图进入Tcl配置视图。

tclsh

(2)     执行Comware命令。

¡     直接执行Comware命令。

Command

¡     通过增加cli命令关键字执行Comware命令。

cli command

(3)     从Tcl配置视图退回到用户视图。

¡     tclquit

¡     quit


2 Comware扩展Tcl API

本文描述在Comware V9中提供的扩展Tcl API。

2.1  create-cli

用来创建CLI通道。

【命令】

::comware::create-cli

【使用指导】

CLI通道用于下发命令行配置(相关API为write-cli)。

多次执行本命令可以创建多个CLI通道。创建的CLI通道名称依次为cli0、cli1、……,以此类推。

不同的CLI通道之间互相独立,可看作不同的命令行终端。

【举例】

# 创建一个CLI通道。

<Sysname> tclsh

<Sysname-tcl> ::comware::create-cli

【结果】

cli0

2.2  destroy-cli

用来删除CLI通道。

【命令】

::comware::destroy-cli cli-channel-name

【参数】

cli-channel-name:已创建的CLI通道名称。

【举例】

# 删除已创建的CLI通道cli0。

<Sysname> tclsh

<Sysname-tcl> ::comware::destroy-cli cli0

2.3  write-cli

用来在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>

2.4  execute-shell-cmd

用来执行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

...

2.5  getmaxslotnumber

用来获取当前系统支持的最大slot编号。

【命令】

::comware::getmaxslotnumber

【使用指导】

该命令获取的是全局slot编号。

【举例】

# 使用Tcl API获取系统支持的最大slot编号。

<Sysname> tclsh

<Sysname-tcl> ::comware::getmaxslotnumber

【结果】

1

2.6  getminslotnumber

用来获取当前系统支持的最小slot编号。

【命令】

::comware::getminslotnumber

【举例】

# 使用Tcl API获取系统支持的最小slot编号。

<Sysname> tclsh

<Sysname-tcl> ::comware::getminslotnumber

【结果】

1

2.7  get_self_slot

用来获取主用主控板所在的槽位号。

【命令】

::comware::get_self_slot

【返回值】

设备上无主用主控板,返回一个列表对象,值始终为(-1,-1)。

【举例】

# 使用Tcl API获取主用主控板所在的槽位号。

<Sysname> tclsh

<Sysname-tcl> ::comware::get_self_slot

【结果】

(-1,-1)

2.8  get_slot_info

用来获取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,暂无意义。

【举例】

# 使用Tcl API获取指定slot的信息。

<Sysname> tclsh

<Sysname-tcl> ::comware::get_slot_info 1

【结果】

Chassis  Slot 1 Cpu 0 Role Master Status Normal

2.9  get_standby_slot

用来获取所有备用主控板所在的槽位号。

【命令】

::comware::get_standby_slot

【返回值】

设备上无备用主控板,始终返回空值。

【举例】

# 使用Tcl API获取备用主控板所在的槽位号。

<Sysname> tclsh

<Sysname-tcl> ::comware::get_standby_slot

2.10  transfer

用来将指定文件通过指定协议下载到本地。

【命令】

::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保留在没有任何通知或提示的情况下对资料内容进行修改的权利!

新华三官网
联系我们