03-Tcl配置
本章節下載: 03-Tcl配置 (185.61 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/AUX用戶線的連接。有關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係統的命令,命令間用分號隔開。多條命令會按順序下發並執行。例如vlan 2;description Tech。
¡ 在cli命令後連續鍵入需要執行的多條Comware命令,每條Comware命令之間使用空格加分號進行分隔,在第一條Comware命令的前方和最後一條Comware命令的後方添加英文格式的雙引號。例如cli "vlan 2 ;description Tech"。
¡ 多次輸入cli命令和Comware命令的組合,每組之間使用空格加分號分隔。例如cli vlan 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,1)
用來獲取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表示設備在IRF中的成員編號,slot-number表示單板所在的槽位號,CPU-number表示單板上主CPU的編號,role表示單板的角色,status表示單板的狀態。
【舉例】
# 使用Tcl API獲取指定slot的信息。
<Sysname> tclsh
<Sysname-tcl> ::comware::get_slot_info 1
【結果】
Chassis Slot 1 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保留在沒有任何通知或提示的情況下對資料內容進行修改的權利!