CiscoWorks Network Compliance Manager ユーザ ガイド 1.2
第 15 章: コマンド スクリプトの管理
第 15 章:コマンド スクリプトの管理
発行日;2012/02/04 | ドキュメントご利用ガイド | ダウンロード ; この章pdf , ドキュメント全体pdf (PDF - 3MB) | フィードバック

第 15 章:コマンド スクリプトの管理

次の表を使用すると、情報をすぐに見つけることができます。

 

トピック
参照先
はじめに
コマンド スクリプトの追加と編集
コマンド スクリプトの実行
コマンド スクリプトへのナビゲート

 

 

はじめに

コマンド スクリプトを定義して、1 つまたは複数のアクティブなデバイス上でコマンド セットを実行できます。コマンド スクリプトは、デバイスのグループに対してバッチ処理を行う場合に特に役に立ちます。たとえば、Inventory グループに対してスクリプトを実行して、すべてのデバイスを標準ポリシーに適合するように更新できます。具体的には、SNMP トラップ ロギング ホスト、NTP サーバ、企業のログイン バナーなどを設定できます。

Advanced Scripting 機能を使用すると、Expect や PERL など、さまざまなコマンドライン言語で作成されたカスタム スクリプトを実行できます。Advanced Scripting では、条件付きロジックの拡張機能を使用できます。拡張スクリプトは Expect エンジンの全機能をサポートする必要があるので、外部 Telnet/SSH クライアントが呼び出され、独立したプロセスで実行されます。Advanced Scripting 機能については、New Command Script ページのフィールドを参照してください。

(注)Advanced Scripting 機能を使用するには、言語サポートをインストールする必要があります。また、Administrative Settings でその言語をイネーブルに設定する必要があります。NCM には、Expect 言語サポートがインストールされています。PERL スクリプト対応の Windows 環境では、PERL(CPAN)をインストールする必要があります。

事前定義されたコマンド スクリプトおよびカスタム コマンド スクリプトのリストを表示するには、メニューバーの Devices の下で、Device Tools を選択して Command Scripts をクリックします。Command Scripts ページが開きます。このページには、ユーザが権限を持っているコマンド スクリプトのリストが表示されます。コマンド スクリプトにフル アクセスできるユーザは、CiscoWorks Network Compliance Manager(NCM)に付属する事前定義されたスクリプトを選択できます。

Command Scripts ページのフィールド
フィールド
説明/アクション
New Command Script リンク
New Command Script ページが開きます。このページでは、新しいスクリプトを作成したり、スクリプトから変数を取得してプロンプトを定義したりすることができます。詳細については、New Command Script ページのフィールドを参照してください。
Run Command Scripts リンク
Run Command Script Task ページが開きます。このページでは、コマンド スクリプトを実行するタスクを設定できます。タスクを保存する前に、スクリプト内の変数を編集して、スクリプトの一意のインスタンスを作成できます。詳細については、 Run Command Script Task ページのフィールドを参照してください。
Script Type
Script Type ドロップダウン メニューを使用すると、スクリプト リストをフィルタリングして、特定のタイプのスクリプトだけを表示できます。
チェックボックス
左側のチェックボックスを使用して、スクリプトを削除できます。スクリプトを選択したら、Actions ドロップダウン メニューをクリックし、Delete をクリックします。この操作により、選択したスクリプトが削除されます。隣接する Select ドロップダウン メニューを使用すると、すべてのスクリプトを選択または選択解除できます。
Name
スクリプトの名前が表示されます。
Mode/Device Family
Cisco Exec や Nortel Manager など、スクリプトを実行するデバイス アクセス モードが表示されます。Device Family は Advanced Scripting に使用され、類似の設定 CLI コマンド構文を共有するデバイスの集合を表示します。
Last Modified
スクリプトが最後に修正された日時が表示されます。
Created By
スクリプトを最後に修正したユーザの名前が表示されます。たとえば、スクリプトがスクリプト テンプレートの場合、特定のインスタンスに合せてスクリプトを修正したユーザが表示されます。
Actions
次のいずれかのオプションを選択できます。
コマンド スクリプトの追加

コマンド スクリプトを使用すると、次のことができます。

  • カスタム コマンド セットを 1 台以上のデバイスで実行する。
  • スケジュールされたタスクとしてスクリプトを実行し、イベント規則を使用してスクリプトの実行をトリガーする。たとえば、特定のタイプのデバイスが追加されたときに、そのデバイス タイプに標準値を設定する規則を用意することができます。

NCM には、スクリプトを追加するためのオプションがいくつかあります。次の作業を実行できます。

  • New Command Script ページにスクリプトを作成またはコピーし、必要に応じて変数の追加やプロンプトの定義を行う。
  • テンプレート スクリプトを作成する。ユーザはテンプレート スクリプトを使用して、スクリプトの実行前に変数の値を編集できます。詳細については、テンプレートからのスクリプトの作成を参照してください。
  • セッション ログを自動的にスクリプトに変換する。セッション ログから新しいスクリプトを作成するには、Telnet/SSH Session Log で Convert to Script をクリックします。セッション コマンドが Script ボックスにロードされる前の状態で、New Command Script ページが開きます。

NCM は簡易スクリプトと拡張スクリプトの両方をサポートしています。

簡易スクリプトは、モードベース(CLI コマンド言語)です。簡易コマンド スクリプトは、デバイスの CLI エラーを認識しないことに留意してください。このため、NCM では、デバイス CLI コマンドは正常に実行されたと見なされます。簡易コマンド スクリプトが失敗するのは、デバイスに到達できない場合や、スクリプトの実行中にデバイスとの接続が切断された場合だけです。

拡張スクリプトは、Expect や PERL などのコマンドライン スクリプト言語がベースになっており、条件付きロジック(if、while、および for の条件文)で記述されたスクリプトです。変数を組み込むことにより、スクリプトのインスタンスをカスタマイズすることができます。このようなスクリプトを実行すると、各変数の値を入力するように求められます。詳細については、次の表を参照してください。

 
簡易スクリプト
拡張スクリプト
  • if やループを使用しない
  • デバイス コマンド(show conf のようなシスコのコマンド)を使用する
  • エラーを処理しない
  • ログインを要求しない
  • NCM デバイス変数を使用しない
  • If やループを使用できる
  • 言語コマンド(send "show conf\n"、print SOCKET "show conf\n" などの PERL や Expect のコマンド)を使用する
  • エラーを処理できる
  • ログインするためのコードを要求する
  • NCM デバイス変数を使用できる

 

同じ名前を持つ複数のスクリプトを作成し、それらのすべてのスクリプトを単一タスクとして実行することにより、異なるタイプのデバイスに対して同じタスクを実行できます(これらのデバイスは、デバイス グループとして設定する必要があります)。このスクリプトの実行時に、グループ内のデバイスに適用されるスクリプトのインスタンスがすべて表示されます。たとえば、すべてのルータ上の NTP サーバを変更するスクリプトを実行できます。各ルータのベンダーが異なっていてもかまいません。同じ名前の複数のスクリプトを実行する場合、スクリプトの各インスタンスを編集できます。

新しいコマンド スクリプトを追加するには、次の手順を実行します。

  1. メニューバーの Devices の下で、Device Tools を選択し、Command Scripts をクリックします。Command Scripts ページが開きます。
  2. ページの上部にある New Command Script リンクをクリックします。New Command Script ページが開きます。作業が終了したら、必ず Save Script をクリックしてください。スクリプトが正常に保存されると、Command Scripts ページが開きます。追加したスクリプトがリストに表示され、強調表示されます。スクリプトは、タスクとしてスケジュールされない限り、実行されないことに留意してください。
(注)「tc_」で始まる変数は、特殊用途のために予約されています。この文字シーケンスで始まる変数は、カスタム スクリプトでも拡張スクリプトでも定義できません。

New Command Script ページのフィールド
フィールド
説明/アクション
Command Scripts リンク
Command Scripts ページが開きます。このページでは、コマンド スクリプトのリストを表示できます。詳細については、Command Scripts ページのフィールドを参照してください。
Name
新しいスクリプトの名前を入力します。
Description
スクリプトの説明を入力します。たとえば、テンプレートから作成されたスクリプトであるかどうかや、スクリプトの作成者などを入力します。
Script Type
次のいずれかのオプションを選択します。
  • General Purpose(デフォルト)
  • Existing:ドロップダウン メニューからスクリプトを選択します。
  • New:新しいスクリプト タイプを入力します。
Advanced Scripting
オンにすると、ページがリフレッシュされ、Expert や PERL などのコマンドライン言語で作成されたカスタム スクリプト固有の設定が表示されます。Advanced Scripting 固有のフィールドには、次のものがあります。
  • Device Family:デバイス ファミリとは、類似の設定 CLI コマンド構文を共有するデバイスの集合です。デバイス ファミリを選択します。この操作により、実行するスクリプトの対象が、選択したデバイス ファミリに属するドライバを持つデバイスに限定されます。この機能により、異なるデバイス用に作成したスクリプトの複数の実装に同じ名前を割り当て、単一タスクとして実行することができます。
  • Language:スクリプトを追加する際に、そのスクリプトの作成に使用するスクリプト言語を選択します。この機能を使用するには、言語サポートをインストールし、その言語を Administrative Settings/Server/Advanced Scripting でイネーブルにする必要があります(注:NCM には Expect サポートがインストールされていますが、パスを設定する必要があります)。
  • Parameters:スクリプトの認証パラメータを入力します。NCM や独自のカスタム変数を含めることはできません(注:認証にはパラメータの使用をお勧めします。パラメータを使用すると、パスワードがファイルに書き込まれるというセキュリティ上のリスクが軽減されるためです)。
  • Script:Advanced Scripting コマンドには、条件付きロジックや事前定義された変数を組み込むことができます。変数名に使用できるのは、文字、数字、およびアンダースコア(_)だけです。変数名の形式として、ドル記号($)で変数名を囲む必要があります(例:$report$、$my_address$、$port_3_ip$)。拡張スクリプトには、デバイスに接続してログインするために必要なコードを組み込む必要があります。たとえば、$tc_device_ip$ に接続し、$tc_device_password$ を使用してログインすることができます。
  • Device variables リンク:拡張カスタム スクリプトで使用可能なデバイス変数のリストが表示されます。これらの変数は常に $tc_ で始まり、変数名は大文字と小文字が区別されます(独自の変数を作成することもできます)。
  • Pull Variables ボタン:ページがリフレッシュされ、スクリプトで使用される各変数の入力フィールドがページの下に追加されます。この入力フィールドを使用して、変数のカスタム プロンプトを定義し、各プロンプトで受け入れる値を制限します。変数ごとに、次のオプションを選択できます。
    - Allow multiple lines in value
    - Limit values to(値をカンマで区切って入力します)
Mode
デバイス アクセス モード(Cisco Exec や Nortel Manager など)を選択します。
Driver
次のいずれかのオプションを選択します。
  • All applicable drivers(デフォルト)
  • Select specific drivers:リストから 1 つ以上のドライバを選択する場合、1 つのドライバをクリックするか、Shift キーまたは Ctrl キーを押しながらクリックして複数のドライバを選択します(注:Baystack 470 などのメニュー方式のデバイスには、カスタム スクリプトからアクセスできません)。
Script
デバイスに送信されるデバイス固有のコマンドを入力するか、既存のスクリプトを貼り付けて編集します。コマンドの入力方法については、Command Script ページのヘルプを参照してください。
 
注:変数名の先頭には tc_(NCM 用に予約済み)を使用できません。この制限を除き、変数名には英大文字、英小文字、0 ~ 9、およびアンダースコアを自由に組み合せて使用できます。
Pull Variables ボタン
ページがリフレッシュされ、スクリプトで使用される各変数の入力フィールドがページの下部に追加されます。この入力フィールドを使用して、変数のカスタム プロンプトを定義し、各プロンプトで受け入れる値を制限します。次に例を示します。
  • HOSTNAME
  • ETH_SLOT1
 
このスクリプトの実行時にユーザの応答を求めるカスタム プロンプトを入力し、このプロンプトで受け入れる応答値を入力します。値はカンマで区切る必要があるため、カンマを含む値は使用できません。複数の値を指定した場合は、このプロンプトがユーザに表示されるときに、受け入れ可能な値のリストがプロンプト ダイアログに表示されます。
コマンド スクリプトの実行

コマンド スクリプトのインスタンスの実行および編集は、ユーザの権限によって制限されています。Limited 権限を持つユーザ、Modify Device 権限を持たない Full ユーザおよび Power ユーザは、スクリプトを実行できません。

スクリプトは、ユーザ定義の間隔に基づいて 1 回または定期的に実行するように設定できます。あるいは、繰り返しタスクとして設定することもできます。さらに、特定の時刻または即時に開始するようにタスクをスケジュールすることもできます。スクリプトの実行前にスクリプトを編集して変数の値を入力できることに留意してください。

Command Scripts ページからスクリプトを実行するには、次の手順を実行します。

  1. メニューバーの Devices の下で、Device Tools を選択し、Command Scripts をクリックします。Command Scripts ページが開きます。
  2. 実行するスクリプトの名前を選択します。
  3. Action カラムで Run をクリックします。Run Command Script Task ページが開きます。詳細については、 Run Command Script Task ページのフィールドを参照してください。
(注)コマンド スクリプトは、Tasks メニューからも実行できます。

テンプレートからのスクリプトの作成

テンプレートからスクリプトを作成するには、次の手順を実行します。

  1. Devices の下のメニューバーで、Device Tools を選択し、Templates をクリックします。Templates ページが開きます。 Templates ページのフィールドを参照してください。
  2. Vendor リンクをクリックします。そのベンダーの Templates ページが開きます。
  3. スクリプトに組み込むテンプレートを選択し、Actions ドロップダウン メニューをクリックします。
  4. Update Script をクリックします。
  5. 必要に応じてスクリプトを編集し、Create Script ボタンをクリックして、デバイスに展開できるスクリプトを作成します。Save Script from Template ページが開きます。
  6. Name、Description などのフィールドを編集します。変数名の先頭には「 tc_」 を使用できないことに留意してください。この制限を除き、変数名には英大文字、英小文字、0 ~ 9、およびアンダースコアを自由に組み合せて使用できます。
  7. Save Script をクリックします。Command Scripts ページが開きます。新しいスクリプトが強調表示されます。