この製品のマニュアルセットは、偏向のない言語を使用するように配慮されています。このマニュアルセットでの偏向のない言語とは、年齢、障害、性別、人種的アイデンティティ、民族的アイデンティティ、性的指向、社会経済的地位、およびインターセクショナリティに基づく差別を意味しない言語として定義されています。製品ソフトウェアのユーザーインターフェイスにハードコードされている言語、RFP のドキュメントに基づいて使用されている言語、または参照されているサードパーティ製品で使用されている言語によりドキュメントに例外が存在する場合があります。シスコのインクルーシブランゲージに対する取り組みの詳細は、こちらをご覧ください。
このドキュメントは、米国シスコ発行ドキュメントの参考和訳です。リンク情報につきましては、日本語版掲載時点で、英語版にアップデートがあり、リンク先のページが移動/変更されている場合がありますことをご了承ください。あくまでも参考和訳となりますので、正式な内容については米国サイトのドキュメントを参照ください。
目次
この章では、Cisco NX-OS デバイス上で tcl を対話的に実行する方法とスクリプトで実行する方法について説明しており、以下の項で構成されています。
ご使用のソフトウェア リリースで、このモジュールで説明されるすべての機能がサポートされているとは限りません。 最新の警告および機能情報については、https://tools.cisco.com/bugsearch/ の Bug Search Tool およびご使用のソフトウェア リリースのリリース ノートを参照してください。 このモジュールで説明される機能に関する情報、および各機能がサポートされるリリースの一覧については、「新機能および変更された機能に関する情報」の章を参照してください。
tcl(Tool Command Language)は、カリフォルニア大学バークレー校の John Ousterhout が作成したスクリプト言語です。 tcl 8.5 は、スクリプト作成機能を提供するために、Cisco NX-OS Release 5.1(1) に追加されました。 tcl を使用すると、デバイスの CLI コマンドをより柔軟に使用できます。 tcl を使用して show コマンドの出力の特定の値を抽出したり、スイッチを設定したり、Cisco NX-OS コマンドをループで実行したり、スクリプトで EEM ポリシーを定義したりすることができます。
ここでは、Cisco NX-OS デバイスで tcl スクリプトを実行する方法や、tcl を対話的に実行する方法について説明します。
tcl 設定時の注意事項と制限事項は次のとおりです。
tcl コマンドでは、コマンドのヘルプは使用できません。 インタラクティブ tcl シェル内から Cisco NX-OS コマンドのヘルプ機能に引き続きアクセスできます。
次に、インタラクティブ tcl シェルで tcl コマンドのヘルプがない場合の例を示します。
switch# tclsh switch-tcl# set x 1 switch-tcl# puts ? ^ % Invalid command at '^' marker. switch-tcl# configure ? <CR> session Configure the system in a session terminal Configure the system from terminal input switch-tcl#
![]() (注) |
上の例では、Cisco NX-OS コマンドのヘルプ機能が引き続き使用できますが、tcl の puts コマンドはヘルプ機能からのエラーを返します。 |
端末で矢印キーを使用して、以前にインタラクティブ tcl シェルで入力したコマンドにアクセスできます。
![]() (注) |
インタラクティブ tcl シェルを終了すると、tclsh コマンドの履歴は保存されません。 |
インタラクティブ tcl シェルを実行している場合は、Cisco NX-OS コマンドのタブ補完を使用できます。 tcl コマンドでは、タブ補完は使用できません。
インタラクティブ tcl シェル内から直接 Cisco NX-OS コマンドにアクセスできますが、 tcl cli コマンドにより付加される場合のみ tcl スクリプト内で Cisco NX-OS コマンドを実行できます。
インタラクティブ tcl シェルでは、次のコマンドは同じであり、正しく実行されます。
switch-tcl# cli show module 1 | incl Mod switch-tcl# cli "show module 1 | incl Mod" switch-tcl# show module 1 | incl Mod
tcl スクリプトで、次の例のように、Cisco NX-OS コマンドに tcl cli コマンドを付加する必要があります。
set x 1 cli show module $x | incl Mod cli "show module $x | incl Mod"
スクリプトで次のコマンドを使用すると、そのスクリプトは失敗し、tcl シェルにエラーが表示されます。
show module $x | incl Mod "show module $x | incl Mod"
セミコロン(;)は、Cisco NX-OS と tcl の両方でのコマンド区切りです。 tcl コマンドで複数の Cisco NX-OS コマンドを実行するには、各 Cisco NX-OS コマンドを引用符("")で囲む必要があります。
インタラクティブ tcl シェルでは、次のコマンドは同じであり、正しく実行されます。
switch-tcl# cli "configure terminal ; interface loopback 10 ; description loop10" switch-tcl# cli configure terminal ; cli interface loopback 10 ; cli description loop10 switch-tcl# cli configure terminal Enter configuration commands, one per line. End with CNTL/Z. switch(config-tcl)# cli interface loopback 10 switch(config-if-tcl)# cli description loop10 switch(config-if-tcl)#
インタラクティブ tcl シェルでは、tcl の cli コマンドを付加せずに、直接 Cisco NX-OS コマンドを実行することもできます。
switch-tcl# configure terminal Enter configuration commands, one per line. End with CNTL/Z. switch(config-tcl)# interface loopback 10 switch(config-if-tcl)# description loop10 switch(config-if-tcl)#
tcl 変数を Cisco NX-OS コマンドへの引数として使用できます。 また、tcl スクリプトに引数を渡すこともできます。 tcl 変数は永続的ではありません。
次の例では、tcl 変数を Cisco NX-OS コマンドへの引数として使用する方法を示します。
switch# tclsh switch-tcl# set x loop10 switch-tcl# cli "configure terminal ; interface loopback 10 ; description $x" switch(config-if-tcl)#
tclquit コマンドは、どの Cisco NX-OS コマンド モードが現在アクティブであるかには関係なく tcl シェルを終了します。 また、Ctrl+C を押して tcl シェルを終了することもできます。 exit コマンドと end コマンドは、Cisco NX-OS コマンド モードを変更します。 exit コマンドは、EXEC コマンド モードからのみ tcl シェルを終了します。
tcl シェルは、Cisco NX-OS システムの特定の部分への不正アクセスを防止するために、サンドボックスで実行されます。 システムは、無限ループや過剰なメモリ使用率などのイベントを検出するために、tcl シェルによって使用されている CPU、メモリ、ファイルなどのシステム リソースをモニタリングします。
初期の tcl 環境は、scripting tcl init init-file コマンドで設定します。
tcl 環境のループ制限は、scripting tcl recursion-limit iterations コマンドで定義できます。 デフォルトの再帰制限は 1000 回の繰り返しです。
tclsh コマンドを使用すると、スクリプトまたはコマンド ラインから tcl コマンドを実行できます。
![]() (注) |
CLI プロンプトの状態で tcl スクリプト ファイルを作成することはできません。 スクリプト ファイルはリモート デバイスで作成して、Cisco NX-OS デバイスの bootflash: ディレクトリにコピーすることができます。 |
次に、インタラクティブ tcl シェルの例を示します。
switch# tclsh switch-tcl# set x 1 switch-tcl# cli show module $x | incl Mod Mod Ports Module-Type Model Status 1 32 1/10 Gbps Ethernet Module N7K-F132XP-15 ok Mod Sw Hw Mod MAC-Address(es) Serial-Num Mod Online Diag Status Left ejector CLOSE, Right ejector CLOSE, Module HW does support ejector based shutdown. switch-tcl# exit switch#
次の例は、tcl スクリプトの実行方法を示しています。
switch# show file bootflash:showmodule.tcl set x 1 while {$x < 19} { cli show module $x | incl Mod set x [expr {$x + 1}] } switch# tclsh bootflash:showmodule.tcl Mod Ports Module-Type Model Status 1 32 1/10 Gbps Ethernet Module N7K-F132XP-15 ok Mod Sw Hw Mod MAC-Address(es) Serial-Num Mod Online Diag Status Left ejector CLOSE, Right ejector CLOSE, Module HW does support ejector based shutdown. switch#
インタラクティブ tcl シェルの実行中に Cisco NX-OS のモードを変更できます。
次に、インタラクティブ tcl シェルから Cisco NX-OS のモードを変更する例を示します。
switch# tclsh switch-tcl# configure terminal Enter configuration commands, one per line. End with CNTL/Z. switch(config-tcl)# interface loopback 10 switch(config-if-tcl)# ? description Enter description of maximum 80 characters inherit Inherit a port-profile ip Configure IP features ipv6 Configure IPv6 features logging Configure logging for interface no Negate a command or set its defaults rate-limit Set packet per second rate limit shutdown Enable/disable an interface this Shows info about current object (mode's instance) vrf Configure VRF parameters end Go to exec mode exit Exit from command interpreter pop Pop mode from stack or restore from name push Push current mode to stack or save it under name where Shows the cli context you are in switch(config-if-tcl)# description loop10 switch(config-if-tcl)# tclquit Exiting Tcl switch#
次のタイトルは、参照のために示されています。
Mark Harrison (ed)、『Tcl/Tk Tools』、O'Reilly Media、ISBN 1-56592-218-2、1997 年
Mark Harrison および Michael McLennan、『Effective Tcl/Tk Programming』、Addison-Wesley、Reading、MA、USA、ISBN 0-201-63474-0、1998 年
John K. Ousterhout、『Tcl and the Tk Toolkit』、Addison-Wesley、Reading、MA、USA、ISBN 0-201-63337-X、1994 年
Brent B. Welch、『Practical Programming in Tcl and Tk』、Prentice Hall、Upper Saddle River、NJ、USA、ISBN 0-13-038560-3、2003 年
J Adrian Zimmer、『Tcl/Tk for Programmers』、IEEE Computer Society、John Wiley and Sons により出版、ISBN 0-8186-8515-8、1998 年
目次
この章では、Cisco NX-OS デバイス上で tcl を対話的に実行する方法とスクリプトで実行する方法について説明しており、以下の項で構成されています。
機能情報の確認
ご使用のソフトウェア リリースで、このモジュールで説明されるすべての機能がサポートされているとは限りません。 最新の警告および機能情報については、https://tools.cisco.com/bugsearch/ の Bug Search Tool およびご使用のソフトウェア リリースのリリース ノートを参照してください。 このモジュールで説明される機能に関する情報、および各機能がサポートされるリリースの一覧については、「新機能および変更された機能に関する情報」の章を参照してください。
tcl に関する情報
tcl(Tool Command Language)は、カリフォルニア大学バークレー校の John Ousterhout が作成したスクリプト言語です。 tcl 8.5 は、スクリプト作成機能を提供するために、Cisco NX-OS Release 5.1(1) に追加されました。 tcl を使用すると、デバイスの CLI コマンドをより柔軟に使用できます。 tcl を使用して show コマンドの出力の特定の値を抽出したり、スイッチを設定したり、Cisco NX-OS コマンドをループで実行したり、スクリプトで EEM ポリシーを定義したりすることができます。
ここでは、Cisco NX-OS デバイスで tcl スクリプトを実行する方法や、tcl を対話的に実行する方法について説明します。
注意事項と制約事項
- tclsh コマンドのヘルプ
- tclsh コマンドの履歴
- tclsh のタブ補完
- tclsh の CLI コマンド
- tclsh コマンドの区切り
- tcl 変数
- tclquit
- tclsh のセキュリティ
tclsh コマンドのヘルプ
tcl コマンドでは、コマンドのヘルプは使用できません。 インタラクティブ tcl シェル内から Cisco NX-OS コマンドのヘルプ機能に引き続きアクセスできます。
次に、インタラクティブ tcl シェルで tcl コマンドのヘルプがない場合の例を示します。
switch# tclsh switch-tcl# set x 1 switch-tcl# puts ? ^ % Invalid command at '^' marker. switch-tcl# configure ? <CR> session Configure the system in a session terminal Configure the system from terminal input switch-tcl#
(注)
上の例では、Cisco NX-OS コマンドのヘルプ機能が引き続き使用できますが、tcl の puts コマンドはヘルプ機能からのエラーを返します。
tclsh の CLI コマンド
インタラクティブ tcl シェル内から直接 Cisco NX-OS コマンドにアクセスできますが、 tcl cli コマンドにより付加される場合のみ tcl スクリプト内で Cisco NX-OS コマンドを実行できます。
インタラクティブ tcl シェルでは、次のコマンドは同じであり、正しく実行されます。
switch-tcl# cli show module 1 | incl Mod switch-tcl# cli "show module 1 | incl Mod" switch-tcl# show module 1 | incl Modtcl スクリプトで、次の例のように、Cisco NX-OS コマンドに tcl cli コマンドを付加する必要があります。
set x 1 cli show module $x | incl Mod cli "show module $x | incl Mod"スクリプトで次のコマンドを使用すると、そのスクリプトは失敗し、tcl シェルにエラーが表示されます。
show module $x | incl Mod "show module $x | incl Mod"tclsh コマンドの区切り
セミコロン(;)は、Cisco NX-OS と tcl の両方でのコマンド区切りです。 tcl コマンドで複数の Cisco NX-OS コマンドを実行するには、各 Cisco NX-OS コマンドを引用符("")で囲む必要があります。
インタラクティブ tcl シェルでは、次のコマンドは同じであり、正しく実行されます。
switch-tcl# cli "configure terminal ; interface loopback 10 ; description loop10" switch-tcl# cli configure terminal ; cli interface loopback 10 ; cli description loop10 switch-tcl# cli configure terminal Enter configuration commands, one per line. End with CNTL/Z. switch(config-tcl)# cli interface loopback 10 switch(config-if-tcl)# cli description loop10 switch(config-if-tcl)#インタラクティブ tcl シェルでは、tcl の cli コマンドを付加せずに、直接 Cisco NX-OS コマンドを実行することもできます。
switch-tcl# configure terminal Enter configuration commands, one per line. End with CNTL/Z. switch(config-tcl)# interface loopback 10 switch(config-if-tcl)# description loop10 switch(config-if-tcl)#tclsh のセキュリティ
tcl シェルは、Cisco NX-OS システムの特定の部分への不正アクセスを防止するために、サンドボックスで実行されます。 システムは、無限ループや過剰なメモリ使用率などのイベントを検出するために、tcl シェルによって使用されている CPU、メモリ、ファイルなどのシステム リソースをモニタリングします。
初期の tcl 環境は、scripting tcl init init-file コマンドで設定します。
tcl 環境のループ制限は、scripting tcl recursion-limit iterations コマンドで定義できます。 デフォルトの再帰制限は 1000 回の繰り返しです。
tclsh コマンドの実行
手順tclsh コマンドを使用すると、スクリプトまたはコマンド ラインから tcl コマンドを実行できます。
(注)
CLI プロンプトの状態で tcl スクリプト ファイルを作成することはできません。 スクリプト ファイルはリモート デバイスで作成して、Cisco NX-OS デバイスの bootflash: ディレクトリにコピーすることができます。
コマンドまたはアクション 目的 ステップ 1 tclsh [bootflash:filename [argument ... ]]
例:switch# tclsh ? <CR> bootflash: The file to runtcl シェルを開始します。
引数を指定せずに tclsh コマンドを実行すると、シェルは対話形式で実行され、標準入力から tcl コマンドを読み込んで、コマンドの結果とエラー メッセージを標準出力に出力します。 tclquit を入力するか、Ctrl+C を押すとインタラクティブ tcl シェルが終了します。
引数を指定して tclsh コマンドを実行すると、最初の引数は、tcl コマンドが記述されたスクリプト ファイルの名前になり、他の引数をスクリプトで変数として使用できます。
次に、インタラクティブ tcl シェルの例を示します。
switch# tclsh switch-tcl# set x 1 switch-tcl# cli show module $x | incl Mod Mod Ports Module-Type Model Status 1 32 1/10 Gbps Ethernet Module N7K-F132XP-15 ok Mod Sw Hw Mod MAC-Address(es) Serial-Num Mod Online Diag Status Left ejector CLOSE, Right ejector CLOSE, Module HW does support ejector based shutdown. switch-tcl# exit switch#次の例は、tcl スクリプトの実行方法を示しています。
switch# show file bootflash:showmodule.tcl set x 1 while {$x < 19} { cli show module $x | incl Mod set x [expr {$x + 1}] } switch# tclsh bootflash:showmodule.tcl Mod Ports Module-Type Model Status 1 32 1/10 Gbps Ethernet Module N7K-F132XP-15 ok Mod Sw Hw Mod MAC-Address(es) Serial-Num Mod Online Diag Status Left ejector CLOSE, Right ejector CLOSE, Module HW does support ejector based shutdown. switch#tclsh のコマンドによる Cisco NX-OS のモードの制御
手順
コマンドまたはアクション 目的 ステップ 1 tclsh
例:switch# tclsh switch-tcl#インタラクティブ tcl シェルを開始します。
ステップ 2 configure terminal
例:switch-tcl# configure terminal switch(config-tcl)#tcl シェルで Cisco NX-OS のコマンドを実行して、モードを変更します。
(注) tcl プロンプトが変化して、Cisco NX-OS コマンド モードになったことが示されます。
ステップ 3 tclquit
例:switch-tcl# tclquit switch#tcl シェルを終了し、開始モードに戻ります。
次に、インタラクティブ tcl シェルから Cisco NX-OS のモードを変更する例を示します。
switch# tclsh switch-tcl# configure terminal Enter configuration commands, one per line. End with CNTL/Z. switch(config-tcl)# interface loopback 10 switch(config-if-tcl)# ? description Enter description of maximum 80 characters inherit Inherit a port-profile ip Configure IP features ipv6 Configure IPv6 features logging Configure logging for interface no Negate a command or set its defaults rate-limit Set packet per second rate limit shutdown Enable/disable an interface this Shows info about current object (mode's instance) vrf Configure VRF parameters end Go to exec mode exit Exit from command interpreter pop Pop mode from stack or restore from name push Push current mode to stack or save it under name where Shows the cli context you are in switch(config-if-tcl)# description loop10 switch(config-if-tcl)# tclquit Exiting Tcl switch#tcl の参照
次のタイトルは、参照のために示されています。
Mark Harrison (ed)、『Tcl/Tk Tools』、O'Reilly Media、ISBN 1-56592-218-2、1997 年
Mark Harrison および Michael McLennan、『Effective Tcl/Tk Programming』、Addison-Wesley、Reading、MA、USA、ISBN 0-201-63474-0、1998 年
John K. Ousterhout、『Tcl and the Tk Toolkit』、Addison-Wesley、Reading、MA、USA、ISBN 0-201-63337-X、1994 年
Brent B. Welch、『Practical Programming in Tcl and Tk』、Prentice Hall、Upper Saddle River、NJ、USA、ISBN 0-13-038560-3、2003 年
J Adrian Zimmer、『Tcl/Tk for Programmers』、IEEE Computer Society、John Wiley and Sons により出版、ISBN 0-8186-8515-8、1998 年