この製品のマニュアルセットは、偏向のない言語を使用するように配慮されています。このマニュアルセットでの偏向のない言語とは、年齢、障害、性別、人種的アイデンティティ、民族的アイデンティティ、性的指向、社会経済的地位、およびインターセクショナリティに基づく差別を意味しない言語として定義されています。製品ソフトウェアのユーザーインターフェイスにハードコードされている言語、RFP のドキュメントに基づいて使用されている言語、または参照されているサードパーティ製品で使用されている言語によりドキュメントに例外が存在する場合があります。シスコのインクルーシブランゲージに対する取り組みの詳細は、こちらをご覧ください。
このドキュメントは、米国シスコ発行ドキュメントの参考和訳です。リンク情報につきましては、日本語版掲載時点で、英語版にアップデートがあり、リンク先のページが移動/変更されている場合がありますことをご了承ください。あくまでも参考和訳となりますので、正式な内容については米国サイトのドキュメントを参照ください。
目次
この章では、Cisco NX-OS デバイス上で tcl を対話的に実行する方法とスクリプトで実行する方法について説明しており、以下の項で構成されています。
tcl(Tool Command Language)は、カリフォルニア大学バークレー校の John Ousterhout が作成したスクリプト言語です。 Cisco NX-OS Release 5.1(1) には、tcl 8.5 が追加され、スクリプト機能が使用できるようになりました。 tcl を使用すると、デバイスで CLI コマンドを非常に柔軟に使用できます。 show コマンドの出力からの特定の値の抽出、スイッチの設定の実行、Cisco NX-OS コマンドのループでの実行、また EEM ポリシーの定義などに tcl を使用できます。
ここでは、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 スクリプトで Cisco NX-OS コマンドを実行できるのは、それらのコマンドに tcl の cli コマンドが付加されている場合だけです。
インタラクティブ 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#
次のタイトルは、参照のために示されています。