Tcl について
Tcl (「ティックル」と発音) は、CLI コマンドの柔軟性を高めるスクリプト言語です。Tcl を使用して show コマンドの出力の特定の値を抽出したり、スイッチを設定したり、Cisco NX-OS コマンドをループで実行したり、スクリプトで Embedded Event Manager(EEM)ポリシーを定義したりすることができます。
このセクションでは、Tcl スクリプトを実行する方法、またはスイッチで Tcl を対話的に実行する方法について説明します。
注意事項と制約事項
一部のプロセスおよび show コマンドでは、大量の出力が発生する可能性があります。スクリプトを実行していて、実行時間の長い出力を終了する必要がある場合は、Ctrl+C(Ctrl+Z ではなく)を使用してコマンド出力を終了します。Ctrl+Z を使用すると、SIGCONT(信号継続)メッセージが生成され、スクリプトが停止する可能性があります。SIGCONT メッセージによって停止されたスクリプトは、動作を再開するためにユーザーの介入が必要です。
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 コマンドの履歴
端末で矢印キーを使用して、以前にインタラクティブ Tcl シェルで入力したコマンドにアクセスできます。
(注) |
インタラクティブ Tcl シェルを終了すると、 tclsh コマンドの履歴は保存されません。 |
tclsh のタブ補完
インタラクティブ Tcl シェルを実行している場合は、Cisco NX-OS コマンドのタブ補完を使用できます。Tcl コマンドでは、タブ補完は使用できません。
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 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"
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)#
tcl 変数
Tcl 変数を Cisco NX-OS コマンドへの引数として使用できます。また、Tcl スクリプトに引数を渡すこともできます。tcl 変数は永続的ではありません。
次の例は、Cisco NX-OS コマンドの引数として Tcl 変数を使用する方法を表示しています。
switch# tclsh
switch-tcl# set x loop10
switch-tcl# cli "configure terminal ; interface loopback 10 ; description $x"
switch(config-if-tcl)#
tclquit
tclquit コマンドは、どの Cisco NX-OS コマンド モードが現在現用系であるかには関係なく Tcl シェルを終了します。また、Ctrl+C を押して Tcl シェルを終了することもできます。exit と end Cisco NX-OS コマンドは、コマンド モードを変更します。exit コマンドは、EXEC コマンド モードからのみ Tcl シェルを終了します。
Tclsh セキュリティ
tcl シェルは、Cisco NX-OS システムの特定の部分への不正アクセスを防止するために、サンドボックスで実行されます。システムは、無限ループや過剰なメモリ使用率などのイベントを検出するために、tcl シェルによって使用されている CPU、メモリ、ファイルなどのシステム リソースをモニタリングします。
初期の tcl 環境は、scripting tcl init init-file コマンドで設定します。
scripting tcl recursion-limit iterations コマンドを使用して、tcl 環境のループ制限を定義できます。デフォルトの再帰制限は 1000 回の繰り返しです。