ネットワーク管理 コンフィギュレーション ガイド Cisco IOS Release 15.1S
Tcl を使用した Embedded Event Manager (EEM)ポリシーの記 述
Tcl を使用した Embedded Event Manager(EEM)ポリシーの記述
発行日;2012/02/02 | 英語版ドキュメント(2011/05/03 版) | ドキュメントご利用ガイド | ダウンロード ; この章pdf , ドキュメント全体pdf (PDF - 5MB) | フィードバック

目次

Tcl を使用した Embedded Event Manager(EEM)ポリシーの記述

機能情報の入手

この章の構成

Tcl を使用した Embedded Event Manager(EEM)ポリシー記述の前提条件

Tcl を使用した Embedded Event Manager(EEM)ポリシーの記述について

EEM ポリシー

EEM ポリシーの Tcl コマンド拡張のカテゴリ

EEM イベントの検出および回復の一般的なフロー

Safe-Tcl

EEM 2.4 のバイトコード サポート

登録の置き換え

EEM 用のシスコ ファイル命名規則

Tcl を使用した Embedded Event Manager(EEM)ポリシーの記述方法

EEM Tcl スクリプトの登録と定義

前提条件

登録済みの EEM ポリシーの表示

EEM ポリシーの登録解除

EEM ポリシー実行の一時停止

EEM ポリシーの管理

履歴テーブル サイズの変更と EEM 履歴データの表示

EEM を使用したソフトウェア モジュール方式プロセスの信頼性メトリック

トラブルシューティングのヒント

EEM サンプル ポリシーの変更

EEM サンプル ポリシー

Tcl を使用した EEM ポリシーのプログラミング

Tcl ポリシーの構造と要件

EEM 開始ステータス

EEM 終了ステータス

EEM ポリシーと Cisco エラー番号

トラブルシューティングのヒント

EEM ユーザ Tcl ライブラリ索引の作成

EEM ユーザ Tcl パッケージ索引の作成

Tcl を使用した Embedded Event Manager(EEM)ポリシー記述の設定例

Tcl セッションへのユーザ名割り当て:例

EEM イベント ディテクタのデモ:例

Tcl でポリシーをプログラミングするサンプル スクリプト例

Embedded Event Manager ポリシーのデバッグ例

Tcl set コマンドの操作:例

RPC イベント ディテクタ:例

関連情報

その他の参考資料

関連資料

MIB

RFC

シスコのテクニカル サポート

EEM ポリシーの Tcl コマンド拡張の関連資料

EEM イベント登録の Tcl コマンド拡張

event_register_appl

event_register_cli

event_register_counter

event_register_gold

event_register_interface

event_register_ioswdsysmon

event_register_ipsla

event_register_nf

event_register_none

event_register_oir

event_register_process

event_register_resource

event_register_rf

event_register_routing

event_register_rpc

event_register_snmp

event_register_snmp_notification

event_register_snmp_object

event_register_syslog

event_register_timer

event_register_timer_subscriber

event_register_track

event_register_wdsysmon

EEM イベント情報の Tcl コマンド拡張

event_reqinfo

EEM イベントの Tcl コマンド拡張

event_completion

event_completion_with_wait

event_publish

event_wait

EEM の複数イベントがサポートされる Tcl コマンド拡張

trigger

correlate

attribute

EEM アクションの Tcl コマンド拡張

action_policy

action_process

action_program

action_reload

action_script

action_snmp_trap

action_snmp_object_value

action_switch

action_syslog

action_track_read

action_track_set

EEM ユーティリティの Tcl コマンド拡張

appl_read

appl_reqinfo

appl_setinfo

counter_modify

description

fts_get_stamp

register_counter

register_timer

timer_arm

timer_cancel

unregister_counter

EEM システム情報の Tcl コマンド拡張

sys_reqinfo_cli_freq

sys_reqinfo_cli_history

sys_reqinfo_cpu_all

sys_reqinfo_crash_history

sys_reqinfo_mem_all

sys_reqinfo_proc

sys_reqinfo_proc_all

sys_reqinfo_routername

sys_reqinfo_snmp

sys_reqinfo_syslog_freq

sys_reqinfo_syslog_history

EEM ライブラリのデバッグ コマンド拡張

cli_debug

smtp_debug

SMTP ライブラリのコマンド拡張

smtp_send_email

smtp_subst

CLI ライブラリのコマンド拡張

cli_close

cli_exec

cli_get_ttyname

cli_open

cli_read

cli_read_drain

cli_read_line

cli_read_pattern

cli_run

cli_run_interactive

cli_write

CLI ライブラリの XML-PI サポート

xml_pi_exec

xml_pi_parse

xml_pi_read

xml_pi_write

Tcl コンテキスト ライブラリ コマンド拡張

context_retrieve

context_save

Tcl を使用した Embedded Event Manager(EEM)ポリシー記述の機能情報

Tcl を使用した Embedded Event Manager(EEM)ポリシーの記述

この章は、ソフトウェア開発者が Tool command language(Tcl)スクリプトを使用して Embedded Event Manager(EEM)ポリシーを記述およびカスタマイズし、Cisco IOS ソフトウェアの障害とイベントを処理できる方法について説明します。EEM は、定義済みの Application Programming Interface(API)を介してレポートされる Cisco IOS ソフトウェア システムの障害による、ポリシー方式のプロセスです。EEM ポリシー エンジンは、障害およびその他のイベントが発生したときに通知を受け取ります。EEM ポリシーは、システムの現在の状態に基づいて回復を実行し、該当するイベントのポリシーに指定されたアクションを実行します。回復アクションはポリシーが実行されたときにトリガーされます。

機能情報の入手

ご使用のソフトウェア リリースによっては、この章に記載されている機能の中に、一部サポートされていないものがあります。最新の機能情報と注意事項については、ご使用のプラットフォームとソフトウェア リリースに対応したリリース ノートを参照してください。この章に記載されている機能の詳細、および各機能がサポートされているリリースのリストについては、「Tcl を使用した Embedded Event Manager(EEM)ポリシー記述の機能情報」を参照してください。

Cisco Feature Navigator を使用すると、プラットフォーム、Cisco IOS ソフトウェア イメージ、Cisco Catalyst OS ソフトウェア イメージ、および Cisco IOS XE ソフトウェア イメージの各サポート情報を検索できます。Cisco Feature Navigator には、 http://www.cisco.com/go/cfn からアクセスします。Cisco.com のアカウントは必要ありません。

Tcl を使用した Embedded Event Manager(EEM)ポリシー記述の前提条件

EEM ポリシーを記述する前に、「 Embedded Event Manager Overview 」の章の内容を理解している必要があります。

Command-Line Interface(CLI; コマンドライン インターフェイス)コマンドを使用して EEM ポリシーを記述する場合は、「 Writing Embedded Event Manager Policies Using the Cisco IOS CLI 」の章の内容を理解しておく必要があります。

Tcl を使用した Embedded Event Manager(EEM)ポリシーの記述について

Tcl を使用して EEM ポリシーを記述するには、次の概念を理解しておく必要があります。

「EEM ポリシー」

「EEM ポリシーの Tcl コマンド拡張のカテゴリ」

「EEM ポリシーの Tcl コマンド拡張のカテゴリ」

「EEM イベントの検出および回復の一般的なフロー」

「Safe-Tcl」

「EEM 2.4 のバイトコード サポート」

「登録の置き換え」

「EEM 用のシスコ ファイル命名規則」

EEM ポリシー

EEM では、イベントを監視し、イベント発生が検出されたとき、およびしきい値を超えたときに情報通知や是正などのアクションを実施できます。EEM ポリシーは、イベントとそのイベント発生時に実行するアクションを定義するエンティティです。EEM ポリシーには、アプレットとスクリプトの 2 つのタイプがあります。アプレットは、コマンドライン インターフェイス(CLI)設定に定義された、ポリシーの単純な形式です。スクリプトは、Tool Command Language(Tcl)で記述されたポリシーの形式です。

EEM アプレット

EEM アプレットは、イベント スクリーニング基準とイベント発生時に実行するアクションを定義する簡潔な方法です。EEM アプレット コンフィギュレーション モードでは、3 種類のコンフィギュレーション文がサポートされます。event コマンドを使用して実行するアプレットをトリガーするイベント基準を指定し、action コマンドを使用して、EEM アプレットがトリガーされるときに実行されるアクションを指定し、 set コマンドを使用して EEM アプレット変数の値を設定します。現在、_exit_status 変数だけが、 set コマンドでサポートされます。

アプレット コンフィギュレーションでは、event コンフィギュレーション コマンドを 1 個だけ使用できます。アプレット サブコンフィギュレーション モードが終了し、event コマンドが存在しない場合は、アプレットにイベントが割り当てられていないことを示す警告が表示されます。イベントが指定されない場合、アプレットは登録されたと見なされません。アプレットにアクションが割り当てられない場合、イベントはトリガーされますが、アクションは実行されません。1 つのアプレット コンフィギュレーション内で複数の action コンフィギュレーション コマンドが使用できます。 show event manager policy registered コマンドを使用して、登録されたアプレットの一覧を表示します。

EEM アプレットを修正する前に、アプレット コンフィギュレーション モードを終了するまで既存のアプレットを置き換えられないことに注意してください。アプレット コンフィギュレーション モードでアプレットを修正中であっても、既存のアプレットを実行できます。変更は一時ファイルに書き込まれるため、登録を解除しないでアプレットを変更するのが安全です。アプレット コンフィギュレーション モードを終了すると、古いアプレットが登録解除され、新しいバージョンが登録されます。

アプレット内の action コンフィギュレーション コマンドは、 label 引数を使用することで一意に識別できます。label 引数には任意の文字列値が使用できます。アクションは、 label 引数をソート キーとして、アプレット内で英数字のキーの昇順にソートされ、この順序で実行されます。同じ label 引数を異なるアプレットで使用できます。ラベルは 1 つのアプレット内でのみ固有である必要があります。

Embedded Event Manager は、ポリシーそのものに含まれるイベント仕様に基づいてポリシーをスケジューリングし、実行します。アプレット コンフィギュレーション モードが終了するとき、EEM は、入力された event コマンドと action コマンドを検査し、指定されたイベントの発生時に実行されるようにアプレットを登録します。

Cisco IOS CLI を使用して EEM ポリシーを記述する方法については、「 Writing Embedded Event Manager Policies Using the Cisco IOS CLI 」の章を参照してください。

EEM スクリプト

すべての Embedded Event Manager スクリプトは、Tcl で書き込まれます。Tcl は、実行時に解釈される、文字列ベースのコマンド言語です。Tcl がサポートされるバージョンは、Tcl バージョン 8.3.4 に、スクリプト サポートが追加されたものです。スクリプトは、ネットワーキング デバイスではなく、別のデバイスで、ASCII エディタを使用して定義されます。続いてスクリプトはネットワーキング デバイスにコピーされ EEM に登録されます。Tcl スクリプトは EEM でサポートされます。Embedded Event Manager ポリシーは、強制適用される規則として、20 秒未満の経過時間で解釈され、実行される必要がある、短命の実行時ルーチンです。20 秒よりも長い経過時間が必要な場合、event_register 文で maxrun パラメータを使用して、必要な値を指定する必要があります。

EEM ポリシーでは、広範囲な Tcl 言語の機能が使用されます。ただし、シスコでは、EEM ポリシーの記述に活用できる Tcl コマンド拡張の形式で、Tcl 言語の機能を拡張しています。Tcl コマンド拡張の主要なカテゴリでは、検出されたイベント、後続のアクション、ユーティリティ情報、カウンタの値、システム情報が特定されます。

EEM では、Tcl を使用して独自のポリシーを記述、実装できます。EEM スクリプトの記述には、次の手順が含まれます。

ポリシーの実行時に決定に使用される基準を確立する、イベント Tcl コマンド拡張を選択しすること。

イベントの検出に関連付けられているイベント検出オプションを定義すること。

検出されたイベントの回復または検出されたイベントに対する応答を実装するアクションを選択すること。

EEM ポリシーの Tcl コマンド拡張のカテゴリ

EEM ポリシーの Tcl コマンド拡張には、異なるカテゴリがあります。


) すべての EEM ポリシーで使用するこれらの各カテゴリで使用可能な Tcl コマンドは、この資料の以降の項で説明します。


 

表 1 EEM ポリシーの Tcl コマンド拡張のカテゴリ

カテゴリ
定義

EEM イベントの Tcl コマンド拡張
(イベント情報、イベント登録、イベント パブリッシュの 3 タイプ)

このカテゴリは、イベント特有のコマンドの event_register_ xxx ファミリによって表されます。このカテゴリには、別のイベント情報 Tcl コマンド拡張の event_reqinfo もあります。これは、イベントについての情報の EEM への問い合わせにポリシーで使用されるコマンドです。アプリケーション固有のイベントをパブリッシュする、EEM イベント Tcl コマンド拡張 event_publish もあります。

EEM アクションの Tcl コマンド拡張

これらの Tcl コマンド拡張(たとえば、 action_syslog など)は、イベントまたは障害への応答か、または、イベントまたは障害からの回復のために、ポリシーによって使用されます。これらの拡張に加え、開発者は、Tcl 言語を使用して、必要なアクションを実装できます。

EEM ユーティリティの Tcl コマンド拡張

これらの Tcl コマンド拡張は、アプリケーション情報、カウンタ、またはタイマーの取得、保存、設定、または変更に使用されます。

EEM システム情報の Tcl コマンド拡張

このカテゴリは、システム特有の情報のコマンドの sys_reqinfo _ xxx ファミリによって表されます。これらのコマンドは、システム情報を収集する目的で、ポリシーによって使用されます。

EEM コンテキストの Tcl コマンド拡張

これらの Tcl コマンド拡張は、Tcl コンテキスト(可視変数およびその値)の保存および取得に使用されます。

EEM イベントの検出および回復の一般的なフロー

EEM は、イベント ディテクタと呼ばれるソフトウェア エージェントを使用してステム内の異なるコンポーネントのモニタリングをサポートする、柔軟で、ポリシードリブンのフレームワークです。図 1 に、EEM サーバ、コア イベント パブリッシャ(イベント ディテクタ)、および、イベント サブスクライバ(ポリシー)の関係を示します。基本的に、イベント パブリッシャはイベントをスクリーニングしてイベント サブスクライバから提供されたイベント仕様に一致したときにイベントをパブリッシュします。イベント ディテクタは、注目するイベントが発生したときに EEM サーバに通知します。

イベントまたは障害が検出されると、Embedded Event Manager によって、たとえば図 1 の OIR イベント パブリッシャなどのイベント パブリッシャから、検出された障害またはイベントの登録が発生しているかどうかが判断されます。EEM によって、イベント登録情報が、イベント データそのものと、照会されます。ポリシーによって、検出されたイベントが Tcl コマンド拡張 event_register _ xxx で登録されます。イベント情報 Tcl コマンド拡張 event_reqinfo は、検出されたイベントに関する情報について Embedded Event Manager に問い合わせるために、ポリシーで使用されます。

図 1 Embedded Event Manager コア イベント ディテクタ

 

Safe-Tcl

Safe-Tcl は、安全モードで作成されたインタープリタで、非信頼 Tcl スクリプトを実行できる、安全メカニズムです。安全インタープリタには、一部のシステム リソースへのアクセスや、ホストおよび他のアプリケーションに害が及ぼされることを防ぐ、制限されたコマンドのセットがあります。たとえば、コマンドは、重要な Cisco IOS ファイル システム ディレクトリにはアクセスできません。

シスコ定義のスクリプトはフル Tcl モードで実行されますが、ユーザ定義のスクリプトは Safe-Tcl モードで実行されます。Safe-Tcl を使用すると、シスコでは、個々の Tcl コマンドのディセーブルまたはカスタマイズを行えます。Tcl コマンドの詳細については、 http://www.tcl.tk/man/ を参照してください。

次のリストにある Tcl コマンドは、一部の例外によって制約されます。各コマンドまたはコマンド キーワードに対する制約事項は、次のとおりです。

cd :ディレクトリの、制約付きの Cisco ディレクトリ名の 1 つへの変更はできません。

encoding encoding names encoding convertfrom 、および encoding convertto の各コマンドを使用できます。encoding system コマンドは、no 引数を指定して使用できますが、?encoding? キーワードを指定して使用できません。

exec :使用できません。

fconfigure :使用できます。

file :次のものを使用できます。

file dirname

file exists

file extension

file isdirectory

file join

file pathtype

file rootname

file split

file stat

file tail

file :次のものは使用できません。

file atime

file attributes

file channels

file copy

file delete

file executable

file isfile

file link

file lstat

file mkdir

file mtime

file nativename

file normalize

file owned

file readable

file readlink

file rename

file rootname

file separator

file size

file system

file type

file volumes

file writable

glob :制約付きの Cisco ディレクトリの 1 つで検索する場合、 glob コマンドは使用できません。これ以外の場合は、使用できます。

load :ユーザ ポリシー ディレクトリまたはユーザ ライブラリ ディレクトリにあるファイルのみ、ロードできます。スタティック パッケージ(たとえば、C コードで構成されるライブラリ)は、 load コマンドではロードできません。

open open コマンドは、制約付きの Cisco ディレクトリの 1 つにあるファイルでは使用できません。

pwd pwd コマンドは使用できません。

socket socket コマンドは使用できます。

source source コマンドは、ユーザ ポリシー ディレクトリまたはユーザ ライブラリ ディレクトリにあるファイルで使用できます。

EEM 2.4 のバイトコード サポート

Cisco IOS Release 12.4(20)T では、EEM 2.4 で、標準バイトコード スクリプト拡張子 .tbc のファイルを受け付けることによって、Bytecode Language(BCL)サポートが導入されています。Tcl バージョン 8.3.4 では、BCL が定義され、Tcl スクリプトが BCL に変換されるコンパイラが含まれています。EEM 2.4 のユーザ ポリシーおよびシステム ポリシーで有効な EEM ポリシーのファイル拡張子は、.tcl(Tcl テキスト ファイル)と .tbc(Tcl バイトコード ファイル)です。

コードはプリコンパイルされ、コードによって、より小さなポリシー サイズが作成され、ポリシー コードがあいまいに隠されるため、バイトコードで Tcl スクリプトを保存することによって、ポリシーの実行速度が向上します。あいまい化によって、スクリプトの変更が少し困難になり、知的財産所有権を守るためにロジックが隠されます。

サポート コードおよび信頼済みコードのリリースのために別のオプションを提供するため、バイトコードのサポートが追加されています。ネットワーク デバイスでは、よく認識している、または信頼済みで、サポートされているソフトウェアのみを実行することを推奨します。IOS EEM サポートの Tcl バイトコードを生成するには、TclPro バージョン 1.4 または 1.5 を使用します。

Tcl スクリプトをバイトコードに変換するには、procomp、Free TclPro Compiler の一部、または Active State Tcl Development Kit を使用できます。Tcl スクリプトを procomp を使用してコンパイルする場合、コードはスクランブルされ、.tbc ファイルが生成されます。バイトコード ファイルはプラットフォームに依存せず、Windows、Linux、および UNIX などの、TclPro を使用できるすべてのオペレーティング システムで生成できます。Procomp は TclPro の一部で、 http://www.tcl.tk/software/tclpro から使用できます。

登録の置き換え

標準の Tcl の置き換えに加え、EEM 2.3(Cisco IOS Release 12.2(33)SXH および 12.2(33)SB と、それ以降のリリース)では、EEM イベント登録文の行の個々のパラメータを、環境変数で置き換えることができます。

Cisco IOS Release 12.4(20)T の EEM 2.4 では、イベント登録文の行にある複数パラメータを 1 つの環境変数で置き換える機能が導入されています。


) 1 つめの環境変数のみで、複数パラメータの置き換えがサポートされます。個々のパラメータは、初期変数の後の追加の環境変数で指定できます。


置き換えを示すために、1 つの環境変数 $_eem_syslog_statement が次のとおりに設定されています。

::cisco::eem::event_register_syslog pattern COUNT
 

登録の置き換えを使用すると、$_eem_syslog_statement 環境変数が、次の EEM ユーザ ポリシーで使用されます。

$_eem_syslog_statement occurs $_eem_occurs_val
action_syslog “this is test 3”
 

環境変数は、これらが使用されるポリシーの登録の前に定義される必要があります。$_eem_syslog_statement 環境変数を定義する方法は、次のとおりです。

Router(config)# event manager environment eem_syslog_statement
::cisco::eem::event_register_syslog pattern COUNT
Router(config)# event manager environment eem_occurs_val 2

EEM 用のシスコ ファイル命名規則

すべての Embedded Event Manager ポリシー名、ポリシー サポート ファイル(たとえば、E メール テンプレート ファイル)、およびライブラリ ファイル名は、シスコのファイル命名規則に従う必要があります。このため、Embedded Event Manager ポリシー ファイル名は、次の仕様に従っています。

オプションのプレフィクス Mandatory. がある場合、これは、システム ポリシーがまだ登録されていない場合に、自動的に登録される必要があるシステム ポリシーであることを示します。たとえば、Mandatory.sl_text.tcl などです。

指定された 1 つめのイベントの 2 文字の省略形が含まれるファイル名の本体部( 表 2 を参照)、下線部、および、ポリシーをさらに示す説明フィールド部。

ファイル名拡張子部は、.tcl と定義されます。

Embedded Event Manager の E メール テンプレート ファイルは、email_template のプレフィクスと、後続の E メール テンプレートの使用状況を示す省略形で、構成されます。

Embedded Event Manager ライブラリ ファイル名は、ライブラリの使用状況を示す説明フィールドを含むファイル名の本体部と、後続の _lib、および .tcl というファイル名拡張子で、構成されます。

 

表 2 2 文字の省略形の指定

ap

event_register_appl

cl

event_register_cli

ct

event_register_counter

go

event_register_gold

if

event_register_interface

io

event_register_ioswdsysmon

la

event_register_ipsla

nf

event_register_nf

no

event_register_none

oi

event_register_oir

pr

event_register_process

rf

event_register_rf

rs

event_register_resource

rt

event_register_routing

rp

event_register_rpc

sl

event_register_syslog

sn

event_register_snmp

st

event_register_snmp_notification

so

event_register_snmp_object

tm

event_register_timer

tr

event_register_track

ts

event_register_timer_subscriber

wd

event_register_wdsysmon

Tcl を使用した Embedded Event Manager(EEM)ポリシーの記述方法

ここでは、次の作業について説明します。

「EEM Tcl スクリプトの登録と定義」

「登録済みの EEM ポリシーの表示」

「EEM ポリシーの登録解除」

「EEM ポリシー実行の一時停止」

「EEM ポリシーの管理」

「履歴テーブル サイズの変更と EEM 履歴データの表示」

「EEM を使用したソフトウェア モジュール方式プロセスの信頼性メトリック」

「EEM サンプル ポリシーの変更」

「Tcl を使用した EEM ポリシーのプログラミング」

「EEM ユーザ Tcl ライブラリ索引の作成」

「EEM ユーザ Tcl パッケージ索引の作成」

EEM Tcl スクリプトの登録と定義

環境変数を設定し、EEM ポリシーを登録するには、この作業を実行します。EEM は、ポリシーそのものに含まれるイベント仕様に基づいてポリシーをスケジューリングし、実行します。EEM ポリシーが登録されると、ソフトウェアによって、ポリシーが調べられ、指定されたイベントの発生時に実行されるよう、登録されます。

前提条件

Tcl スクリプト言語で記述されたポリシーが使用できる状態である必要があります。サンプル ポリシーを示します。使用している Cisco IOS Release イメージで使用可能なポリシーについては、「EEM サンプル ポリシー」を参照してください。これらのサンプル ポリシーは、システム ポリシー ディレクトリに保存されています。

手順の概要

1. enable

2. show event manager environment [ all | variable-name ]

3. configure terminal

4. event manager environment variable-name string

5. ステップ 4 を繰り返して、ステップ 6 で登録されるポリシーに必要なすべての環境変数を設定します。

6. event manager policy policy-filename [ type { system | user }] [ trap ]

7. exit

手順の詳細

 

コマンドまたはアクション
目的

ステップ 1

enable

 

Router> enable

特権 EXEC モードをイネーブルにします。

プロンプトが表示されたら、パスワードを入力します。

ステップ 2

show event manager environment [ all | variable-name ]

 

Router# show event manager environment all

(任意)EEM 環境変数の名前と値を表示します。

オプションの all キーワードは、すべての EEM 環境変数を表示します。

オプションの variable-name 引数は、指定された環境変数に関する情報を表示します。

ステップ 3

configure terminal

 

Router# configure terminal

グローバル コンフィギュレーション モードを開始します。

ステップ 4

event manager environment variable-name string

 

Router(config)# event manager environment _cron_entry 0-59/2 0-23/1 * * 0-6

指定された EEM 環境変数の値を設定します。

この例では、ソフトウェアによって、CRON タイマー環境変数が、毎日、毎時の 2 分目に設定されます。

ステップ 5

ステップ 4 を繰り返して、ステップ 6 で登録されるポリシーに必要なすべての環境変数を設定します。

--

ステップ 6

event manager policy policy-filename [ type { system | user }] [ trap ]

 

Router(config)# event manager policy tm_cli_cmd.tcl type system

ポリシー内で定義された指定イベントが発生した場合に、EEM ポリシーを実行するよう、定義します。

system キーワードを使用して、シスコ定義のシステム ポリシーを登録します。

user キーワードを使用して、ユーザ定義のシステム ポリシーを登録します。

trap キーワードを使用して、ポリシーがトリガーされた場合の SNMP トラップを生成します。

この例では、tm_cli_cmd.tcl という名前の EEM サンプル ポリシーが、システム ポリシーとして定義されます。

ステップ 7

exit

 

Router(config)# exit

グローバル コンフィギュレーション モードを終了し、特権 EXEC モードに戻ります。

次に、 show event manager environment 特権 EXEC コマンドを使用して、すべての EEM 環境変数の名前と値を表示する例を示します。

Router# show event manager environment all
 
No. Name Value
1 _cron_entry 0-59/2 0-23/1 * * 0-6
2 _show_cmd show ver
3 _syslog_pattern .*UPDOWN.*Ethernet1/0.*
4 _config_cmd1 interface Ethernet1/0
5 _config_cmd2 no shut

登録済みの EEM ポリシーの表示

登録済みの EEM ポリシーを表示するには、次の任意の作業を実行します。

手順の概要

1. enable

2. show event manager policy registered [ event-type event-name ] [ time-ordered | name-ordered ] [ detailed policy-filename ]

手順の詳細


ステップ 1 enable

特権 EXEC モードをイネーブルにします。プロンプトが表示されたら、パスワードを入力します。

Router> enable
 

ステップ 2 show event manager policy registered [ event-type event-name ] [ time-ordered | name-ordered ] [ detailed policy-filename ]

このコマンドを time-ordered キーワードとともに使用して、現在登録されているポリシーの情報を時間でソートして表示します。次に例を示します。

Router# show event manager policy registered time-ordered
 
No. Type Event Type Trap Time Registered Name
1 system timer cron Off Wed May11 01:43:18 2005 tm_cli_cmd.tcl
name {crontimer2} cron entry {0-59/1 0-23/1 * * 0-7}
nice 0 priority normal maxrun 240
 
2 system syslog Off Wed May11 01:43:28 2005 sl_intf_down.tcl
occurs 1 pattern {.*UPDOWN.*Ethernet1/0.*}
nice 0 priority normal maxrun 90
 
3 system proc abort Off Wed May11 01:43:38 2005 pr_cdp_abort.tcl
instance 1 path {cdp2.iosproc}
nice 0 priority normal maxrun 20
 

このコマンドを name-ordered キーワードとともに使用して、現在登録されているポリシーの情報を名前でソートして表示します。次に例を示します。

Router# show event manager policy registered name-ordered
 
No. Type Event Type Trap Time Registered Name
1 system proc abort Off Wed May11 01:43:38 2005 pr_cdp_abort.tcl
instance 1 path {cdp2.iosproc}
nice 0 priority normal maxrun 20
 
2 system syslog Off Wed May11 01:43:28 2005 sl_intf_down.tcl
occurs 1 pattern {.*UPDOWN.*Ethernet1/0.*}
nice 0 priority normal maxrun 90
 
3 system timer cron Off Wed May11 01:43:18 2005 tm_cli_cmd.tcl
name {crontimer2} cron entry {0-59/1 0-23/1 * * 0-7}
nice 0 priority normal maxrun 240
 

このコマンドを event-type キーワードとともに使用して、 event-name 引数で指定されたイベント タイプの現在登録されているポリシーの情報を表示します。次に例を示します。

Router# show event manager policy registered event-type syslog
 
No. Type Event Type Time Registered Name
1 system syslog Wed May11 01:43:28 2005 sl_intf_down.tcl
occurs 1 pattern {.*UPDOWN.*Ethernet1/0.*}
nice 0 priority normal maxrun 90


 

EEM ポリシーの登録解除

EEM ポリシーを実行コンフィギュレーション ファイルから削除するには、次の作業を実行します。ポリシーの実行はキャンセルされます。

手順の概要

1. enable

2. show event manager policy registered [ event-type event-name ] [ system | user ] [ time-ordered | name-ordered ] [ detailed policy-filename ]

3. configure terminal

4. no event manager policy policy-filename

5. exit

6. ステップ 2 を繰り返して、ポリシーが削除されたことを確認します。

手順の詳細

 

コマンドまたはアクション
目的

ステップ 1

enable

 

Router> enable

特権 EXEC モードをイネーブルにします。

プロンプトが表示されたら、パスワードを入力します。

ステップ 2

show event manager policy registered [ event-type event-name ] [ system | user ] [ time-ordered | name-ordered ] [ detailed policy-filename ]

 

Router# show event manager policy registered

(任意)現在登録されている EEM ポリシーを表示します。

オプションの system キーワードまたは user キーワードによって、登録済みのシステム ポリシーまたはユーザ ポリシーが表示されます。

キーワードが指定されない場合は、すべてのイベント タイプに対する登録された EEM ポリシーが時間順に表示されます。

ステップ 3

configure terminal

 

Router# configure terminal

グローバル コンフィギュレーション モードを開始します。

ステップ 4

no event manager policy policy-filename

 

Router(config)# no event manager policy pr_cdp_abort.tcl

ポリシーを登録解除するために EEM ポリシーを設定から削除します。

この例では、コマンドの no 形式を使用して、指定されたポリシーの登録が解除されます。

ステップ 5

exit

 

Router(config)# exit

グローバル コンフィギュレーション モードを終了し、特権 EXEC モードに戻ります。

ステップ 6

ステップ 2 を繰り返して、ポリシーが削除されたことを確認します。

 

Router# show event manager policy registered

--

次に、 show event manager policy registered 特権 EXEC コマンドを使用して、現在登録されている 3 個の EEM ポリシーを表示している例を示します。

Router# show event manager policy registered
 
No. Type Event Type Trap Time Registered Name
1 system timer cron Off Tue Oct11 01:43:18 2005 tm_cli_cmd.tcl
name {crontimer2} cron entry {0-59/1 0-23/1 * * 0-7}
nice 0 priority normal maxrun 240.000
 
2 system syslog Off Tue Oct11 01:43:28 2005 sl_intf_down.tcl
occurs 1 pattern {.*UPDOWN.*Ethernet1/0.*}
nice 0 priority normal maxrun 90.000
 
3 system proc abort Off Tue Oct11 01:43:38 2005 pr_cdp_abort.tcl
instance 1 path {cdp2.iosproc}
nice 0 priority normal maxrun 20.000
 

現在のポリシーの表示後、 event manager policy コマンドの no 形式を使用して、pr_cdp_abort.tcl ポリシーの削除が決定されます。

Router# configure terminal
Router(config)# no event manager policy pr_cdp_abort.tcl
Router(config)# exit
 

show event manager policy registered 特権 EXEC コマンドを再度入力すると、現在登録されている EEM ポリシーが表示されます。ポリシー pr_cdp_abort.tcl は、登録されていません。

Router# show event manager policy registered
 
No. Type Event Type Trap Time Registered Name
1 system timer cron Off Tue Oct11 01:45:17 2005 tm_cli_cmd.tcl
name {crontimer2} cron entry {0-59/1 0-23/1 * * 0-7}
nice 0 priority normal maxrun 240.000
 
2 system syslog Off Tue Oct11 01:45:27 2005 sl_intf_down.tcl
occurs 1 pattern {.*UPDOWN.*Ethernet1/0.*}
nice 0 priority normal maxrun 90.000

EEM ポリシー実行の一時停止

すべての EEM ポリシーの実行をただちに一時停止するには、次の作業を実行します。一時的なパフォーマンスまたはセキュリティ面での理由から、ポリシーの登録解除ではなく一時停止が必要なことがあります。

手順の概要

1. enable

2. show event manager policy registered [ event-type event-name ] [ system | user ] [ time-ordered | name-ordered ] [ detailed policy-filename ]

3. configure terminal

4. event manager scheduler suspend

5. exit

手順の詳細

 

コマンドまたはアクション
目的

ステップ 1

enable

 

Router> enable

特権 EXEC モードをイネーブルにします。

プロンプトが表示されたら、パスワードを入力します。

ステップ 2

show event manager policy registered [ event-type event-name ] [ system | user ] [ time-ordered | name-ordered ] [ detailed policy-filename ]

 

Router# show event manager policy registered

(任意)現在登録されている EEM ポリシーを表示します。

オプションの system キーワードまたは user キーワードによって、登録済みのシステム ポリシーまたはユーザ ポリシーが表示されます。

キーワードが指定されない場合は、すべてのイベント タイプに対する登録された EEM ポリシーが時間順に表示されます。

ステップ 3

configure terminal

 

Router# configure terminal

グローバル コンフィギュレーション モードを開始します。

ステップ 4

event manager scheduler suspend

 

Router(config)# event manager scheduler suspend

すべての EEM ポリシーの実行がすぐに一時停止されます。

ステップ 5

exit

 

Router(config)# exit

グローバル コンフィギュレーション モードを終了し、特権 EXEC モードに戻ります。

次に、 show event manager policy registered 特権 EXEC コマンドを使用して、すべての登録済み EEM ポリシーを表示する例を示します。

Router# show event manager policy registered
 
No. Type Event Type Trap Time Registered Name
1 system timer cron Off Sat Oct11 01:43:18 2003 tm_cli_cmd.tcl
name {crontimer2} cron entry {0-59/1 0-23/1 * * 0-7}
nice 0 priority normal maxrun 240.000
 
2 system syslog Off Sat Oct11 01:43:28 2003 sl_intf_down.tcl
occurs 1 pattern {.*UPDOWN.*Ethernet1/0.*}
nice 0 priority normal maxrun 90.000
 
3 system proc abort Off Sat Oct11 01:43:38 2003 pr_cdp_abort.tcl
instance 1 path {cdp2.iosproc}
nice 0 priority normal maxrun 20.000
 

event manager scheduler suspend コマンドを再度入力すると、すべての EEM ポリシーの実行がただちに一時停止されます。

Router# configure terminal
Router(config)# event manager scheduler suspend
 
*Nov 2 15:34:39.000: %HA_EM-6-FMS_POLICY_EXEC: fh_io_msg: Policy execution has been
suspended

EEM ポリシーの管理

ユーザ ライブラリ ファイルまたはユーザ定義 EEM ポリシーの保存に使用するディレクトリを指定するには、この作業を実行します。


) この作業は、Tcl スクリプトを使用して記述される EEM ポリシーのみに適用されます。


手順の概要

1. enable

2. show event manager directory user [ library | policy ]

3. configure terminal

4. event manager directory user { library path | policy path }

5. exit

手順の詳細

 

コマンドまたはアクション
目的

ステップ 1

enable

 

Router> enable

特権 EXEC モードをイネーブルにします。

プロンプトが表示されたら、パスワードを入力します。

ステップ 2

show event manager directory user [ library | policy ]

 

Router# show event manager directory user library

(任意)EEM ユーザ ライブラリまたはポリシー ファイルの保存に使用するディレクトリを表示します。

オプションの library キーワードによって、ユーザ ライブラリ ファイルに使用されるディレクトリが表示されます。

オプションの policy キーワードによって、ユーザ定義 EEM ポリシーに使用されるディレクトリが表示されます。

ステップ 3

configure terminal

 

Router# configure terminal

グローバル コンフィギュレーション モードを開始します。

ステップ 4

event manager directory user { library path | policy path }

 

Router(config)# event manager directory user library disk0:/usr/lib/tcl

ユーザ ライブラリ ファイルまたはユーザ定義 EEM ポリシーの保存に使用するディレクトリを指定します。

ユーザ ディレクトリへの絶対パス名を指定する場合は、 path 引数を指定します。

ステップ 5

exit

 

Router(config)# exit

グローバル コンフィギュレーション モードを終了し、特権 EXEC モードに戻ります。

次に、 show event manager directory user 特権 EXEC コマンドを使用して、EEM ユーザ ライブラリ ファイルの保存に使用されるディレクトリがある場合に、そのディレクトリを表示する例を示します。

Router# show event manager directory user library
 
disk0:/usr/lib/tcl

履歴テーブル サイズの変更と EEM 履歴データの表示

履歴テーブルのサイズを変更し、EEM 履歴データを表示するには、次の任意の作業を実行します。

手順の概要

1. enable

2. configure terminal

3. event manager history size { events | traps } [ size ]

4. exit

5. show event manager history events [ detailed ] [ maximum number ]

6. show event manager history traps { server | policy }

手順の詳細


ステップ 1 enable

特権 EXEC モードをイネーブルにします。プロンプトが表示されたら、パスワードを入力します。

Router> enable
 

ステップ 2 configure terminal

グローバル コンフィギュレーション モードを開始します。

Router# configure terminal
 

ステップ 3 event manager history size { events | traps } [ size ]

このコマンドを使用して、EEM イベント履歴テーブルのサイズ、または、EEM SNMP トラップ履歴テーブルのサイズを変更します。次に、EEM イベント履歴テーブルのサイズを 30 エントリに変更する例を示します。

Router(config)# event manager history size events 30
 

ステップ 4 exit

グローバル コンフィギュレーション モードを終了し、特権 EXEC モードに戻ります。

Router(config)# exit
 

ステップ 5 show event manager history events [ detailed ] [ maximum number ]

このコマンドを使用して、トリガーされた各 EEM イベントについての情報を表示します。

Router# show event manager history events
 
No. Time of Event Event Type Name
1 Fri Sep 9 13:48:40 2005 syslog applet: one
2 Fri Sep 9 13:48:40 2005 syslog applet: two
3 Fri Sep 9 13:48:40 2005 syslog applet: three
4 Fri Sep 9 13:50:00 2005 timer cron script: tm_cli_cmd.tcl
5 Fri Sep 9 13:51:00 2005 timer cron script: tm_cli_cmd.tcl
 

ステップ 6 show event manager history traps [ server | policy]

このコマンドを使用して、EEM サーバまたは EEM ポリシーのいずれかから送信された EEM SNMP トラップを表示します。

Router# show event manager history traps
 
No. Time Trap Type Name
1 Fri Sep 9 13:48:40 2005 server applet: four
2 Fri Sep 9 13:57:03 2005 policy script: no_snmp_test.tcl
 


 

EEM を使用したソフトウェア モジュール方式プロセスの信頼性メトリック

Cisco IOS ソフトウェアモジュール方式プロセスの信頼性メトリックを表示するには、この任意の作業を実行します。 show event manager metric processes コマンドは、Cisco IOS Release 12.2(18)SXF4 およびそれ以降のリリースで導入され、ソフトウェア モジュール方式イメージでのみサポートされます。

手順の概要

1. enable

2. show event manager metric processes { all | process-name }

手順の詳細


ステップ 1 enable

特権 EXEC モードをイネーブルにします。プロンプトが表示されたら、パスワードを入力します。

Router> enable
 

ステップ 2 show event manager metric process { all | process-name }

このコマンドを使用して、プロセスの信頼性メトリック データを表示します。システムでは、プロセスの開始時と終了時にレコードが保存され、このデータが、信頼性分析の基本データとして使用されます。この部分の例では、システムに挿入されているすべてのカード上でのプロセスのメトリック データを示す、最初と最後のエントリが表示されます。

Router# show event manager metric process all
 
=====================================
process name: devc-pty, instance: 1
sub_system id: 0, version: 00.00.0000
--------------------------------
last event type: process start
recent start time: Fri Oct10 20:34:40 2005
recent normal end time: n/a
recent abnormal end time: n/a
number of times started: 1
number of times ended normally: 0
number of times ended abnormally: 0
most recent 10 process start times:
--------------------------
Fri Oct10 20:34:40 2005
--------------------------
 
most recent 10 process end times and types:
 
cumulative process available time: 6 hours 30 minutes 7 seconds 378 milliseconds
cumulative process unavailable time: 0 hours 0 minutes 0 seconds 0 milliseconds
process availability: 0.100000000
number of abnormal ends within the past 60 minutes (since reload): 0
number of abnormal ends within the past 24 hours (since reload): 0
number of abnormal ends within the past 30 days (since reload): 0
.
.
.
=====================================
process name: cdp2.iosproc, instance: 1
sub_system id: 0, version: 00.00.0000
--------------------------------
last event type: process start
recent start time: Fri Oct10 20:35:02 2005
recent normal end time: n/a
recent abnormal end time: n/a
number of times started: 1
number of times ended normally: 0
number of times ended abnormally: 0
most recent 10 process start times:
--------------------------
Fri Oct10 20:35:02 2005
--------------------------
 
most recent 10 process end times and types:
cumulative process available time: 6 hours 29 minutes 45 seconds 506 milliseconds
cumulative process unavailable time: 0 hours 0 minutes 0 seconds 0 milliseconds
process availability: 0.100000000
number of abnormal ends within the past 60 minutes (since reload): 0
number of abnormal ends within the past 24 hours (since reload): 0
number of abnormal ends within the past 30 days (since reload): 0


 

トラブルシューティングのヒント

特権 EXEC モードで debug event manager コマンドを使用して、EEM コマンド操作のトラブルシューティングを行います。debugging コマンドは注意して使用してください。生成される出力量によってルータの動作が遅くなったり、停止したりすることがあります。シスコ エンジニアの管理下に限ってこのコマンドを使用することを推奨します。

EEM サンプル ポリシーの変更

サンプル ポリシーの 1 つを変更するには、この作業を実行します。Cisco IOS ソフトウェアには、Embedded Event Manager が含まれるイメージに、いくつかのサンプル ポリシーが含まれています。EEM ポリシーの開発者は、ポリシーが実行されるイベントと、イベントの記録および応答に関連付けられているオプションを、カスタマイズすることによって、これらのポリシーを変更できます。さらに、開発者は、ポリシーの実行時に実装されるアクションを選択できます。

EEM サンプル ポリシー

Cisco には、 表 3 に示されているように、サンプル ポリシーのセットが含まれています。ユーザは、サンプル ポリシーをユーザ ディレクトリにコピーし、ポリシーを変更するか、または、独自にポリシーを記述することができます。現時点でポリシー作成のために Cisco でサポートされているスクリプト言語は、Tcl だけです。Tcl ポリシーは、Emacs などのテキスト エディタを使用して変更できます。ポリシーは、定義されている経過時間の秒数以内で実行する必要があり、時間変数はポリシー内で設定できます。現在のデフォルト値は 20 秒です。

表 3 で、EEM サンプル ポリシーについて説明します。

 

表 3 EEM サンプル ポリシーの説明

ポリシーの名前
説明

pr_cdp_abort.tcl

Cisco IOS Release 12.2(18)SXF4 ソフトウェア モジュール方式イメージで導入されました。このポリシーでは、cdp2.iosproc プロセスの強制終了イベントが監視されます。SYSLOG にメッセージが記録され、強制終了の詳細が E メールで送信されます。

pr_crash_reporter.tcl

Cisco IOS Release 12.2(18)SXF4 ソフトウェア モジュール方式イメージで導入されました。このポリシーでは、すべてのプロセスの強制終了イベントが監視されます。イベントが発生すると、ポリシーによって、クラッシュダンプ ファイルを含むクラッシュ情報が、CGI スクリプトによってデータが処理される指定された URL に、送信されます。

pr_iprouting_abort.tcl

Cisco IOS Release 12.2(18)SXF4 ソフトウェア モジュール方式イメージで導入されました。このポリシーでは、iprouting.iosproc プロセスの強制終了イベントが監視されます。SYSLOG にメッセージが記録され、強制終了の詳細が E メールで送信されます。

sl_intf_down.tcl

このポリシーは、設定可能な Syslog メッセージが記録されるときに実行されます。設定可能な CLI コマンドが実行され、結果が E メールで送信されます。

tm_cli_cmd.tcl

このポリシーは、設定可能な CRON エントリを使用して実行されます。設定可能な CLI コマンドが実行され、結果が E メールで送信されます。

tm_crash_history.tcl

Cisco IOS Release 12.2(18)SXF4 ソフトウェア モジュール方式イメージで導入されました。このポリシーは、毎日夜中に実行され、指定された E メール アドレスにプロセス クラッシュ履歴レポートが E メールで送信されます。

tm_crash_reporter.tcl

Cisco IOS Release 12.4(2)T で導入。このポリシーは、登録後 5 秒間実行されます。ポリシーが設定に保存される場合、ルータがリロードされるたびにも実行されます。ポリシーによって、リロード理由を示すプロンプトが表示されます。クラッシュが原因でリロードされる場合、ポリシーによって最新の crashinfo ファイルが検索され、この情報が指定された URL に送信されます。

tm_fsys_usage.tcl

Cisco IOS Release 12.2(18)SXF4 ソフトウェア モジュール方式イメージで導入されました。このポリシーは、設定可能な CRON エントリを使用して実行され、ディスク領域の使用状況が監視されます。ディスク領域の使用状況が、設定可能なしきい値を超えると、Syslog メッセージが表示されます。

wd_mem_reporter.tcl

Cisco IOS Release 12.2(18)SXF4 ソフトウェア モジュール方式イメージで導入されました。使用可能なメモリの容量が、使用可能な初期システム メモリの 20% を下回った場合、このポリシーによって、システム メモリの条件が低いことがレポートされます。Syslog メッセージが表示され、オプションで、E メールが送信されます。

使用可能なサンプル ポリシーおよびその実行方法についての詳細は、「EEM イベント ディテクタのデモ:例」を参照してください。

手順の概要

1. enable

2. show event manager policy available detailed policy-filename

3. 画面に表示されたサンプル ポリシーの内容を、テキスト エディタにカット アンド ペーストします。

4. ポリシーを編集し、新しいファイル名で保存します。

5. 新しいファイルを、ルータのフラッシュ メモリにコピーして戻します。

6. configure terminal

7. event manager directory user { library path | policy path }

8. event manager policy policy-filename [ type { system | user }] [ trap ]

手順の詳細


ステップ 1 enable

特権 EXEC モードをイネーブルにします。プロンプトが表示されたら、パスワードを入力します。

Router> enable
 

ステップ 2 show event manager policy available detailed policy-filename

ポリシーによって使用される環境変数と、ポリシーの実行方法の説明の詳細を含む、指定された実際のサンプル ポリシーを表示します。Cisco IOS 12.2(18)SXF4 では、 show event manager policy available コマンドと show event manager policy registered コマンドに、 detailed キーワードが導入されました。12.2(18)SXF4 よりも前の Cisco IOS Release では、この資料の設定例の項から 2 つの Tcl スクリプトの 1 つをコピーする必要があります(「Tcl でポリシーをプログラミングするサンプル スクリプト例」を参照)。次に、サンプル ポリシー tm_cli_cmd.tcl についての詳細が画面上に表示される例を示します。

Router# show event manager policy available detailed tm_cli_cmd.tcl
 

ステップ 3 画面に表示されたサンプル ポリシーの内容を、テキスト エディタにカット アンド ペーストします。

編集機能とコピー機能を使用して、ルータから別のデバイス上のテキスト エディタに、内容を移動します。

ステップ 4 ポリシーを編集し、新しいファイル名で保存します。

テキスト エディタを使用して、ポリシーを Tcl スクリプトとして変更します。ファイルの命名規則については、「EEM 用のシスコ ファイル命名規則」を参照してください。

ステップ 5 新しいファイルを、ルータのフラッシュ メモリにコピーして戻します。

ルータ上のフラッシュ ファイル システム(通常は disk0:)に、ファイルをコピーします。ファイルのコピーに関する詳細については、『 Cisco IOS Configuration Fundamentals Configuration Guide 』の「 Using the Cisco IOS File System 」の章を参照してください。

ステップ 6 configure terminal

グローバル コンフィギュレーション モードを開始します。

Router# configure terminal
 

ステップ 7 event manager directory user { library path | policy path }

ユーザ ライブラリ ファイルまたはユーザ定義 EEM ポリシーの保存に使用するディレクトリを指定します。次に、disk0 の user_library ディレクトリが、ユーザ ライブラリ ファイルを保存するディレクトリとして指定されます。

Router(config)# event manager directory user library disk0:/user_library
 

ステップ 8 event manager policy policy-filename [ type { system | user }] [ trap ]

ポリシー内で定義された指定イベントが発生した場合に、EEM ポリシーを実行するよう、定義します。次に、test.tcl という名前の EEM ポリシーが、ユーザ定義ポリシーとして登録される例を示します。

Router(config)# event manager policy test.tcl type user
 


 

Tcl を使用した EEM ポリシーのプログラミング

Tcl コマンド拡張を使用してポリシーをプログラムするには、この作業を実行します。既存のポリシーをコピーし、変更することを推奨します。EEM Tcl ポリシーには、 event_register Tcl コマンド拡張と本体の 2 つの必須部分が存在する必要があります。「Tcl ポリシーの構造と要件」 の概念にある他のすべてのセクションは、オプションです。

Tcl ポリシーの構造と要件

すべての EEM ポリシーでは、図 2 に示されているように、同じ構造が共有されます。EEM ポリシーには、 event_register Tcl コマンド拡張と本体の、2 つの必須部分が存在します。ポリシーの残りの部分の、環境定義必須、名前空間のインポート、開始ステータス、および終了ステータスは、オプションです。

図 2 Tcl ポリシーの構造と要件

 

各ポリシーの開始は、 event_register Tcl コマンド拡張を使用して検出するために、イベントを示し、登録する必要があります。ポリシーのこの部分によって、ポリシーの実行がスケジュールされます。使用可能な EEM event_register Tcl コマンド拡張のリストについては、「EEM イベント登録の Tcl コマンド拡張」を参照してください。次に、 event_register_timer Tcl コマンド拡張を登録する Tcl コード例を示します。

::cisco::eem::event_register_timer cron name crontimer2 cron_entry $_cron_entry maxrun 240
 

環境定義必須セクションはオプションで、環境変数の定義を含める必要があります。次に、一部の環境変数をチェックし、定義する Tcl コードの例を示します。

# Check if all the env variables that we need exist.
# If any of them does not exist, print out an error msg and quit.
if {![info exists _email_server]} {
set result \
"Policy cannot be run: variable _email_server has not been set"
error $result $errorInfo
}
if {![info exists _email_from]} {
set result \
"Policy cannot be run: variable _email_from has not been set"
error $result $errorInfo
}
if {![info exists _email_to]} {
set result \
"Policy cannot be run: variable _email_to has not been set"
error $result $errorInfo
 

名前空間のインポート セクションはオプションで、コード ライブラリが定義されます。次に、名前空間インポート セクションを設定する Tcl コードの例を示します。

namespace import ::cisco::eem::*
namespace import ::cisco::lib::*

ポリシーの本体は必須の構造で、次のものを含める必要があります。

検出されたイベントに関する情報の EEM への問い合わせに使用される event_reqinfo イベント情報の Tcl コマンド拡張。使用可能な EEM イベント情報の Tcl コマンド拡張のリストについては、「EEM イベント情報の Tcl コマンド拡張」を参照してください。

EEM 特有のアクションの指定に使用される、 action_syslog などのアクション Tcl コマンド拡張。使用可能な EEM アクションの Tcl コマンド拡張のリストについては、「EEM アクションの Tcl コマンド拡張」を参照してください。

一般的なシステム情報の取得に使用される、 sys_reqinfo_routername などのシステム情報の Tcl コマンド拡張。使用可能な EEM システム情報の Tcl コマンド拡張のリストについては、「EEM システム情報の Tcl コマンド拡張」を参照してください。

ポリシーからの、SMTP ライブラリ(E メール通知を送信)または CLI ライブラリ(CLI コマンドを実行)の使用。使用可能な SMTP ライブラリの Tcl コマンド拡張のリストについては、「SMTP ライブラリのコマンド拡張」を参照してください。使用可能な CLI ライブラリの Tcl コマンド拡張のリストについては、「CLI ライブラリのコマンド拡張」を参照してください。

他のポリシーによって使用される Tcl 変数の保存に使用される、 context_save および context_retrieve の Tcl コマンド拡張。

次に、イベントを問い合わせ、本体セクションの一部としてメッセージを記録するコードの Tcl コードの例を示します。

# Query the event info and log a message.
array set arr_einfo [event_reqinfo]
 
if {$_cerrno != 0} {
set result [format "component=%s; subsys err=%s; posix err=%s;\n%s" \
$_cerr_sub_num $_cerr_sub_err $_cerr_posix_err $_cerr_str]
error $result
}
 
global timer_type timer_time_sec
set timer_type $arr_einfo(timer_type)
set timer_time_sec $arr_einfo(timer_time_sec)
 
# Log a message.
set msg [format "timer event: timer type %s, time expired %s" \
$timer_type [clock format $timer_time_sec]]
 
action_syslog priority info msg $msg
if {$_cerrno != 0} {
set result [format "component=%s; subsys err=%s; posix err=%s;\n%s" \
$_cerr_sub_num $_cerr_sub_err $_cerr_posix_err $_cerr_str]
error $result
}

EEM 開始ステータス

EEM ポリシーの開始ステータスの部分は、前のポリシーが同じイベントに対して実行されたかどうかや、前のポリシーの終了ステータスを特定するために、使用されます。_entry_status 変数が定義されている場合、このイベントに対して前のポリシーがすでに実行されています。_entry_status 変数の値によって、前のポリシーの戻りコードが特定されます。

開始ステータス指定には、0(前のポリシーが正常終了した)、Not=0(前のポリシーに障害が発生した)、および Undefined(実行された前のポリシーがない)の、3 つの値のうちいずれか 1 つを使用できます。

EEM 終了ステータス

ポリシーでそのコードの実行を終了すると、終了値が設定されます。終了値は、Embedded Event Manager によって使用され、このイベントのデフォルト アクションがある場合に、それが適用されたかどうかが判断されます。ゼロの値は、デフォルト アクションが実行されていないことを意味します。ゼロではない値は、デフォルト アクションが実行されたことを意味します。終了ステータスは、同じイベントで実行される後続ポリシーに渡されます。

EEM ポリシーと Cisco エラー番号

一部の EEM Tcl コマンド拡張によって、Cisco エラー番号の Tcl グローバル変数の _cerrno が設定されます。_cerrno が設定されるたびに、他の 4 つの Tcl グローバル変数が _cerrno から分岐し、それとともに設定されます(_cerr_sub_num、_cerr_sub_err、_cerr_posix_err、および _cerr_str)。

たとえば、次の例の action_syslog コマンドでは、コマンド実行の副次的な影響としてこれらのグローバル変数が設定されます。

action_syslog priority warning msg “A sample message generated by action_syslog”
if {$_cerrno != 0} {
set result [format "component=%s; subsys err=%s; posix err=%s;\n%s" \
$_cerr_sub_num $_cerr_sub_err $_cerr_posix_err $_cerr_str]
error $result
}

_cerrno:32 ビットのエラー戻り値

コマンドによって設定された _cerrno は、次の形式の 32 ビットの整数を表す場合があります。

XYSSSSSSSSSSSSSEEEEEEEEPPPPPPPPP
 

たとえば、次のエラー戻り値は、EEM Tcl コマンド拡張から戻される場合があります。

862439AE
 

この番号は、次の 32 ビット値として解釈されます。

10000110001001000011100110101110
 

この 32 ビットの整数は、 表 4 に示されているように、5 つの変数に分けられます。

 

表 4 _cerrno:32 ビットのエラー戻り値の変数

変数
説明

XY

エラー クラス(エラーの重大度を示します)。この変数は、32 ビットのエラー戻り値の最初の 2 ビットに対応しています。前述のケースの 10 は、CERR_CLASS_WARNING を示します。

この変数特有の 4 つのエラー クラス エンコーディングについては、 表 5 を参照してください。

SSSSSSSSSSSSSS

最新のエラーが生成されたサブシステム番号
(13 ビット = 値 8192)。これは、32 ビット シーケンスの次の 13 ビットで、その整数値は $_cerr_sub_num に含まれています。

変数
説明

EEEEEEEE

サブシステム特有のエラー番号(8 ビット = 値 256)。このセグメントは、32 ビット シーケンスの次の 8 ビットで、このエラー番号に対応する文字列は、$_cerr_sub_err に含まれています。

PPPPPPPP

パススルー POSIX エラー コード(9 ビット = 値 512)。これは、32 ビット シーケンスの最後で、このエラー コードに対応する文字列は、$_cerr_posix_err に含まれています。

XY のエラー クラス エンコーディング

最初の変数 XY は、 表 5 に示されているように、エラー クラス エンコーディングを参照しています。

 

表 5 エラー クラス エンコーディング

00

CERR_CLASS_SUCCESS

01

CERR_CLASS_INFO

10

CERR_CLASS_WARNING

11

CERR_CLASS_FATAL

ゼロのエラー戻り値は、SUCCESS を示します。

手順の概要

1. enable

2. show event manager policy available detailed policy-filename

3. 画面に表示されたサンプル ポリシーの内容を、テキスト エディタにカット アンド ペーストします。

4. 必要な event_register Tcl コマンド拡張を定義します。

5. 適切な名前空間を、::cisco 階層構造に追加します。

6. Must Define セクションをプログラムし、このポリシーで使用される各環境変数をチェックします。

7. スクリプトの本体をプログラムします。

8. 開始ステータスをチェックし、ポリシーがこのイベントに対して前に実行されたかどうかを判断します。

9. 終了ステータスをチェックし、デフォルト アクションが存在する場合に、このイベントのデフォルト アクションが適用されたかどうかを判断します。

10. Cisco エラー番号(_cerrno)の Tcl グローバル変数を設定します。

11. 新しいファイル名で Tcl スクリプトを保存し、Tcl スクリプトをルータにコピーします。

12. configure terminal

13. event manager directory user { library path | policy path }

14. event manager policy policy-filename [ type { system | user }] [ trap ]

15. ポリシーを実行し、ポリシーを観察します。

16. ポリシーが正しく実行されていない場合、デバッグのテクニックを使用します。

手順の詳細


ステップ 1 enable

特権 EXEC モードをイネーブルにします。プロンプトが表示されたら、パスワードを入力します。

Router> enable
 

ステップ 2 show event manager policy available detailed policy-filename

ポリシーによって使用される環境変数と、ポリシーの実行方法の説明の詳細を含む、指定された実際のサンプル ポリシーを表示します。Cisco IOS 12.2(18)SXF4 では、 show event manager policy available コマンドと show event manager policy registered コマンドに、 detailed キーワードが導入されました。12.2(18)SXF4 よりも前の Cisco IOS Release では、この資料の設定例の項から 2 つの Tcl スクリプトの 1 つをコピーする必要があります(「Tcl でポリシーをプログラミングするサンプル スクリプト例」を参照)。次に、サンプル ポリシー tm_cli_cmd.tcl についての詳細が画面上に表示される例を示します。

Router# show event manager policy available detailed tm_cli_cmd.tcl
 

ステップ 3 画面に表示されたサンプル ポリシーの内容を、テキスト エディタにカット アンド ペーストします。

編集機能とコピー機能を使用して、ルータから別のデバイス上のテキスト エディタに、内容を移動します。テキスト エディタを使用して、ポリシーを Tcl スクリプトとして編集します。

ステップ 4 必要な event_register Tcl コマンド拡張を定義します。

検出するイベントについて、 表 6 から適切な event_register Tcl コマンド拡張を選択し、ポリシーに追加します。

 

表 6 EEM イベント登録の Tcl コマンド拡張

イベント登録の Tcl コマンド拡張

event_register_appl

event_register_cli

event_register_counter

event_register_gold

event_register_interface

event_register_ioswdsysmon

event_register_ipsla

event_register_nf

event_register_none

event_register_oir

event_register_process

event_register_resource

event_register_rf

event_register_routing

event_register_rpc

event_register_snmp

event_register_snmp_notification

event_register_snmp_object

event_register_syslog

event_register_timer

event_register_timer_subscriber

event_register_track

event_register_wdsysmon

ステップ 5 適切な名前空間を、::cisco 階層構造に追加します。

ポリシーの開発者は、Cisco IOS EEM によって使用されるすべての拡張をグループ化するため、Tcl ポリシーで新しい名前空間 ::cisco を使用できます。::cisco 階層構造の下には、2 つの名前空間があります。 表 7 に、各名前空間の下に属する EEM Tcl コマンド拡張のカテゴリを示します。

 

表 7 Cisco IOS EEM 名前空間グルーピング

名前空間
Tcl コマンド拡張のカテゴリ

::cisco::eem

EEM イベント登録

EEM イベント情報

EEM イベント パブリッシュ

EEM アクション

EEM ユーティリティ

EEM コンテキスト ライブラリ

EEM システム情報

CLI ライブラリ

::cisco::lib

SMTP ライブラリ


) 前述のコマンドの使用時に、適切な名前空間をインポートするか、または、認定コマンド名を使用します。


ステップ 6 Must Define セクションをプログラムし、このポリシーで使用される各環境変数をチェックします。

この手順は任意です。Must Define は、ポリシーによって必要とされるすべての EEM 環境変数が、回復アクションの実行前に定義されているかどうかをテストする、ポリシーのセクションです。ポリシーによって EEM 環境変数が使用されない場合、Must Define セクションは不要です。EEM スクリプトの EEM 環境変数は、ポリシーの実行前にポリシーに対して外部定義された Tcl グローバル変数です。EEM 環境変数を定義するには、Embedded Event Manager コンフィギュレーション コマンド event manager environment CLI コマンド を使用します。慣例として、すべてのシスコ EEM 環境変数は、「 _ 」(アンダースコア)で始まります。将来的な競合を避けるため、「 _ 」で始まる新しい変数を定義しないことをお勧めします。


show event manager environment 特権 EXEC コマンドを使用して、システムの Embedded Event Manager 環境変数セットを表示できます。


たとえば、サンプル ポリシーで定義されている Embedded Event Manager 環境変数には、E メール変数が含まれます。適切に動作させるためには、E メールを送信するサンプル ポリシーに、 表 8 で示されている変数が設定されている必要があります。

表 8 で、EEM サンプル ポリシーで使用される E メール特有の環境変数について説明します。

 

表 8 サンプル ポリシーで使用される E メール特有の環境変数

環境変数
説明

_email_server

E メール送信に使用される Simple Mail Transfer Protocol(SMTP; シンプル メール転送プロトコル)メール サーバ。

E メール サーバ名は、次のテンプレート形式のいずれかで使用できます。

username:password@host

username@host

host

_email_to

E メールの送信先アドレス。

engineering@example.com

_email_from

E メールの送信元アドレス。

devtest@example.com

_email_cc

E メールのコピーの送信先アドレス。

manager@example.com

次に、E メール特有の環境変数のプログラムをチェックする Must Define セクションの例を示します。

例 1-1 Must Define の例

if {![info exists _email_server]} {
set result \
"Policy cannot be run: variable _email_server has not been set"
error $result $errorInfo
}
if {![info exists _email_from]} {
set result \
"Policy cannot be run: variable _email_from has not been set"
error $result $errorInfo
}
if {![info exists _email_to]} {
set result \
"Policy cannot be run: variable _email_to has not been set"
error $result $errorInfo
}
if {![info exists _email_cc]} {
set result \
"Policy cannot be run: variable _email_cc has not been set"
error $result $errorInfo
}
 

ステップ 7 スクリプトの本体をプログラムします。

スクリプトのこのセクションでは、次のいずれかを定義できます。

検出されたイベントに関する情報の EEM への問い合わせに使用される event_reqinfo イベント情報の Tcl コマンド拡張。

EEM 特有のアクションの指定に使用される、 action_syslog などのアクション Tcl コマンド拡張。

一般的なシステム情報の取得に使用される、 sys_reqinfo_routername などのシステム情報の Tcl コマンド拡張。

他のポリシーによって使用される Tcl 変数の保存に使用される、 context_save および context_retrieve の Tcl コマンド拡張。

ポリシーからの、SMTP ライブラリ(E メール通知を送信)または CLI ライブラリ(CLI コマンドを実行)の使用。

ステップ 8 開始ステータスをチェックし、ポリシーがこのイベントに対して前に実行されたかどうかを判断します。

前のポリシーが正常終了した場合、現在のポリシーは、実行が必要な場合と、実行が不要な場合があります。開始ステータス指定には、0(前のポリシーが正常終了した)、Not=0(前のポリシーに障害が発生した)、および Undefined(実行された前のポリシーがない)の、3 つの値のうちいずれか 1 つを使用できます。

ステップ 9 終了ステータスをチェックし、デフォルト アクションが存在する場合に、このイベントのデフォルト アクションが適用されたかどうかを判断します。

ゼロの値は、デフォルト アクションが実行されていないことを意味します。ゼロではない値は、デフォルト アクションが実行されたことを意味します。終了ステータスは、同じイベントで実行される後続ポリシーに渡されます。

ステップ 10 Cisco エラー番号(_cerrno)の Tcl グローバル変数を設定します。

一部の EEM Tcl コマンド拡張によって、Cisco エラー番号の Tcl グローバル変数の _cerrno が設定されます。_cerrno が設定されるたびに、他の 4 つの Tcl グローバル変数が _cerrno から分岐し、それとともに設定されます(_cerr_sub_num、_cerr_sub_err、_cerr_posix_err、および _cerr_str)。

たとえば、次の例の action_syslog コマンドでは、コマンド実行の副次的な影響としてこれらのグローバル変数が設定されます。

action_syslog priority warning msg “A sample message generated by action_syslog
if {$_cerrno != 0} {
set result [format "component=%s; subsys err=%s; posix err=%s;\n%s" \
$_cerr_sub_num $_cerr_sub_err $_cerr_posix_err $_cerr_str]
error $result
}
 

ステップ 11 新しいファイル名で Tcl スクリプトを保存し、Tcl スクリプトをルータにコピーします。

Embedded Event Manager ポリシー ファイル名は、次の仕様に従っています。

オプションのプレフィクス Mandatory. がある場合、これは、システム ポリシーがまだ登録されていない場合に、自動的に登録される必要があるシステム ポリシーであることを示します。たとえば、Mandatory.sl_text.tcl などです。

指定された 1 つめのイベントの 2 文字の省略形が含まれるファイル名の本体部(表 2 を参照)、下線文字部、および、ポリシーをさらに示す説明フィールド部。

ファイル名拡張子部は、.tcl と定義されます。

詳細については、「EEM 用のシスコ ファイル命名規則」を参照してください。

ルータ上のフラッシュ ファイル システム(通常は disk0:)に、ファイルをコピーします。ファイルのコピーに関する詳細については、『 Cisco IOS Configuration Fundamentals Configuration Guide 』の「 Using the Cisco IOS File System 」の章を参照してください。

ステップ 12 configure terminal

グローバル コンフィギュレーション モードを開始します。

Router# configure terminal
 

ステップ 13 event manager directory user { library path | policy path }

ユーザ ライブラリ ファイルまたはユーザ定義 EEM ポリシーの保存に使用するディレクトリを指定します。次に、disk0 の user_library ディレクトリが、ユーザ ライブラリ ファイルを保存するディレクトリとして指定されます。

Router(config)# event manager directory user library disk0:/user_library
 

ステップ 14 event manager policy policy-filename [ type { system | user }] [ trap ]

ポリシー内で定義された指定イベントが発生した場合に、EEM ポリシーを実行するよう、定義します。次に、cl_mytest.tcl という名前の EEM ポリシーが、ユーザ定義ポリシーとして登録される例を示します。

Router(config)# event manager policy cl_mytest.tcl type user
 

ステップ 15 ポリシーを実行し、ポリシーを観察します。

ポリシーの実行をテストするには、ポリシーが実行される原因となる条件を生成し、ポリシーが想定どおりに実行されていることを確認します。

ステップ 16 ポリシーが正しく実行されていない場合、デバッグのテクニックを使用します。

Cisco IOS debug event manager CLI コマンドをそのさまざまなキーワードとともに使用して、問題をデバッグします。Tcl 特有のキーワード使用の詳細については、「トラブルシューティングのヒント」を参照してください。


 

トラブルシューティングのヒント

Tcl 拡張コマンドで問題をデバッグするには、 debug event manager tcl commands CLI コマンドを使用します。イネーブルの場合、このコマンドによって、CLI のやり取りを処理する TTY セッションに渡され、TTY セッションから読み戻される、すべてのデータが表示されます。このデータを使用すると、ユーザが CLI に渡すコマンドが有効になります。

CLI ライブラリを使用すると、ユーザは、CLI コマンドを実行し、Tcl のコマンドの出力を取得できます。CLI ライブラリで問題をデバッグするには、 debug event manager tcl cli-library CLI コマンドを使用します。

SMTP ライブラリを使用すると、ユーザは、SMTP E メール サーバへ、E メール メッセージを送信できます。SMTP ライブラリで問題をデバッグするには、 debug event manager tcl smtp_library CLI コマンドを使用します。イネーブルの場合、このコマンドによって、SMTP ライブラリ ルーチンに渡され、SMTP ライブラリ ルーチンから読み戻される、すべてのデータが表示されます。このデータを使用すると、ユーザが SMTP ライブラリに渡すコマンドが有効になります。

Tcl は、コマンドを上書きできる、融通性のある言語です。たとえば、スカラ変数が設定されているときに、 set コマンドを変更し、メッセージを表示する set コマンドのバージョンを作成することができます。ポリシーに set コマンドが入力されると、スカラ変数が設定されているときは常にメッセージが表示され、これによって、スカラ変数をデバッグする方法が用意されます。このデバッグ テクニックの例を参照するには、「Tcl set コマンドの操作:例」を参照してください。

これらのデバッグ テクニックのいくつかの例を参照するには、「Embedded Event Manager ポリシーのデバッグ例」を参照してください。

EEM ユーザ Tcl ライブラリ索引の作成

Tcl ファイルのライブラリに含まれているすべての手順のディレクトリが含まれている、索引ファイルを作成するには、この作業を実行します。この作業を行うと、EEM Tcl のライブラリ サポートをテストできます。この作業では、Tcl ライブラリ ファイルが含まれるライブラリ ディレクトリが作成され、ファイルがディレクトリにコピーされ、ライブラリ ファイルにあるすべての手順のディレクトリが含まれる索引 tclIndex が作成されます。索引が作成されない場合、Tcl 手順を参照する EEM ポリシーを実行するときに、Tcl 手順は見つかりません。

手順の概要

1. ワークステーション(UNIX、Linux、PC、または Mac)で、ライブラリ ディレクトリを作成し、Tcl ライブラリ ファイルをディレクトリにコピーします。

2. tclsh

3. auto_mkindex directory_name *.tcl

4. ターゲット ルータ上のユーザ ライブラリ ファイルの保存に使用されるディレクトリに、ステップ 1 から Tcl ライブラリ ファイルをコピーし、ステップ 3 から tclIndex ファイルをコピーします。

5. Tcl で記述されたユーザ定義 EEM ポリシーを、ターゲット ルータ上でユーザ定義 EEM ポリシーの保存に使用されるディレクトリにコピーします。

6. enable

7. configure terminal

8. event manager directory user library path

9. event manager directory user policy path

10. event manager policy policy-filename [ type { system | user }] [ trap ]

11. event manager run policy-filename

手順の詳細


ステップ 1 ワークステーション(UNIX、Linux、PC、または Mac)で、ライブラリ ディレクトリを作成し、Tcl ライブラリ ファイルをディレクトリにコピーします。

次の例ファイルを使用すると、Tcl シェルが実行されているワークステーション上で、tclIndex を作成できます。

lib1.tcl

proc test1 {} {
puts "In procedure test1"
}
 
proc test2 {} {
puts "In procedure test2"
}
 

lib2.tcl

proc test3 {} {
puts "In procedure test3"
}
 

ステップ 2 tclsh

このコマンドを使用して、Tcl シェルを開始します。

workstation% tclsh
 

ステップ 3 auto_mkindex directory_name *.tcl

auto_mkindex コマンドを使用して、tclIndex ファイルを作成します。すべての手順のディレクトリが含まれる tclIndex ファイルは、Tcl ライブラリ ファイルに含まれていました。どのディレクトリにも 1 つの tclIndex ファイルのみを存在させることができ、他の Tcl ファイルはグループ化しておくことが可能であるため、ディレクトリ内で auto_mkindex を実行することを推奨します。ディレクトリ内で auto_mkindex を実行すると、特定の tclIndex を使用してどの Tcl ソース ファイルを索引化できるかが判断されます。

workstation% auto_mkindex eem_library *.tcl
 

次に、lib1.tcl ファイルと lib2.tcl ファイルがライブラリ ファイル ディレクトリにあり、 auto_mkindex コマンドが実行されたときに、tclIndex が作成される例を示します。

tclIndex

# Tcl autoload index file, version 2.0
# This file is generated by the "auto_mkindex" command
# and sourced to set up indexing information for one or
# more commands. Typically each line is a command that
# sets an element in the auto_index array, where the
# element name is the name of a command and the value is
# a script that loads the command.
 
set auto_index(test1) [list source [file join $dir lib1.tcl]]
set auto_index(test2) [list source [file join $dir lib1.tcl]]
set auto_index(test3) [list source [file join $dir lib2.tcl]]
 

ステップ 4 ターゲット ルータ上のユーザ ライブラリ ファイルの保存に使用されるディレクトリに、ステップ 1 から Tcl ライブラリ ファイルをコピーし、ステップ 3 から tclIndex ファイルをコピーします。

ステップ 5 Tcl で記述されたユーザ定義 EEM ポリシーを、ターゲット ルータ上でユーザ定義 EEM ポリシーの保存に使用されるディレクトリにコピーします。ディレクトリは、ステップ 4 で使用されるディレクトリと同じディレクトリを使用できます。

ユーザ定義 EEM ポリシーを保存するディレクトリは、ステップ 4 で使用されるディレクトリと同じディレクトリを使用できます。次に、EEM でサポートされる Tcl ライブラリのテストに、ユーザ定義 EEM ポリシーを使用できる例を示します。

libtest.tcl

::cisco::eem::event_register_none
 
namespace import ::cisco::eem::*
namespace import ::cisco::lib::*
 
global auto_index auto_path
 
puts [array names auto_index]
 
if { [catch {test1} result]} {
puts "calling test1 failed result = $result $auto_path"
}
 
if { [catch {test2} result]} {
puts "calling test2 failed result = $result $auto_path"
}
 
if { [catch {test3} result]} {
puts "calling test3 failed result = $result $auto_path"
}
 

ステップ 6 enable

特権 EXEC モードをイネーブルにします。プロンプトが表示されたら、パスワードを入力します。

Router> enable
 

ステップ 7 configure terminal

グローバル コンフィギュレーション モードをイネーブルにします。

Router# configure terminal
 

ステップ 8 event manager directory user library path

このコマンドを使用して、EEM ユーザ ライブラリ ディレクトリを指定します。これは、ステップ 4 のファイルがコピーされたディレクトリです。

router(config)# event manager directory user library disk2:/eem_library
 

ステップ 9 event manager directory user policy path

このコマンドを使用して、EEM ユーザ ポリシー ディレクトリを指定します。これは、ステップ 5 のファイルがコピーされたディレクトリです。

router(config)# event manager directory user policy disk2:/eem_policies
 

ステップ 10 event manager policy policy-name [ type { system | user } [ trap ]

このコマンドを使用して、ユーザ定義 EEM ポリシーを登録します。この例では、libtest.tcl という名前のポリシーが登録されます。

router(config)# event manager policy libtest.tcl
 

ステップ 11 event manager run policy-name

このコマンドを使用して、手作業で EEM ポリシーを実行します。この例では、libtest.tcl という名前のポリシーが実行され、EEM の Tcl サポートがテストされます。次に、EEM の Tcl サポートが正常終了した出力例を示します。

router(config)# event manager run libtest.tcl
 
The following output is displayed:
 
01:24:37: %HA_EM-6-LOG: libtest.tcl: In procedure test1
01:24:37: %HA_EM-6-LOG: libtest.tcl: In procedure test2
01:24:37: %HA_EM-6-LOG: libtest.tcl: In procedure test3
 


 

EEM ユーザ Tcl パッケージ索引の作成

すべての Tcl パッケージのディレクトリと、Tcl パッケージ ファイルのライブラリに含まれるバージョン情報が含まれる、Tcl パッケージの索引ファイルを作成するには、この作業を実行します。Tcl パッケージは、Tcl package キーワードを使用してサポートされ、このサポートは、Cisco IOS Release 12.4(11)T で導入されました。

Tcl パッケージは、EEM システム ライブラリ ディレクトリまたは EEM ユーザ ライブラリ ディレクトリのいずれかにあります。 package require Tcl コマンドが実行されると、ユーザ ライブラリ ディレクトリで、まず、pkgIndex.tcl ファイルが検索されます。pkgIndex.tcl ファイルがユーザ ディレクトリで見つからない場合、システム ライブラリ ディレクトリが検索されます。この作業では、 pkg_mkIndex コマンドを使用して、適切なライブラリ ディレクトリに Tcl パッケージディレクトリ pkgIndex.tcl ファイルが作成され、バージョン情報とともに、ディレクトリに含まれるすべての Tcl パッケージについての情報が含められます。索引が作成されない場合、 package require Tcl コマンドが含まれる、EEM ポリシーが実行されたときに、Tcl パッケージは見つかりません。

EEM で Tcl パッケージ サポートを使用すると、ユーザは、Tcl の XML_RPC などのパッケージにアクセスできます。Tcl パッケージ索引が作成されると、Tcl スクリプトによって、外部エンティティに対して、XML-RPC コールを簡単に実行できます。


) C プログラミング コードで実装されるパッケージは、EEM ではサポートされません。


手順の概要

1. ワークステーション(UNIX、Linux、PC、または Mac)で、ライブラリ ディレクトリを作成し、Tcl パッケージ ファイルをディレクトリにコピーします。

2. tclsh

3. pkg_mkIndex directory_name *.tcl

4. ターゲット ルータ上のユーザ ライブラリ ファイルの保存に使用されるディレクトリに、ステップ 1 から Tcl パッケージ ファイルをコピーし、ステップ 3 から pkgIndex ファイルをコピーします。

5. Tcl で記述されたユーザ定義 EEM ポリシーを、ターゲット ルータ上でユーザ定義 EEM ポリシーの保存に使用されるディレクトリにコピーします。

6. enable

7. configure terminal

8. event manager directory user library path

9. event manager directory user policy path

10. event manager policy policy-filename [ type { system | user }] [ trap ]

11. event manager run policy-filename

手順の詳細


ステップ 1 ワークステーション(UNIX、Linux、PC、または Mac)で、ライブラリ ディレクトリを作成し、Tcl パッケージ ファイルをディレクトリにコピーします。

ステップ 2 tclsh

このコマンドを使用して、Tcl シェルを開始します。

workstation% tclsh
 

ステップ 3 pkg_mkindex directory_name *.tcl

pkg_mkindex コマンドを使用して、pkgIndex ファイルを作成します。すべてのパッケージのディレクトリが含まれる pkgIndex ファイルは、Tcl ライブラリ ファイルに含まれていました。どのディレクトリにも 1 つの pkgIndex ファイルのみを存在させることができ、他の Tcl ファイルはグループ化しておくことが可能であるため、ディレクトリ内で pkg_mkindex を実行することを推奨します。ディレクトリ内で pkg_mkindex を実行すると、特定の pkgIndex を使用してどの Tcl パッケージ ファイルを索引化できるかが判断されます。

workstation% pkg_mkindex eem_library *.tcl
 

次に、いくつかの Tcl パッケージがライブラリ ファイル ディレクトリにあり、 pkg_mkindex コマンドが実行されたときに、pkgIndex が作成される例を示します。

pkgIndex

# Tcl package index file, version 1.1
# This file is generated by the "pkg_mkIndex" command
# and sourced either when an application starts up or
# by a "package unknown" script. It invokes the
# "package ifneeded" command to set up package-related
# information so that packages will be loaded automatically
# in response to "package require" commands. When this
# script is sourced, the variable $dir must contain the
# full path name of this file's directory.
 
package ifneeded xmlrpc 0.3 [list source [file join $dir xmlrpc.tcl]]
 
 

ステップ 4 ターゲット ルータ上のユーザ ライブラリ ファイルの保存に使用されるディレクトリに、ステップ 1 から Tcl ライブラリ ファイルをコピーし、ステップ 3 から pkgIndex ファイルをコピーします。

ステップ 5 Tcl で記述されたユーザ定義 EEM ポリシーを、ターゲット ルータ上でユーザ定義 EEM ポリシーの保存に使用されるディレクトリにコピーします。ディレクトリは、ステップ 4 で使用されるディレクトリと同じディレクトリを使用できます。

ユーザ定義 EEM ポリシーを保存するディレクトリは、ステップ 4 で使用されるディレクトリと同じディレクトリを使用できます。次に、EEM でサポートされる Tcl パッケージのテストに、ユーザ定義 EEM ポリシーを使用できる例を示します。

packagetest.tcl

::cisco::eem::event_register_none maxrun 1000000.000
#
# test if xmlrpc available
#
#
# Namespace imports
#
namespace import ::cisco::eem::*
namespace import ::cisco::lib::*
#
package require xmlrpc
puts "Did you get an error?"
 

ステップ 6 enable

特権 EXEC モードをイネーブルにします。プロンプトが表示されたら、パスワードを入力します。

Router> enable
 

ステップ 7 configure terminal

グローバル コンフィギュレーション モードをイネーブルにします。

Router# configure terminal
 

ステップ 8 event manager directory user library path

このコマンドを使用して、EEM ユーザ ライブラリ ディレクトリを指定します。これは、ステップ 4 のファイルがコピーされたディレクトリです。

router(config)# event manager directory user library disk2:/eem_library
 

ステップ 9 event manager directory user policy path

このコマンドを使用して、EEM ユーザ ポリシー ディレクトリを指定します。これは、ステップ 5 のファイルがコピーされたディレクトリです。

router(config)# event manager directory user policy disk2:/eem_policies
 

ステップ 10 event manager policy policy-name [ type { system | user } [ trap ]

このコマンドを使用して、ユーザ定義 EEM ポリシーを登録します。この例では、packagetest.tcl という名前のポリシーが登録されます。

router(config)# event manager policy packagetest.tcl
 

ステップ 11 event manager run policy-name

このコマンドを使用して、手作業で EEM ポリシーを実行します。この例では、packagetest.tcl という名前のポリシーが実行され、EEM の Tcl パッケージ サポートがテストされます。

router(config)# event manager run packagetest.tcl
 


 

Tcl を使用した Embedded Event Manager(EEM)ポリシー記述の設定例

ここでは、次の設定例について説明します。

「Tcl セッションへのユーザ名割り当て:例」

「EEM イベント ディテクタのデモ:例」

「Tcl でポリシーをプログラミングするサンプル スクリプト例」

「Embedded Event Manager ポリシーのデバッグ例」

「Tcl set コマンドの操作:例」

「RPC イベント ディテクタ:例」

Tcl セッションへのユーザ名割り当て:例

次に、Tcl セッションに関連付けられるユーザ名を設定する例を示します。Authentication, Authorization, and Accounting(AAA; 認証、認可、アカウンティング)セキュリティを使用し、コマンド ベースで認可を実装する場合、 event manager session cli username コマンドを使用して、Tcl セッションに関連付けられるユーザ名を設定する必要があります。Tcl ポリシーによって CLI コマンドが実行されるときに、ユーザ名が使用されます。TACACS+ では、ポリシーを実行している Tcl セッションに関連付けられているユーザ名を使用して、各 CLI コマンドが確認されます。ポリシーを登録するには、ルータが特権 EXEC モードである必要があるため、Tcl ポリシーからのコマンドは、通常、確認されません。この例では、ユーザ名は yourname で、これは、CLI コマンド セッションが EEM ポリシー内から開始されるたびに使用されるユーザ名です。

configure terminal
event manager session cli username yourname
end

EEM イベント ディテクタのデモ:例

この例では、サンプル ポリシーを使用して、Embedded Event Manager ポリシーの使用方法を示します。後述のセクションで、サンプル ポリシーの使用方法について説明します。

EEM サンプル ポリシーの説明

サンプル ポリシーのイベント マネージャ環境変数

一部の EEM ポリシーの登録

すべてのサンプル ポリシーの基本設定の詳細

サンプル ポリシーの使用

EEM サンプル ポリシーの説明

この設定例では、いくつかの EEM サンプル ポリシーについて説明します。

ap_perf_test_base_cpu.tcl:EEM ポリシーの CPU パフォーマンスを測定するために実行されます。

no_perf_test_init.tcl:EEM ポリシーの CPU パフォーマンスを測定するために実行されます。

sl_intf_down.tcl:設定可能な Syslog メッセージが記録されるときに、実行されます。最大で 2 つまでの CLI コマンドを実行し、結果が E メールで送信されます。

tm_cli_cmd.tcl:設定可能な CRON エントリを使用して実行されます。設定可能な CLI コマンドが実行され、結果が E メールで送信されます。

tm_crash_reporter.tcl:Cisco IOS Release 12.4(2)T、12.2(31)SB3、および 12.2(33)SRB で導入されました。登録後の 5 秒間と、ルータの起動後の 5 秒間に、実行されます。トリガーされると、スクリプトによって、リロード原因の検索が試行されます。リロードの原因がクラッシュの場合、ポリシーによって、関連する crashinfo ファイルが検索され、環境変数 _crash_reporter_url でユーザによって指定された URL へ、この情報が送信されます。

tm_fsys_usage.tcl:Cisco IOS Release 12.2(18)SXF4 Cisco IOS ソフトウェア モジュール方式イメージで導入されました。このポリシーは、設定可能な CRON エントリを使用して実行され、ディスク領域の使用状況が監視されます。ディスク領域の使用状況が、設定可能なしきい値を超えると、Syslog メッセージが表示されます。

サンプル ポリシーのイベント マネージャ環境変数

イベント マネージャ環境変数は、ポリシーの登録および実行の前に EEM ポリシーに対して外部定義された Tcl グローバル変数です。サンプル ポリシーには、3 つの E メール環境変数の設定が必要です(E メール変数のリストについては、表 8 を参照してください)。_email_cc のみが任意です。他の必須および任意の変数設定については、次の表で説明します。

表 9 で、ap_perf_test_base_cpu.tcl サンプル ポリシーの実行前に設定する必要がある EEM 環境変数について説明します。

 

表 9 ap_perf_test_base_cpu.tcl ポリシーで使用される環境変数

環境変数
説明

_perf_iterations

測定の反復回数。

100

_perf_cmd1

測定テストの一部として実行される最初の非インタラクティブ CLI コマンド。この変数は任意で、指定する必要はありません。

enable

_perf_cmd2

測定テストの一部として実行される 2 番目の非インタラクティブ CLI コマンド。_perf_cmd2 を使用するには、_perf_cmd1 を定義する必要があります。この変数は任意で、指定する必要はありません。

show version

_perf_cmd3

測定テストの一部として実行される 3 番目の非インタラクティブ CLI コマンド。_perf_cmd3 を使用するには、_perf_cmd1 を定義する必要があります。この変数は任意で、指定する必要はありません。

show interface counters protocol status

表 10 で、no_perf_test_init.tcl サンプル ポリシーの実行前に設定する必要がある EEM 環境変数について説明します。

 

表 10 no_perf_test_init.tcl ポリシーで使用される環境変数

環境変数
説明

_perf_iterations

測定の反復回数。

100

_perf_cmd1

測定テストの一部として実行される最初の非インタラクティブ CLI コマンド。この変数は任意で、指定する必要はありません。

enable

_perf_cmd2

測定テストの一部として実行される 2 番目の非インタラクティブ CLI コマンド。_perf_cmd2 を使用するには、_perf_cmd1 を定義する必要があります。この変数は任意で、指定する必要はありません。

show version

_perf_cmd3

測定テストの一部として実行される 3 番目の非インタラクティブ CLI コマンド。_perf_cmd3 を使用するには、_perf_cmd1 を定義する必要があります。この変数は任意で、指定する必要はありません。

show interface counters protocol status

表 11 で、sl_intf_down.tcl サンプル ポリシーの実行前に設定する必要がある EEM 環境変数について説明します。

 

表 11 sl_intf_down.tcl ポリシーで使用される環境変数

環境変数
説明

_config_cmd1

実行される 1 番目のコンフィギュレーション コマンド。

interface Ethernet1/0

_config_cmd2

実行される 2 番目のコンフィギュレーション コマンド。この変数は任意で、指定する必要はありません。

no shutdown

_syslog_pattern

ポリシー実行時を決定するために syslog メッセージを比較するために使用する正規表現パターン マッチ文字列。

.*UPDOWN.*FastEthernet0/0.*

表 12 で、tm_cli_cmd.tcl サンプル ポリシーの実行前に設定する必要がある EEM 環境変数について説明します。

 

表 12 tm_cli_cmd.tcl ポリシーで使用される環境変数

環境変数
説明

_cron_entry

ポリシーが実行されるときを決定する CRON 仕様。

0-59/1 0-23/1 * * 0-7

_show_cmd

ポリシーの実行時に実行される CLI コマンド。

show version

表 13 で、tm_crash_reporter.tcl サンプル ポリシーの実行前に設定する必要がある EEM 環境変数について説明します。

 

表 13 tm_crash_reporter.tcl ポリシーで使用される環境変数

環境変数
説明

_crash_reporter_debug

tm_crash_reporter.tcl のデバッグ情報がイネーブルであるかどうかを決定する値。この変数は任意で、指定する必要はありません。

1

_crash_reporter_url

クラッシュ レポートが送信される URL 位置。

http://www.example.com/fm/interface_tm.cgi

表 14 で、tm_fsys_usage.tcl サンプル ポリシーの実行前に設定する必要がある EEM 環境変数について説明します。

 

表 14 tm_fsys_usage.tcl ポリシーで使用される環境変数

環境変数
説明

_tm_fsys_usage_cron

event_register TCL コマンド拡張で使用される CRON 仕様。指定されない場合、tm_fsys_usage.tcl ポリシーが 1 分に 1 回トリガーされます。この変数は任意で、指定する必要はありません。

0-59/1 0-23/1 * * 0-7

_tm_fsys_usage_debug

この変数が値 1 に設定された場合、システムのすべてのエントリのディスク使用率情報が表示されます。この変数は任意で、指定する必要はありません。

1

_tm_fsys_usage_
freebytes

システムまたは特定のプレフィクスの空きバイト数しきい値。空きスペースが所定の値を下回ると、警告が表示されます。この変数は任意で、指定する必要はありません。

disk2:98000000

_tm_fsys_usage_percent

システムまたは特定のプレフィクスのディスク使用割合しきい値。ディスク使用割合が所定の割合を超えると、警告が表示されます。指定されない場合、すべてのシステムのデフォルトのディスク使用割合は、80% です。この変数は任意で、指定する必要はありません。

nvram:25 disk2:5

一部の EEM ポリシーの登録

ポリシーの登録後に EEM 環境変数が変更された場合、一部の EEM ポリシーは、登録を解除し、再登録する必要があります。ポリシーの開始時に表示される event_register_ xxx 文には、一部の EEM 環境変数が含まれ、この文は、ポリシーが実行される条件の確立に使用されます。ポリシーの登録後に環境変数が変更された場合、条件は無効になります。いかなるエラーも回避するには、ポリシーの登録を解除し、再登録する必要があります。次の変数に影響が及ぼされます。

_cron_entry in the tm_cli_cmd.tcl ポリシー

_syslog_pattern in the sl_intf_down.tcl ポリシー

すべてのサンプル ポリシーの基本設定の詳細

Embedded Event Manager から E メールを送信できるようにするには、 hostname コマンドと ip domain-name コマンドを設定する必要があります。EEM 環境変数も設定する必要があります。Cisco IOS イメージのブート後、次の初期設定を使用し、ネットワークで適切な値を置き換えます。tm_fsys_usage サンプル ポリシーの環境変数(表 14 を参照)はすべて任意で、ここではそのリストは示されていません。

hostname cpu
ip domain-name example.com
event manager environment _email_server ms.example.net
event manager environment _email_to username@example.net
event manager environment _email_from engineer@example.net
event manager environment _email_cc projectgroup@example.net
event manager environment _cron_entry 0-59/2 0-23/1 * * 0-7
event manager environment _show_cmd show event manager policy registered
event manager environment _syslog_pattern .*UPDOWN.*FastEthernet0/0
event manager environment _config_cmd1 interface Ethernet1/0
event manager environment _config_cmd2 no shutdown
event manager environment _crash_reporter_debug 1
event manager environment _crash_reporter_url
http://www.example.com/fm/interface_tm.cgi
end

サンプル ポリシーの使用

ここでは、次の設定シナリオを使用して、Tcl サンプル ポリシーを使用する方法について説明します。

「Mandatory.go_*.tcl サンプル ポリシーの実行」

「ap_perf_test_base_cpu.tcl および no_perf_test_init.tcl サンプル ポリシーの実行」

「sl_intf_down.tcl サンプル ポリシーの実行」

「tm_cli_cmd.tcl サンプル ポリシーの実行」

「tm_crash_reporter.tcl サンプル ポリシーの実行」

「tm_fsys_usage.tcl サンプル ポリシーの実行」

Mandatory.go_*.tcl サンプル ポリシーの実行

GOLD EEM ポリシーの一部として実行される各テストには、GOLD TCL スクリプトがあります。テスト用の TCL スクリプトを変更し、連続失敗カウントを指定し、デフォルトの是正アクションを変更することもできます。たとえば、リセットや他の CLI ベースのアクションではなく、ラインカードの電源オフを選択する場合があります。

登録されたテストごとに、デフォルトの TCL スクリプトを使用できます。これをシステムに登録して、デフォルト アクションと一致させることができます。その後、これらのスクリプトを変更して、そのアクションを無効にできます。

次の表は、GOLD が EEM にインストールした必須ポリシーのリストです。各ポリシーは、カードのリセットやポートのディセーブル化などのアクションを実行します。

GOLD Tcl スクリプト
テスト

Mandatory.go_asicsync.tcl

TestAsicSync

Mandatory.go_bootup.tcl

すべての ブートアップ テストに共通。

Mandatory.go_fabric.tcl

TestFabricHealth

Mandatory.go_fabrich0.tcl

TestFabricCh0Health

Mandatory.go_fabrich1.tcl

TestFabricCh1Health

Mandatory.go_ipsec.tcl

TestIPSecEncrypDecrypPkt

Mandatory.go_mac.tcl

TestMacNotification

Mandatory.go_nondislp.tcl

TestNonDisruptiveLoopback

Mandatory.go_scratchreg.tcl

TestScratchRegister

Mandatory.go_sprping.tcl

TestSPRPInbandPing

次に、このポリシーの使用方法を示すサンプル設定について説明します。ユーザ EXEC モードを開始し、ルータのプロンプトで enable コマンドを入力します。ルータで特権 EXEC モードが開始され、ここで、 show event manager policy registered コマンドを入力して、現在登録されているポリシーがないことを確認します。次のコマンドは show event manager policy available コマンドで、インストールできるポリシーが表示されます。 configure terminal コマンドを入力してグローバル コンフィギュレーション モードを開始後に、 event manager policy コマンドを使用して、EEM で mandatory.go_*.tcl ポリシーを登録できます。グローバル コンフィギュレーション モードを終了後、 show event manager policy registered コマンドを再度入力し、ポリシーが登録されたことを確認します。

enable
show event manager policy registered
show event manager policy available
configure terminal
event manager policy Mandatory.go_spuriousisr.tcl
end
show event manager policy registered
show event manager environment

ap_perf_test_base_cpu.tcl および no_perf_test_init.tcl サンプル ポリシーの実行

これらのサンプル ポリシーは、EEM ポリシーの CPU パフォーマンスを測定します。ポリシーは、各 EEM ポリシーの平均実行時間を知るのに役立ち、CLI ライブラリを使用して、EEM 環境変数の _perf_cmd1 と、オプションの _perf_cmd2 および _perf_cmd3 で指定されたコンフィギュレーション コマンドを実行します。

次に、このポリシーの使用方法を示すサンプル設定について説明します。ユーザ EXEC モードを開始し、ルータのプロンプトで enable コマンドを入力します。ルータで特権 EXEC モードが開始され、ここで、 show event manager policy registered コマンドを入力して、現在登録されているポリシーがないことを確認します。次のコマンドは show event manager policy available コマンドで、インストールできるポリシーが表示されます。 configure terminal コマンドを入力してグローバル コンフィギュレーション モードを開始後に、 service timestamps debug datetime msec コマンドを入力します。次に event manager policy コマンドを使用して ap_perf_test_base_cpu.tcl ポリシーと no_perf_test_init.tcl ポリシーを登録できます。グローバル コンフィギュレーション モードを終了後、 show event manager policy registered コマンドを再度入力し、ポリシーが登録されたことを確認します。

ポリシー ap_perf_test_base_cpu.tcl および no_perf_test_init.tcl はセットで実行されるので、一緒に登録する必要があります。no_perf_test_init.tcl ポリシーを実行して、テストを開始します。各反復からの syslog メッセージを使用して、結果を分析します。反復の総回数は、変数 _perf_iterations で指定します。時間の差を測り、反復の総回数で除算して、各 EEM ポリシーの平均実行時間を計算します。

enable
show event manager policy registered
show event manager policy available
show event manager environment
configure terminal
service timestamps debug datetime msec
event manager environment _perf_iterations 100
event manager policy ap_perf_test_base_cpu.tcl
event manager policy no_perf_test_init.tcl
end
show event manager policy registered
show event manager policy available
show event manager environment
event manager run no_perf_test_init.tcl

no_perf_test_init.tcl サンプル ポリシーの実行

このサンプル ポリシーでは、EEM ポリシーの CPI パフォーマンスを測定します。ポリシーは、各 EEM ポリシーの平均実行時間を知るのに役立ち、CLI ライブラリを使用して、EEM 環境変数の _perf_cmd1 と、オプションの _perf_cmd2 および _perf_cmd3 で指定されたコンフィギュレーション コマンドを実行します。

次に、このポリシーの使用方法を示すサンプル設定について説明します。ユーザ EXEC モードを開始し、ルータのプロンプトで enable コマンドを入力します。ルータで特権 EXEC モードが開始され、ここで、 show event manager policy registered コマンドを入力して、現在登録されているポリシーがないことを確認します。次のコマンドは show event manager policy available コマンドで、インストールできるポリシーが表示されます。 configure terminal コマンドを入力してグローバル コンフィギュレーション モードを開始後に、 event manager policy コマンドを使用して、EEM で no_perf_test_init.tcl ポリシーを登録できます。グローバル コンフィギュレーション モードを終了後、 show event manager policy registered コマンドを再度入力し、ポリシーが登録されたことを確認します。

各反復からの syslog メッセージを使用して、結果を分析します。反復の総回数は、変数 _perf_iterations で指定します。時間の差を測り、反復の総回数で除算して、各 EEM ポリシーの平均実行時間を計算します。

enable
show event manager policy registered
show event manager policy available
configure terminal
event manager policy no_perf_test_init.tcl
end
show event manager policy registered
show event manager environment

sl_intf_down.tcl サンプル ポリシーの実行

このサンプル ポリシーでは、特定のパターンで Syslog メッセージが記録されるときに設定を変更する機能について説明します。ポリシーでは、イベントについての詳細情報が収集され、CLI ライブラリを使用して、EEM 環境変数 _config_cmd1 と、任意で _config_cmd2 で指定された、コンフィギュレーション コマンドが実行されます。CLI コマンドの結果とともに、E メール セージが送信されます。

次に、このポリシーの使用方法を示すサンプル設定について説明します。ユーザ EXEC モードを開始し、ルータのプロンプトで enable コマンドを入力します。ルータで特権 EXEC モードが開始され、ここで、 show event manager policy registered コマンドを入力して、現在登録されているポリシーがないことを確認します。次のコマンドは show event manager policy available コマンドで、インストールできるポリシーが表示されます。 configure terminal コマンドを入力してグローバル コンフィギュレーション モードを開始後に、 event manager policy コマンドを使用して、EEM で sl_intf_down.tcl ポリシーを登録できます。グローバル コンフィギュレーション モードを終了後、 show event manager policy registered コマンドを再度入力し、ポリシーが登録されたことを確認します。

インターフェイスがダウンするときに、ポリシーが実行されます。 show event manager environment コマンドを入力し、現在の環境変数の値を表示します。_syslog_pattern EEM 環境変数で指定されたインターフェイスのケーブルを取り外します(またはシャットダウンを設定します)。インターフェイスがダウンし、インターフェイスがダウンしていることについての Syslog メッセージを記録する Syslog デーモンのプロンプトが表示されて、Syslog イベント ディテクタが呼び出されます。

Syslog イベント ディテクタによって、未解決のイベント仕様が見直され、インターフェイス ステータス変更に対する一致が検索されます。EEM サーバに通知され、サーバでは、このイベント sl_intf_down.tcl を処理するために登録されたポリシーが実行されます。

enable
show event manager policy registered
show event manager policy available
configure terminal
event manager policy sl_intf_down.tcl
end
show event manager policy registered
show event manager environment

tm_cli_cmd.tcl サンプル ポリシーの実行

このサンプル ポリシーでは、定期的に CLI コマンドを実行し、結果を E メールで送信する機能について説明します。CRON 仕様「0-59/2 0-23/1 * * 0-7」を使用すると、このポリシーは、毎時 2 分目に実行されます。ポリシーでは、イベントについての詳細情報が収集され、CLI ライブラリを使用して、EEM 環境変数 _show_cmd で指定された、コンフィギュレーション コマンドが実行されます。CLI コマンドの結果とともに、E メール セージが送信されます。

次に、このポリシーの使用方法を示すサンプル設定について説明します。ユーザ EXEC モードを開始し、ルータのプロンプトで enable コマンドを入力します。ルータで特権 EXEC モードが開始され、ここで、 show event manager policy registered コマンドを入力して、現在登録されているポリシーがないことを確認します。次のコマンドは show event manager policy available コマンドで、インストールできるポリシーが表示されます。 configure terminal コマンドを入力してグローバル コンフィギュレーション モードを開始後に、 event manager policy コマンドを使用して、EEM で tm_cli_cmd.tcl ポリシーを登録できます。グローバル コンフィギュレーション モードを終了後、 show event manager policy registered コマンドを入力し、ポリシーが登録されたことを確認します。

EEM 環境変数 _cron_entry に設定されている CRON 文字列に従って、タイマー イベント ディテクタによって、定期的にこのケースのイベントがトリガーされます。EEM サーバに通知され、サーバでは、このイベント tm_cli_cmd.tcl を処理するために登録されたポリシーが実行されます。

enable
show event manager policy registered
show event manager policy available
configure terminal
event manager policy tm_cli_cmd.tcl
end
show event manager policy registered

tm_crash_reporter.tcl サンプル ポリシーの実行

このサンプル ポリシーでは、ある URL へ HTTP 形式のクラッシュ レポートを送信する機能について説明ます。ポリシー登録がスタートアップ コンフィギュレーション ファイルに保存されている場合、ポリシーは、ブートの 5 秒後にトリガーされます。トリガーされると、スクリプトによって、リロード原因の検索が試行されます。リロードの原因がクラッシュの場合、ポリシーによって、関連する crashinfo ファイルが検索され、環境変数 _crash_reporter_url でユーザによって指定された URL へ、この情報が送信されます。CGI スクリプト interface_tm.cgi は、tm_crash_reporter.tcl ポリシーから URL を受け取るために作成され、ターゲット URL マシン上のローカル データベースにクラッシュ情報が保存されます。

Perl CGI スクリプト interface_tm.cgi が作成され、HTTP サーバが含まれているマシン上で実行するために設計され、tm_crash_reporter.tcl ポリシーが実行されているルータからアクセスできます。interface_tm.cgi スクリプトによって、tm_crash_reporter.tcl から渡されたデータが解析され、テキスト ファイルの末尾にクラッシュ情報が追加され、これによって、システムのすべてのクラッシュの履歴が作成されます。さらに、各クラッシュの詳細情報は、ユーザが指定したクラッシュ データベース ディレクトリの 3 つのファイルに保存されます。別の Perl CGI スクリプト crash_report_display.cgi は、interface_tm.cgi スクリプトによって作成されたデータベースに保存されている情報を表示するために作成されました。crash_report_display.cgi スクリプトは、interface_tm.cgi が含まれているマシンと同じマシンに置く必要があります。そのマシンでは、Internet Explorer または Netscape などのブラウザが実行されている必要があります。crash_report_display.cgi スクリプトが実行されると、読み取り可能な形式でクラッシュ情報が表示されます。

次に、このポリシーの使用方法を示すサンプル設定について説明します。ユーザ EXEC モードを開始し、ルータのプロンプトで enable コマンドを入力します。ルータで特権 EXEC モードが開始され、ここで、 show event manager policy registered コマンドを入力して、現在登録されているポリシーがないことを確認します。次のコマンドは show event manager policy available コマンドで、インストールできるポリシーが表示されます。 configure terminal コマンドを入力してグローバル コンフィギュレーション モードを開始後に、 event manager policy コマンドを使用して、EEM で tm_crash_reporter.tcl ポリシーを登録できます。グローバル コンフィギュレーション モードを終了後、 show event manager policy registered コマンドを入力し、ポリシーが登録されたことを確認します。

enable
show event manager policy registered
show event manager policy available
configure terminal
event manager policy tm_crash_reporter.tcl
end
show event manager policy registered

tm_fsys_usage.tcl サンプル ポリシーの実行

このサンプル ポリシーでは、ディスク領域の使用状況を定期的に監視し、値が設定可能なしきい値に近くなったときに Syslog を介してレポートする機能について説明します。

次に、このポリシーの使用方法を示すサンプル設定について説明します。ユーザ EXEC モードを開始し、ルータのプロンプトで enable コマンドを入力します。ルータで特権 EXEC モードが開始され、ここで、 show event manager policy registered コマンドを入力して、現在登録されているポリシーがないことを確認します。次のコマンドは show event manager policy available コマンドで、インストールできるポリシーが表示されます。 configure terminal コマンドを入力してグローバル コンフィギュレーション モードを開始後に、 event manager policy コマンドを使用して、EEM で tm_fsys_usage.tcl ポリシーを登録できます。グローバル コンフィギュレーション モードを終了後、 show event manager policy registered コマンドを再度入力し、ポリシーが登録されたことを確認します。tm_fsys_usage.tcl ポリシーで使用される任意の環境変数のいずれかを設定した場合、 show event manager environment コマンドによって、設定された変数が表示されます。

enable
show event manager policy registered
show event manager policy available
configure terminal
event manager policy tm_fsys_usage.tcl
end
show event manager policy registered
show event manager environment

Tcl でポリシーをプログラミングするサンプル スクリプト例

ここでは、EEM システム ポリシーとして含まれているいくつかのサンプル ポリシーについて説明します。これらのポリシーの詳細については、「EEM イベント ディテクタのデモ:例」を参照してください。

「Mandatory.go_ipsec.tcl サンプル ポリシー」

「ap_perf_test_base_cpu.tcl サンプル ポリシー」

「tm_cli_cmd.tcl サンプル ポリシー」

「sl_intf_down.tcl サンプル ポリシー」

Mandatory.go_ipsec.tcl サンプル ポリシー

次のサンプルポリシーは、TestIPSecEncrypDecrypPkt テスト用です。

::cisco::eem::event_register_gold card all testing_type monitoring test_name Tes
tIPSecEncrypDecrypPkt consecutive_failure 6 platform_action 0 queue_priority las
t
#
# GOLD TestIPSecEncrypDecrypPkt Test TCL script
#
# March 2005, Hai Qiu
#
# Copyright (c) 2005-2007 by cisco Systems, Inc.
# All rights reserved.
#
#
# Register for TestIPSecEncrypDecrypPkt test even
# the elements for register the event
# card [all | card #]
# sub_card [all | sub_card #]
# severity_major | severity_minor | severity_normal default : severity_normal
# new_failure [true | false] default: dont_care
# testing_type [bootup | ondemand | schedule | monitoring]
# test_name [ test name ]
# test_id [ test # ]
# consecutive_failure [ consecutive_failure # ]
# platform_action [action_flag]
# action_flag [ 0 | 1 | 2 ]
# queue_priority [ normal | low | high | last] default: normal
#
# Note:
# 1: "card" element is required. If other elements are not specified,
# treat them as dont care, or default.
#
# 2: action_flag is platform specific. It is up to platform to
# determine what action need to be taken based on the value
# For Cat6k platform
# action_flag 0 : TCL script take action to reset card
# action_flag 1 : TCL script doesn't take action to reset card
# action_flag 2 : TCL script takes action to reset card for bootup diag
# when there is major error
# action_flag 3 : TCL script doesn't take action to reset card for
# bootup diag when there is major error
#
# 3: "queue_priority last" would guarantee this policy will be executed last
# if there are other EEM events in queue with queue priority other
# than "last"
namespace import ::cisco::eem::*
namespace import ::cisco::lib::*
# 1. query the information of latest triggered eem event
array set arr_einfo [event_reqinfo]
if {$_cerrno != 0} {
set result [format "component=%s; subsys err=%s; posix err=%s;\n%s" \
$_cerr_sub_num $_cerr_sub_err $_cerr_posix_err $_cerr_str]
error $result
}
puts "GOLD EEM TCL policy for TestIPSecEncrypDecrypPkt"
#set msg [format "array=%s", array names arr_einfo]
#puts "msg $msg"
#set msg $arr_einfo(msg)
set card $arr_einfo(card)
set sub_card $arr_einfo(sub_card)
#set overall_result $arr_einfo(overall_result)
#puts "GOLD event msg recieved: $card/$sub_card overall_result= $overall_result"
# 2. execute the user-defined config commands
if [catch {cli_open} result] {
error $result $errorInfo
} else {
array set cli1 $result
}
if [catch {cli_exec $cli1(fd) "en"} result] {
error $result $errorInfo
}
# Use "diagn action mod mod# test testname default" command
# for default platform action
if [catch {cli_exec $cli1(fd) "diagnostic action mod $card test TestIPSecEncrypD
ecrypPkt default"} result] {
error $result $errorInfo
} else {
set cmd_output $result
}
if [catch {cli_close $cli1(fd) $cli1(tty_id)} result] {
error $result $errorInfo
}

ap_perf_test_base_cpu.tcl サンプル ポリシー

次のサンプル ポリシーは、EEM ポリシーの CPU パフォーマンスを測定します。

::cisco::eem::event_register_appl sub_system 798 type 9999
#----------------------------------
# EEM policy used for measuring the cpu performance of EEM policies.
#
# July 2005, Cisco EEM team
#
# Copyright (c) 2005, 2006 by cisco Systems, Inc.
# All rights reserved.
#------------------
###
### Input arguments:
###
### arg1 $iter - current iteration count
###
### The following EEM environment variables are used:
###
### _perf_iterations (mandatory) - number of iterations over which we
### will run our measurement.
### Example:
### event manager environment _perf_iterations 100
###
### _perf_cmd1 (optional) - optional non interactive cli command
### to be executed as part of the
### measurement test.
### Example:
### event manager environment _perf_cmd1 enable
###
### _perf_cmd2 (optional) - optional non interactive cli command
### to be executed as part of the
### measurement test.
### To use _perf_cmd2, _perf_cmd1 MUST
### be defined.
### Example:
### event manager environment _perf_cmd2 show ver
###
### _perf_cmd3 (optional) - optional non interactive cli command
### to be executed as part of the
### measurement test.
### To use _perf_cmd3, _perf_cmd1 MUST
### be defined.
### Example:
### event manager environment _perf_cmd3 show int counters protocol status
###
### Description:
### Iterate through _perf_iterations of this policy.
### It is up to the user to calculate the average
### execution time based on the system timestamps.
### Optional commands _perf_cmd1,
### _perf_cmd2 and _perf_cmd3 are executed if defined.
###
### A value of 100 is a good starting point.
###
### Outputs:
### Console output.
###
### Usage example:
### >conf t
### >service timestamps debug datetime msec
### >event manager environment _perf_iterations 100
### >event manager policy ap_perf_base_cpu.tcl
### >event manager policy no_perf_test_init.tcl
### >end
### 2d19h: %SYS-5-CONFIG_I: Configured from console by console
### >event manager run no_perf_test_init.tcl
###
### Oct 16 14:57:17.284: %SYS-5-CONFIG_I: Configured from console by console
### >event manager run no_perf_test_init.tcl
###
### Oct 16 19:32:02.772: %HA_EM-6-LOG:
### eem_policy/no_perf_test_init.tcl: EEM performance test start
### Oct 16 19:32:03.115: %HA_EM-6-LOG:
### eem_policy/ap_perf_test_base_cpu.tcl: EEM performance test iteration 1
### Oct 16 19:32:03.467: %HA_EM-6-LOG:
### eem_policy/ap_perf_test_base_cpu.tcl: EEM performance test iteration 2
### ...
### Oct 16 19:32:36.936: %HA_EM-6-LOG:
### eem_policy/ap_perf_test_base_cpu.tcl: EEM performance test iteration 100
### Oct 16 19:32:36.936: %HA_EM-6-LOG:
### eem_policy/ap_perf_test_base_cpu.tcl: EEM performance test end
###
### The user must calculate execution time and average time of execution.
### In this example, total time = 19:32:36.936 - 19:32:02.772 = 34.164
### Average script execution time = 341.64 milliseconds
###
# check if all the env variables we need exist
# If any of them doesn't exist, print out an error msg and quit
if {![info exists _perf_iterations]} {
set result \
"Policy cannot be run: variable _perf_iterations has not been set"
error $result $errorInfo
}
# ensure our target iteration count > 0
if {$_perf_iterations <= 0} {
set result \
"Policy cannot be run: variable _perf_iterations <= 0"
error $result $errorInfo
}
namespace import ::cisco::eem::*
namespace import ::cisco::lib::*
# query the event info
array set arr_einfo [event_reqinfo]
if {$_cerrno != 0} {
set result [format "component=%s; subsys err=%s; posix err=%s;\n%s" \
$_cerr_sub_num $_cerr_sub_err $_cerr_posix_err $_cerr_str]
error $result
}
set iter $arr_einfo(data1)
set iter [expr $iter + 1]
# if _perf_cmd1 is defined
if {[info exists _perf_cmd1]} {
# open the cli library
if [catch {cli_open} result] {
error $result $errorInfo
} else {
array set cli1 $result
}
# execute the comamnd defined in _perf_cmd1
if [catch {cli_exec $cli1(fd) $_perf_cmd1} result] {
error $result $errorInfo
}
# if _perf_cmd2 is defined
if {[info exists _perf_cmd2]} {
# execute the comamnd defined in _perf_cmd2
if [catch {cli_exec $cli1(fd) $_perf_cmd2} result] {
error $result $errorInfo
} else {
set cmd_output $result
}
}
# if _perf_cmd3 is defined
if {[info exists _perf_cmd3]} {
# execute the comamnd defined in _perf_cmd3
if [catch {cli_exec $cli1(fd) $_perf_cmd3} result] {
error $result $errorInfo
} else {
set cmd_output $result
}
}
# close the cli library
if [catch {cli_close $cli1(fd) $cli1(tty_id)} result] {
error $result $errorInfo
}
}
 
# log a message
set msg [format "EEM performance test iteration %s" $iter]
action_syslog priority info msg $msg
if {$_cerrno != 0} {
set result [format "component=%s; subsys err=%s; posix err=%s;\n%s" \
$_cerr_sub_num $_cerr_sub_err $_cerr_posix_err $_cerr_str]
error $result
}
# use the context info from the previous run to determine when to end
if {$iter >= $_perf_iterations} {
#log the final messages
action_syslog priority info msg "EEM performance test end"
if {$_cerrno != 0} {
set result [format \
"component=%s; subsys err=%s; posix err=%s;\n%s" \
$_cerr_sub_num $_cerr_sub_err $_cerr_posix_err $_cerr_str]
error $result
}
exit 0
}
# cause the next iteration to run
event_publish sub_system 798 type 9999 arg1 $iter
if {$_cerrno != 0} {
set result [format \
"component=%s; subsys err=%s; posix err=%s;\n%s" \
$_cerr_sub_num $_cerr_sub_err $_cerr_posix_err $_cerr_str]
error $result
}

tm_cli_cmd.tcl サンプル ポリシー

次に、設定可能な CRON エントリが実行されるサンプル ポリシーについて説明します。ポリシーでは、設定可能な Cisco IOS CLI コマンドが実行され、結果が E メールで送信されます。タイムスタンプとともに出力が末尾に追加される任意のログ ファイルを定義することができます。

::cisco::eem::event_register_timer cron name crontimer2 cron_entry $_cron_entry maxrun 240
 
#------------------------------------------------------------------
# EEM policy that will periodically execute a cli command and email the
# results to a user.
#
# July 2005, Cisco EEM team
#
# Copyright (c) 2005 by cisco Systems, Inc.
# All rights reserved.
#------------------------------------------------------------------
 
### The following EEM environment variables are used:
###
### _cron_entry (mandatory) - A CRON specification that determines
### when the policy will run. See the
### IOS Embedded Event Manager
### documentation for more information
### on how to specify a cron entry.
### Example: _cron_entry 0-59/1 0-23/1 * * 0-7
###
### _log_file (mandatory without _email_....)
### - A filename to append the output to.
### If this variable is defined, the
### output is appended to the specified
### file with a timestamp added.
### Example: _log_file disk0:/my_file.log
###
### _email_server (mandatory without _log_file)
### - A Simple Mail Transfer Protocol (SMTP)
### mail server used to send e-mail.
### Example: _email_server mailserver.example.com
###
### _email_from (mandatory without _log_file)
### - The address from which e-mail is sent.
### Example: _email_from devtest@example.com
###
### _email_to (mandatory without _log_file)
### - The address to which e-mail is sent.
### Example: _email_to engineering@example.com
###
### _email_cc (optional) - The address to which the e-mail must
### be copied.
### Example: _email_cc manager@example.com
###
### _show_cmd (mandatory) - The CLI command to be executed when
### the policy is run.
### Example: _show_cmd show version
###
 
# check if all required environment variables exist
# If any required environment variable does not exist, print out an error msg and quit
if {![info exists _log_file]} {
if {![info exists _email_server]} {
set result \
"Policy cannot be run: variable _log_file or _email_server has not been set"
error $result $errorInfo
}
if {![info exists _email_from]} {
set result \
"Policy cannot be run: variable _log_file or _email_from has not been set"
error $result $errorInfo
}
if {![info exists _email_to]} {
set result \
"Policy cannot be run: variable _log_file ore _email_to has not been set"
error $result $errorInfo
}
if {![info exists _email_cc]} {
#_email_cc is an option, must set to empty string if not set.
set _email_cc ""
}
}
 
if {![info exists _show_cmd]} {
set result \
"Policy cannot be run: variable _show_cmd has not been set"
error $result $errorInfo
}
 
 
namespace import ::cisco::eem::*
namespace import ::cisco::lib::*
 
# query the event info and log a message
array set arr_einfo [event_reqinfo]
 
if {$_cerrno != 0} {
set result [format "component=%s; subsys err=%s; posix err=%s;\n%s" \
$_cerr_sub_num $_cerr_sub_err $_cerr_posix_err $_cerr_str]
error $result
}
 
global timer_type timer_time_sec
set timer_type $arr_einfo(timer_type)
set timer_time_sec $arr_einfo(timer_time_sec)
 
# log a message
set msg [format "timer event: timer type %s, time expired %s" \
$timer_type [clock format $timer_time_sec]]
 
action_syslog priority info msg $msg
if {$_cerrno != 0} {
set result [format "component=%s; subsys err=%s; posix err=%s;\n%s" \
$_cerr_sub_num $_cerr_sub_err $_cerr_posix_err $_cerr_str]
error $result
}
 
# 1. execute the command
if [catch {cli_open} result] {
error $result $errorInfo
} else {
array set cli1 $result
}
if [catch {cli_exec $cli1(fd) "en"} result] {
error $result $errorInfo
}
# save exact execution time for command
set time_now [clock seconds]
# execute command
if [catch {cli_exec $cli1(fd) $_show_cmd} result] {
error $result $errorInfo
} else {
set cmd_output $result
# format output: remove trailing router prompt
regexp {\n*(.*\n)([^\n]*)$} $result dummy cmd_output
}
if [catch {cli_close $cli1(fd) $cli1(tty_id)} result] {
error $result $errorInfo
}
 
# 2. log the success of the CLI command
set msg [format "Command \"%s\" executed successfully" $_show_cmd]
action_syslog priority info msg $msg
if {$_cerrno != 0} {
set result [format "component=%s; subsys err=%s; posix err=%s;\n%s" \
$_cerr_sub_num $_cerr_sub_err $_cerr_posix_err $_cerr_str]
error $result
}
 
# 3. if _log_file is defined, then attach it to the file
if {[info exists _log_file]} {
# attach output to file
if [catch {open $_log_file a+} result] {
error $result
}
set fileD $result
# save timestamp of command execution
# (Format = 00:53:44 PDT Mon May 02 2005)
set time_now [clock format $time_now -format "%T %Z %a %b %d %Y"]
puts $fileD "%%% Timestamp = $time_now"
puts $fileD $cmd_output
close $fileD
}
 
# 4. if _email_server is defined send the email out
if {[info exists _email_server]} {
set routername [info hostname]
if {[string match "" $routername]} {
error "Host name is not configured"
}
 
if [catch {smtp_subst [file join $tcl_library email_template_cmd.tm]} \
result] {
error $result $errorInfo
}
 
if [catch {smtp_send_email $result} result] {
error $result $errorInfo
}
}

sl_intf_down.tcl サンプル ポリシー

次に、設定可能な Syslog メッセージが記録されるときに実行されるサンプル ポリシーを示します。ポリシーでは、設定可能な CLI コマンドが実行され、結果が E メールで送信されます。

::cisco::eem::event_register_syslog occurs 1 pattern $_syslog_pattern maxrun 90
 
#------------------------------------------------------------------
# EEM policy to monitor for a specified syslog message.
# Designed to be used for syslog interface-down messages.
# When event is triggered, the given config commands will be run.
#
# July 2005, Cisco EEM team
#
# Copyright (c) 2005 by cisco Systems, Inc.
# All rights reserved.
#------------------------------------------------------------------
 
### The following EEM environment variables are used:
###
### _syslog_pattern (mandatory) - A regular expression pattern match string
### that is used to compare syslog messages
### to determine when policy runs
### Example: _syslog_pattern .*UPDOWN.*FastEthernet0/0.*
###
### _email_server (mandatory) - A Simple Mail Transfer Protocol (SMTP)
### mail server used to send e-mail.
### Example: _email_server mailserver.example.com
###
### _email_from (mandatory) - The address from which e-mail is sent.
### Example: _email_from devtest@example.com
###
### _email_to (mandatory) - The address to which e-mail is sent.
### Example: _email_to engineering@example.com
###
### _email_cc (optional) - The address to which the e-mail must
### be copied.
### Example: _email_cc manager@example.com
###
### _config_cmd1 (optional) - The first configuration command that
### is executed.
### Example: _config_cmd1 interface Ethernet1/0
###
### _config_cmd2 (optional) - The second configuration command that
### is executed.
### Example: _config_cmd2 no shutdown
###
 
# check if all the env variables we need exist
# If any of them doesn't exist, print out an error msg and quit
if {![info exists _email_server]} {
set result \
"Policy cannot be run: variable _email_server has not been set"
error $result $errorInfo
}
if {![info exists _email_from]} {
set result \
"Policy cannot be run: variable _email_from has not been set"
error $result $errorInfo
}
if {![info exists _email_to]} {
set result \
"Policy cannot be run: variable _email_to has not been set"
error $result $errorInfo
}
if {![info exists _email_cc]} {
#_email_cc is an option, must set to empty string if not set.
set _email_cc ""
}
 
namespace import ::cisco::eem::*
namespace import ::cisco::lib::*
 
# 1. query the information of latest triggered eem event
array set arr_einfo [event_reqinfo]
 
if {$_cerrno != 0} {
set result [format "component=%s; subsys err=%s; posix err=%s;\n%s" \
$_cerr_sub_num $_cerr_sub_err $_cerr_posix_err $_cerr_str]
error $result
}
 
set msg $arr_einfo(msg)
set config_cmds ""
 
# 2. execute the user-defined config commands
if [catch {cli_open} result] {
error $result $errorInfo
} else {
array set cli1 $result
}
if [catch {cli_exec $cli1(fd) "en"} result] {
error $result $errorInfo
}
if [catch {cli_exec $cli1(fd) "config t"} result] {
error $result $errorInfo
}
 
if {[info exists _config_cmd1]} {
if [catch {cli_exec $cli1(fd) $_config_cmd1} result] {
error $result $errorInfo
}
 
append config_cmds $_config_cmd1
}
 
if {[info exists _config_cmd2]} {
if [catch {cli_exec $cli1(fd) $_config_cmd2} result] {
error $result $errorInfo
}
append config_cmds "\n"
append config_cmds $_config_cmd2
}
 
if [catch {cli_exec $cli1(fd) "end"} result] {
error $result $errorInfo
}
if [catch {cli_close $cli1(fd) $cli1(tty_id)} result] {
error $result $errorInfo
}
 
after 60000
# 3. send the notification email
set routername [info hostname]
if {[string match "" $routername]} {
error "Host name is not configured"
}
 
if [catch {smtp_subst [file join $tcl_library email_template_cfg.tm]} result] {
error $result $errorInfo
}
if [catch {smtp_send_email $result} result] {
error $result $errorInfo
}
 

次に、前述の EEM サンプル ポリシーで使用される E メール テンプレート ファイルの使用例を示します。

email_template_cfg.tm
 
Mailservername: $_email_server
From: $_email_from
To: $_email_to
Cc: $_email_cc
Subject: From router $routername: Periodic $_show_cmd Output
 
$cmd_output

Embedded Event Manager ポリシーのデバッグ例

次に、CLI ライブラリおよび SMTP ライブラリのデバッグ例を示します。

CLI ライブラリのデバッグ

CLI ライブラリを使用すると、ユーザは、CLI コマンドを実行し、Tcl のコマンドの出力を取得できます。Embedded Event Manager の debug コマンドは、このライブラリのユーザ向けに用意されています。CLI ライブラリのデバッグをイネーブルにするコマンドは、 debug event manager tcl cli_library です。イネーブルの場合、このコマンドによって、CLI のやり取りを処理する TTY セッションに渡され、TTY セッションから読み戻される、すべてのデータが表示されます。このデータを使用すると、ユーザが CLI に渡すコマンドが有効になります。

デバッグ イベント マネージャ tcl cli_library コマンドの例

この例では、サンプル ポリシー sl_intf_down.tcl が使用されます。トリガーされると、sl_intf_down.tcl によって、CLI ライブラリを介して CLI にコンフィギュレーション コマンドが渡されます。後述の例で渡されるコマンドは、 show event manager environment です。このコマンドは、コンフィギュレーション モードでは有効ではありません。 debug コマンドがイネーブルではない場合、出力は次のとおりです。

00:00:57:sl_intf_down.tcl[0]:config_cmds are show eve man env
00:00:57:%SYS-5-CONFIG_I:Configured from console by vty0
 

前述の出力で、ユーザは、CLI でコマンドが正常終了したかどうかはわかりません。 debug event manager tcl cli_library コマンドがイネーブルの場合、ユーザに対し、次のように表示されます。

01:17:07: sl_intf_down.tcl[0]: DEBUG(cli_lib) : CTL : cli_open called.
01:17:07: sl_intf_down.tcl[0]: DEBUG(cli_lib) : OUT : nelson>
01:17:07: sl_intf_down.tcl[0]: DEBUG(cli_lib) : IN : nelson>enable
01:17:07: sl_intf_down.tcl[0]: DEBUG(cli_lib) : OUT : nelson#
01:17:07: sl_intf_down.tcl[0]: DEBUG(cli_lib) : IN : nelson#configure terminal
01:17:07: sl_intf_down.tcl[0]: DEBUG(cli_lib) : OUT : Enter configuration commands, one
per line. End with CNTL/Z.
01:17:07: sl_intf_down.tcl[0]: DEBUG(cli_lib) : OUT : nelson(config)#
01:17:07: sl_intf_down.tcl[0]: DEBUG(cli_lib) : IN : nelson(config)#show event manager
environment
01:17:07: sl_intf_down.tcl[0]: DEBUG(cli_lib) : OUT : ^
01:17:07: sl_intf_down.tcl[0]: DEBUG(cli_lib) : OUT : % Invalid input detected at '^'
marker.
01:17:07: sl_intf_down.tcl[0]: DEBUG(cli_lib) : OUT : nelson(config)#
01:17:07: sl_intf_down.tcl[0]: DEBUG(cli_lib) : IN : nelson(config)#end
01:17:07: sl_intf_down.tcl[0]: DEBUG(cli_lib) : OUT : nelson#
01:17:07: sl_intf_down.tcl[0]: DEBUG(cli_lib) : CTL : cli_close called.
01:17:07: sl_intf_down.tcl[0]: DEBUG(cli_lib) : IN : nelson#exit
01:17:07: sl_intf_down.tcl[0]: config_cmds are show event manager environment
01:17:07: %SYS-5-CONFIG_I: Configured from console by vty0
 

前述の出力で、 show event manager environment は、コンフィギュレーション モードでは無効であることが示されています。IN キーワードによって、CLI ライブラリを介して TTY へすべてのデータが渡されることが指定されます。OUT キーワードによって、CLI ライブラリを介して TTY からすべてのデータが読み戻されることが指定されます。CTL キーワードによって、CLI ライブラリで使用されるヘルパー機能が指定されます。これらのヘルパー機能は、CLI への接続の設定や、接続の削除に使用されます。

SMTP ライブラリのデバッグ

SMTP ライブラリを使用すると、ユーザは、SMTP E メール サーバへ、E メール メッセージを送信できます。Embedded Event Manager の debug コマンドは、このライブラリのユーザ向けに用意されています。SMTP ライブラリのデバッグをイネーブルにするコマンドは、 debug event manager tcl smtp_library です。イネーブルの場合、このコマンドによって、SMTP ライブラリ ルーチンに渡され、SMTP ライブラリ ルーチンから読み戻される、すべてのデータが表示されます。このデータを使用すると、ユーザが SMTP ライブラリに渡すコマンドが有効になります。

デバッグ イベント マネージャ tcl smtp_library コマンドの例

この例では、サンプル ポリシー tm_cli_cmd.tcl が使用されます。トリガーされると、tm_cli_cmd.tcl によって、CLI ライブラリを介して show event manager policy available system コマンドが実行されます。結果は、SMTP ライブラリを介してメールでユーザに送信されます。出力を参考に、SMTP ライブラリを使用して、関連する問題をデバッグできます。

debug event manager tcl smtp_library コマンドがイネーブルの場合、ユーザに対し、コンソール上に次のように表示されます。

00:39:46: tm_cli_cmd.tcl[0]: DEBUG(smtp_lib) : smtp_read : 220 XXXX.example.com ESMTP XXXX 1.1.0; Tue, 25 Jun 2002 14:20:39 -0700 (PDT)
00:39:46: tm_cli_cmd.tcl[0]: DEBUG(smtp_lib) : smtp_write : HELO XXXX.example.com
00:39:46: tm_cli_cmd.tcl[0]: DEBUG(smtp_lib) : smtp_read : 250 XXXX.example.com Hello XXXX.example.com [XXXX], pleased to meet you
00:39:46: tm_cli_cmd.tcl[0]: DEBUG(smtp_lib) : smtp_write : MAIL FROM:<XX@example.com>
00:39:46: tm_cli_cmd.tcl[0]: DEBUG(smtp_lib) : smtp_read : 250 <XX@example.com>... Sender ok
00:39:46: tm_cli_cmd.tcl[0]: DEBUG(smtp_lib) : smtp_write : RCPT TO:<XX@example.com>
00:39:47: tm_cli_cmd.tcl[0]: DEBUG(smtp_lib) : smtp_read : 250 <XX@example.com>... Recipient ok
00:39:47: tm_cli_cmd.tcl[0]: DEBUG(smtp_lib) : smtp_write : RCPT TO:<XX@example.com>
00:39:47: tm_cli_cmd.tcl[0]: DEBUG(smtp_lib) : smtp_read : 250 <XX@example.com>... Recipient ok
00:39:47: tm_cli_cmd.tcl[0]: DEBUG(smtp_lib) : smtp_write : DATA
00:39:47: tm_cli_cmd.tcl[0]: DEBUG(smtp_lib) : smtp_read : 354 Enter mail, end with "." on a line by itself
00:39:47: tm_cli_cmd.tcl[0]: DEBUG(smtp_lib) : smtp_write : Date: 25 Jun 2002 14:35:00 UTC
00:39:47: tm_cli_cmd.tcl[0]: DEBUG(smtp_lib) : smtp_write : Message-ID: <20020625143500.2387058729877@XXXX.example.com>
00:39:47: tm_cli_cmd.tcl[0]: DEBUG(smtp_lib) : smtp_write : From: XX@example.com
00:39:47: tm_cli_cmd.tcl[0]: DEBUG(smtp_lib) : smtp_write : To: XX@example.com
00:39:47: tm_cli_cmd.tcl[0]: DEBUG(smtp_lib) : smtp_write : Cc: XX@example.com
00:39:47: tm_cli_cmd.tcl[0]: DEBUG(smtp_lib) : smtp_write : Subject: From router nelson: Periodic show eve man po ava system Output
00:39:47: tm_cli_cmd.tcl[0]: DEBUG(smtp_lib) : smtp_write : No. Type Time Created Name
00:39:47: tm_cli_cmd.tcl[0]: DEBUG(smtp_lib) : smtp_write : 1 system Fri May3 20:42:34 2002 pr_cdp_abort.tcl
00:39:47: tm_cli_cmd.tcl[0]: DEBUG(smtp_lib) : smtp_write : 2 system Fri May3 20:42:54 2002 pr_iprouting_abort.tcl
00:39:47: tm_cli_cmd.tcl[0]: DEBUG(smtp_lib) : smtp_write : 3 system Wed Apr3 02:16:33 2002 sl_intf_down.tcl
00:39:47: tm_cli_cmd.tcl[0]: DEBUG(smtp_lib) : smtp_write : 4 system Mon Jun24 23:34:16 2002 tm_cli_cmd.tcl
00:39:47: tm_cli_cmd.tcl[0]: DEBUG(smtp_lib) : smtp_write : 5 system Wed Mar27 05:53:15 2002 tm_crash_hist.tcl
00:39:47: tm_cli_cmd.tcl[0]: DEBUG(smtp_lib) : smtp_write : nelson#
00:39:47: tm_cli_cmd.tcl[0]: DEBUG(smtp_lib) : smtp_write :
00:39:47: tm_cli_cmd.tcl[0]: DEBUG(smtp_lib) : smtp_write : .
00:39:47: tm_cli_cmd.tcl[0]: DEBUG(smtp_lib) : smtp_read : 250 ADE90179 Message accepted for delivery
00:39:47: tm_cli_cmd.tcl[0]: DEBUG(smtp_lib) : smtp_write : QUIT
00:39:47: tm_cli_cmd.tcl[0]: DEBUG(smtp_lib) : smtp_read : 221 XXXX.example.com closing connection

Tcl set コマンドの操作:例

Tcl は、融通性のある言語です。Tcl の融通性の 1 つは、コマンドを上書きできることです。この例では、Tcl set コマンドの名前が _set に変更されます。また、テキスト「setting」が含まれるメッセージを表示し、設定しているスカラ変数を末尾に追加する、新バージョンの set コマンドが作成されます。この例を使用すると、設定しているスカラ変数のすべてのインスタンスをトレースできます。

rename set _set
proc set {var args} {
puts [list setting $var $args]
uplevel _set $var $args
};
 

これがポリシーに置かれると、スカラ変数が設定されるたびに、たとえば次のようなメッセージが表示されます。

02:17:58: sl_intf_down.tcl[0]: setting test_var 1

RPC イベント ディテクタ:例

TCL script (rpccli.tcl):
 
::cisco::eem::event_register_rpc
 
namespace import ::cisco::eem::*
namespace import ::cisco::lib::*
 
proc run_cli { clist } {
set rbuf ""
 
if {[llength $clist] < 1} {
return -code ok $rbuf
}
 
if {[catch {cli_open} result]} {
return -code error $result
} else {
array set cliarr $result
}
 
if {[catch {cli_exec $cliarr(fd) "enable"} result]} {
return -code error $result
}
 
if {[catch {cli_exec $cliarr(fd) "term length 0"} result]} {
return -code error $result
}
 
foreach cmd $clist {
if {[catch {cli_exec $cliarr(fd) $cmd} result]} {
return -code error $result
}
 
append rbuf $result
}
 
if {[catch {cli_close $cliarr(fd) $cliarr(tty_id)} result]} {
puts "WARNING: $result"
}
 
return -code ok $rbuf
}
 
proc run_cli_interactive { clist } {
set rbuf ""
 
if {[llength $clist] < 1} {
return -code ok $rbuf
}
 
if {[catch {cli_open} result]} {
return -code error $result
} else {
array set cliarr $result
}
 
if {[catch {cli_exec $cliarr(fd) "enable"} result]} {
return -code error $result
}
 
if {[catch {cli_exec $cliarr(fd) "term length 0"} result]} {
return -code error $result
}
 
foreach cmd $clist {
array set sendexp $cmd
 
if {[catch {cli_write $cliarr(fd) $sendexp(send)} result]} {
return -code error $result
}
 
foreach response $sendexp(responses) {
array set resp $response
 
if {[catch {cli_read_pattern $cliarr(fd) $resp(expect)} result]} {
return -code error $result
}
 
if {[catch {cli_write $cliarr(fd) $resp(reply)} result]} {
return -code error $result
}
}
 
if {[catch {cli_read $cliarr(fd)} result]} {
return -code error $result
}
 
append rbuf $result
}
 
if {[catch {cli_close $cliarr(fd) $cliarr(tty_id)} result]} {
puts "WARNING: $result"
}
 
return -code ok $rbuf
}
 
array set arr_einfo [event_reqinfo]
 
set args $arr_einfo(argc)
 
set cmds [list]
 
for { set i 0 } { $i < $args } { incr i } {
set arg "arg${i}"
# Split each argument on the '^' character. The first element is
# the command, and each subsequent element is a prompt followed by
# a response to that prompt.
set cmdlist [split $arr_einfo($arg) "^"]
set cmdarr(send) [lindex $cmdlist 0]
set cmdarr(responses) [list]
if { [expr ([llength $cmdlist] - 1) % 2] != 0 } {
return -code 88
}
set cmdarr(responses) [list]
for { set j 1 } { $j < [llength $cmdlist] } { incr j 2 } {
set resps(expect) [lindex $cmdlist $j]
set resps(reply) [lindex $cmdlist [expr $j + 1]]
lappend cmdarr(responses) [array get resps]
}
lappend cmds [array get cmdarr]
}
 
set rc [catch {run_cli_interactive $cmds} output]
 
if { $rc != 0 } {
error $output $errorInfo
return -code 88
}
 
puts $output

関連情報

EEM の概要については、「 Embedded Event Manager Overview 」の章を参照してください。

Cisco IOS CLI を使用して EEM ポリシーを記述する方法については、「 Writing Embedded Event Manager Policies Using the Cisco IOS CLI 」の章を参照してください。

その他の参考資料

次の項では、Tcl を使用した Embedded Event Manager ポリシー記述についての関連資料を示します。

関連資料

関連トピック
参照先

Cisco IOS コマンド

『Cisco IOS Master Commands List, All Releases』

ネットワーク管理コマンド(EEM コマンドを含む):コマンド構文の詳細、デフォルト設定、コマンド モード、コマンド履歴、使用上のガイドライン、および例

『Cisco IOS Network Management Command Reference』

Embedded Event Manager 概要

Embedded Event Manager Overview 」の章

CLI を使用して Embedded Event Manager ポリシーを記述する

Writing Embedded Event Manager Policies Using the Cisco IOS CLI 」の章

Embedded Resource Manager

Embedded Resource Manager 」の章

MIB

MIB
MIB リンク

CISCO-EMBEDDED-EVENT-MGR-MIB

選択したプラットフォーム、Cisco IOS Release、およびフィーチャ セットの MIB を検索してダウンロードする場合は、次の URL にある Cisco MIB Locator を使用します。

http://www.cisco.com/go/mibs

RFC

RFC
タイトル

この機能では、新しい RFC または変更された RFC はサポートされていません。また、既存の RFC に対するサポートに変更はありません。

--

シスコのテクニカル サポート

説明
リンク

右の URL にアクセスして、シスコのテクニカル サポートを最大限に活用してください。

以下を含むさまざまな作業にこの Web サイトが役立ちます。
・テクニカル サポートを受ける
・ソフトウェアをダウンロードする
・セキュリティの脆弱性を報告する、またはシスコ製品のセキュリティ問題に対する支援を受ける
・ツールおよびリソースへアクセスする
- Product Alert の受信登録
- Field Notice の受信登録
- Bug Toolkit を使用した既知の問題の検索
・Networking Professionals(NetPro)コミュニティで、技術関連のディスカッションに参加する
・トレーニング リソースへアクセスする
・TAC Case Collection ツールを使用して、ハードウェアや設定、パフォーマンスに関する一般的な問題をインタラクティブに特定および解決する

この Web サイト上のツールにアクセスする際は、Cisco.com のログイン ID およびパスワードが必要です。

http://www.cisco.com/cisco/web/support/index.html

EEM ポリシーの Tcl コマンド拡張の関連資料

ここでは、次の EEM ポリシーの Tcl コマンド拡張カテゴリについて説明します。

「EEM イベント登録の Tcl コマンド拡張」

「EEM イベント情報の Tcl コマンド拡張」

「EEM イベントの Tcl コマンド拡張」

「EEM アクションの Tcl コマンド拡張」

「EEM ユーティリティの Tcl コマンド拡張」

「EEM システム情報の Tcl コマンド拡張」

「EEM ライブラリのデバッグ コマンド拡張」

「SMTP ライブラリのコマンド拡張」

「CLI ライブラリのコマンド拡張」

「Tcl コンテキスト ライブラリ コマンド拡張」


) すべての EEM Tcl コマンド拡張について、エラーがあった場合、戻される Tcl 結果文字列には、エラー情報が含まれます。



) 数値範囲が指定されていない引数は、-2147483648 から 2147483647 までの整数から取得されます。


次の表記法が、Tcl コマンド拡張ページで説明されている構文に使用されます。

任意の引数は、たとえば次の例のように、角カッコ内に示されます。

[type ?]

疑問符(?)は 入力する変数を表します。

引数間の選択肢は、たとえば次の例のように、パイプ文字で示されます。

priority low|normal|high

event_register_appl

アプリケーション イベントの登録を行います。この Tcl コマンド拡張を使用すると、アプリケーション イベントがトリガーされ、続いて event_publish Tcl コマンド拡張の別のポリシーが実行されるときに、ポリシーが実行されます。 event_publish コマンド拡張によって、アプリケーション イベントがパブリッシュされます。

アプリケーション イベントを登録するためには、サブシステムを指定する必要があります。Tcl ポリシーまたは内部 Embedded Event Manager(EEM)API のいずれかによって、アプリケーション イベントをパブリッシュできます。イベントがポリシーによってパブリッシュされている場合、ポリシーで予約される sub_system 引数は 798 です。

構文

event_register_appl [tag ?] sub_system ? type ? [queue_priority low|normal|high|last] [maxrun ?] [nice 0|1]

引数

tag

(任意)Tcl スクリプト内で複数のイベント文をサポートするため、Tcl コマンド拡張のトリガーとともに使用できるタグを指定する文字列。

sub_system

(必須)アプリケーション イベントをパブリッシュした EEM ポリシーに割り当てられる番号。他のすべての番号は Cisco での使用のために予約されているため、番号は 798 に設定されます。この引数が指定されない場合、すべてのコンポーネントが照会されます。

type

(必須)指定されたイベント内のイベント サブタイプ。sub_system 引数および type 引数によって、アプリケーション イベントが一意に識別されます。この引数が指定されない場合、すべてのタイプが照会されます。この引数を指定する場合、1 ~ 4294967295 の整数を選択する必要があります。

パブリッシュと登録を動作させるために、 event_publish コマンド拡張と event_register_appl コマンド拡張との間のコンポーネントとタイプが一致する必要があります。

queue_priority

(任意)次のような、スクリプトがキューに入れられるプライオリティ レベル。

queue_priority low:3 つのプライオリティ レベルの最も低いレベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority normal:low プライオリティよりも高く、high プライオリティよりも低いプライオリティ レベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority high:3 つのプライオリティ レベルの最も高いレベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority last:最も低いプライオリティ レベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority_last 引数が設定された状態で複数のスクリプトが登録されている場合、これらのスクリプトは、イベントのパブリッシュ順に実行されます。

(注) queue_priority 引数によって、登録されているスクリプトの実行プライオリティではなく、キューイングのプライオリティが指定されます。

この引数が指定されない場合、デフォルトのキューイング プライオリティは normal です。

maxrun

(任意)スクリプトの最大実行時間(SSSSSSSSSS[.MMM] 形式で指定します。SSSSSSSSSS は、0 ~ 4294967295 の秒数を表す整数で、MMM は 0 ~ 999 のミリ秒数を表す整数である必要があります)。この引数が指定されない場合、デフォルトの 20 秒ランタイム制限が使用されます。

nice

(任意)ポリシー実行時間のプライオリティ設定。nice 引数が 1 に設定されている場合、ポリシーは、デフォルト プライオリティよりも低い実行時プライオリティで実行されます。デフォルトは 0 です。

複数の条件が存在する場合、すべての条件が満たされたときに、アプリケーション イベントが発生します。

結果文字列

なし

Set _cerrno

なし

event_register_cli

CLI イベントの登録を行います。この Tcl コマンドを使用すると、拡張 CLI コマンドに対して実行されるパターン マッチに基づいて、特定パターンの CLI コマンドが入力されるときに、ポリシーが実行されます。


) ユーザは、sh mem summary などの省略形の CLI コマンドを入力でき、パーサーによってコマンドが show memory summary に拡張され、照会が実行されます。



) CLI イベント ディテクタによる機能は、有効な IOS CLI コマンドでの正規表現パターン比較機能だけです。これには、リダイレクションが使用される場合のパイプ記号(|)以降のテキストは含まれません。


構文

event_register_cli [tag ?] sync yes|no skip yes|no
[occurs ?] [period ?] pattern ? [default ?] [enter] [questionmark] [tab] [mode]
[queue_priority low|normal|high|last] [maxrun ?] [nice 0|1]

引数

tag

(任意)Tcl スクリプト内で複数のイベント文をサポートするため、Tcl コマンド拡張のトリガーとともに使用できるタグを指定する文字列。

sync

(必須)yes は、ポリシー(イベント パブリッシュ)が、CLI コマンドと同期的に実行することを意味します。no は、イベント パブリッシュが CLI コマンドと非同期に実行されることを意味します。ポリシーの実行が完了すると、イベント ディテクタによって通知されます。ポリシーの終了ステータスは、CLI コマンドを実行する必要があるかどうかを示します。終了ステータスがゼロの場合は、ポリシーが正常に実行されたことを意味し、CLI コマンドは実行されません。それ以外の場合は、CLI コマンドが実行されます。

skip

sync 引数が no の場合は必須で、sync 引数が yes の場合は使用できません。skip 引数が yes の場合、CLI コマンドを実行できないことを意味します。skip 引数が no の場合、CLI コマンドを実行する必要があることを意味します。


注意 skip 引数が yes のときに、パターン マッチがコンフィギュレーション コマンドに対して行われる場合、正規表現に一致する CLI コマンドは実行されないため、想定外の結果が生成される場合があります。

occurs

(任意)イベントが発生する前の発生回数。この引数が指定されない場合、イベントは 1 回目から発生します。この引数が指定される場合は、1 ~ 4294967295 の範囲の整数である必要があります。

period

(任意)イベントがパブリッシュされるようにするために、すべての CLI イベントが発生する必要がある(occurs 句を満たす必要がある)逆方向検索時間ウィンドウを指定します(SSSSSSSSSS[.MMM] 形式で指定します。SSSSSSSSSS は、0 ~ 4294967295 の秒数を表す整数で、MMM は 0 ~ 999 のミリ秒数を表す整数である必要があります)。この引数が指定されない場合は、最新のイベントが使用されます。

pattern

(必須)CLI コマンド パターン マッチの実行に使用される正規表現を指定します。

default

(任意)CLI イベント ディテクタがポリシーの終了を待つ時間(SSSSSSSSSS[.MMM] 形式で指定します。SSSSSSSSSS は、0 ~ 4294967295 の秒数を表す整数で、MMM は 0 ~ 999 のミリ秒数を表す整数である必要があります)。ポリシーが終了する前にデフォルトの時間の期限が切れると、デフォルト アクションが実行されます。デフォルト アクションによって、コマンドが実行されます。この引数が指定されない場合、デフォルトの時間は 30 秒に設定されます。

queue_priority

(任意)次のような、スクリプトがキューに入れられるプライオリティ レベル。

queue_priority low:3 つのプライオリティ レベルの最も低いレベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority normal:low プライオリティよりも高く、high プライオリティよりも低いプライオリティ レベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority high:3 つのプライオリティ レベルの最も高いレベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority last:最も低いプライオリティ レベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority_last 引数が設定された状態で複数のスクリプトが登録されている場合、これらのスクリプトは、イベントのパブリッシュ順に実行されます。

(注) queue_priority 引数によって、登録されているスクリプトの実行プライオリティではなく、キューイングのプライオリティが指定されます。

この引数が指定されない場合、デフォルトのキューイング プライオリティは normal です。

enter

(任意)ユーザが Enter キーを押したときにイベント照会が実行されるよう、指定します。このパラメータが使用されると、照会前には入力文字列は拡張されません。

questionmark

(任意)ユーザが ? キーを押したときにイベント照会が実行されるよう、指定します。このパラメータが使用されると、照会前には入力文字列は拡張されません。

tab

(任意)ユーザが Tab キーを押したときにイベント照会が実行されるよう、指定します。このパラメータが使用されると、照会前には入力文字列は拡張されません。

mode

(任意)パーサーが指定されたパーサー モードの場合のみ、イベントが生成されます。使用可能なモードは、 show parser dump CLI コマンドを使用してリストを表示できます。オプション パラメータの enter、questionmark、または tab のいずれか 1 つが指定されたときに、mode パラメータがチェックされます。

maxrun

(任意)スクリプトの最大実行時間(SSSSSSSSSS[.MMM] 形式で指定します。SSSSSSSSSS は、0 ~ 4294967295 の秒数を表す整数で、MMM は 0 ~ 999 のミリ秒数を表す整数である必要があります)。この引数が指定されない場合、デフォルトの 20 秒ランタイム制限が使用されます。

nice

(任意)ポリシー実行時間のプライオリティ設定。nice 引数が 1 に設定されている場合、ポリシーは、デフォルト プライオリティよりも低い実行時プライオリティで実行されます。デフォルトは 0 です。

複数の条件が存在する場合、すべての条件が一致したときに、CLI イベントが発生します。

結果文字列

なし

Set _cerrno

なし


) このポリシーは、CLI コマンドの実行前に実行されます。たとえば、copy コマンドが入力されたときに、policy_CLI が実行のために登録されるとします。copy コマンドが入力されると、CLI イベント ディテクタによって、パターン マッチが見つけられ、このポリシーの実行がトリガーされます。ポリシーの実行が終了すると、sync、skip(ポリシーで設定)、および、必要な場合にはポリシー実行の終了ステータスに従って、copy コマンドが実行される必要があるかどうかが、CLI イベント ディテクタによって判断されます。


event_register_counter

パブリッシャとサブスクライバの両方として、カウンタ イベントの登録を行います。この Tcl コマンド拡張を使用すると、しきい値に近くなった名前付きカウンタに基づいて、ポリシーが実行されます。サブスクライバとして、このイベント カウンタによって、登録に必要なカウンタの名前が指定され、別のポリシーまたは別のプロセスに依存して、カウンタが実際に操作されます。たとえば、policyB がカウンタ ポリシーとして動作し、policyA(カウンタ ポリシーは不要ですが)では、 register_counter counter_modify 、または unregister_counter の各 Tcl コマンド拡張を使用して、policyB で定義されているカウンタが操作されます。

構文

event_register_counter [tag ?] name ? entry_op gt|ge|eq|ne|lt|le entry_val ?
exit_op gt|ge|eq|ne|lt|le exit_val ? [queue_priority low|normal|high|last]
[maxrun ?] [nice 0|1]

引数

tag

(任意)Tcl スクリプト内で複数のイベント文をサポートするため、Tcl コマンド拡張のトリガーとともに使用できるタグを指定する文字列。

name

(必須)カウンタの名前。

entry_op

(必須)現在のカウンタの値を開始値と比較するために使用される開始比較演算子。真の場合、イベントが発生し、終了基準を満たすまでイベント監視がディセーブルにされます。

entry_val

(必須)カウンタ イベントを発生させる必要があるかどうかを判断するために、現在のカウンタの値を比較する必要がある値。

exit_op

(必須)現在のカウンタの値を終了値と比較するために使用される終了比較演算子。真の場合、このイベントのイベント監視が再度イネーブルにされます。

exit_val

(必須)終了基準を満たすかどうかを判断するために、現在のカウンタの値を比較する必要がある値。

queue_priority

(任意)次のような、スクリプトがキューに入れられるプライオリティ レベル。

queue_priority low:3 つのプライオリティ レベルの最も低いレベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority normal:low プライオリティよりも高く、high プライオリティよりも低いプライオリティ レベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority high:3 つのプライオリティ レベルの最も高いレベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority last:最も低いプライオリティ レベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority_last 引数が設定された状態で複数のスクリプトが登録されている場合、これらのスクリプトは、イベントのパブリッシュ順に実行されます。

(注) queue_priority 引数によって、登録されているスクリプトの実行プライオリティではなく、キューイングのプライオリティが指定されます。

この引数が指定されない場合、デフォルトのキューイング プライオリティは normal です。

maxrun

(任意)スクリプトの最大実行時間(SSSSSSSSSS[.MMM] 形式で指定します。SSSSSSSSSS は、0 ~ 4294967295 の秒数を表す整数で、MMM は 0 ~ 999 のミリ秒数を表す整数である必要があります)。この引数が指定されない場合、デフォルトの 20 秒ランタイム制限が使用されます。

nice

(任意)ポリシー実行時間のプライオリティ設定。nice 引数が 1 に設定されている場合、ポリシーは、デフォルト プライオリティよりも低い実行時プライオリティで実行されます。デフォルトは 0 です。

結果文字列

なし

Set _cerrno

なし

event_register_gold

Generic Online Diagnostic(GOLD)障害イベントの登録を行います。この Tcl コマンド拡張を使用すると、指定されたカードおよびサブカードの Generic Online Diagnostic(GOLD)障害イベントに基づいて、ポリシーが実行されます。

構文

event_register_gold card all|card_number
[subcard all|subcard_number]
[new_failure TRUE|FALSE]
[severity_major TRUE]
[severity_minor TRUE]
[severity_normal TRUE]
[action_notify TRUE|FALSE]
[testing_type [bootup|ondemand|schedule|monitoring]]
[test_name [testname]]
[test_id [testnumber]]
[consecutive_failure consecutive_failure_number]
[platform_action [action_flag]]
[maxrun ?]
[queue_priority low|normal|high|last]
[nice 0|1]

引数

card

(必須)すべてのカードまたは 1 つのカードが監視されるよう指定します。

card all:すべてのカードが監視されるよう指定します。これがデフォルトです。

card-number:番号 card-number によって指定されたカードが監視されるよう指定します。

event_register_gold Tcl コマンド拡張を完了させるには、この引数を指定する必要があります。

subcard

(任意)1 つまたは複数のサブカードが監視されるよう指定します。

subcard all:すべてのサブカードが監視されるよう指定します。

subcard-number 番号 subcard-number によって指定されたサブカードが監視されるよう指定します。

この引数が指定されない場合、すべてのサブカードがデフォルトで監視されます。

new_failure

(任意)GOLD からの新しいテスト障害情報に基づいて、イベント基準を指定します。

new_failure TRUE:GOLD からの新しいテスト障害のイベント基準が真であると指定します。

new_failure FALSE:GOLD からの新しいテスト障害のイベント基準が偽であると指定します。

この引数が指定されない場合、GOLD からの新しいテスト障害情報は、イベント基準で考慮されません。

severity_major

(任意)診断結果のイベント基準が、GOLD からの診断(メジャー エラー)と合致するよう指定します。

severity_minor

(任意)診断結果のイベント基準が、GOLD からの診断(マイナー エラー)と合致するよう指定します。

severity_normal

(任意)診断結果のイベント基準が、GOLD からの診断(通常)と合致するよう指定します。これがデフォルトです。

action_notify

(任意)GOLD からのアクション通知情報に基づいて、イベント基準を指定します。

action_notify TRUE:GOLD からのアクション通知のイベント基準が真であると指定します。

action_notify FALSE:GOLD からのアクション通知のイベント基準が偽であると指定します。

この引数が指定されない場合、GOLD からのアクション通知情報は、イベント基準で考慮されません。

testing_type

(任意)GOLD からの診断のテスト タイプに基づいて、イベント基準を指定します。

testing_type bootup:システム ブート時に実行される診断テストを指定します。

testing_type ondemand:カードがオンライン後に CLI から実行される診断テストを指定します。

testing_type schedule:スケジュールされる診断テストを指定します。

testing_type monitoring:システムの状態を監視するためにバックグラウンドで定期的に実行される診断テストを指定します。

この引数が指定されない場合、GOLD からのテスト タイプ情報は、イベント基準で考慮されず、ポリシーは、すべての診断テスト タイプに適用されます。

test_name

(任意)名前 test-name でのテストに基づいて、イベント基準を指定します。

test_name test-name:名前 test-name でのテストに基づいて、イベント基準を指定します。

この引数が指定されない場合、GOLD からのテスト名情報は、イベント基準で考慮されません。

test_id

(任意)テスト ID に基づいて、イベント基準を指定します。

test_id test-id ID 番号 test-id でのテストに基づいて、イベント基準を指定します。test-id の最大値は 65535 です。

(注) テスト ID は、異なるラインカード上での同じテストについて、異なる可能性があるため、通常は、代わりに test_name キーワードを使用する必要があります。テスト ID が指定され、指定されたテスト名と矛盾する場合、テスト名によって、テスト ID が上書きされます。

この引数が指定されない場合、GOLD からのテスト ID 情報は、イベント基準で考慮されません。

consecutive_failure

(任意)GOLD からの連続テスト障害情報に基づいて、イベント基準を指定します。

consecutive_failure consecutive-failure-number:イベント障害が、consecutive-failure-number 連続テスト障害の発生に基づくよう、指定します。

この引数が指定されない場合、GOLD からの連続テスト障害情報は、イベント基準で考慮されません。

platform_action

(任意)すべてのイベント基準が一致した場合に、プラットフォームへのコールバックが必要かどうかを指定します。コールバックが必要な場合、プラットフォームでは、指定されたレジストリを介してコールバック機能を登録する必要があります。

platform_action action-flag-number プラットフォームへのコールバックが必要な場合に、特定の情報がプラットフォーム特有の action-flag-number の値によって指定されるよう、指定します。action-flag-number の最大値は 65535 です。

(注) プラットフォームにより、フラグに基づいて行われる必要があるアクションが判断されます。

この引数が指定されない場合、コールバックはありません。

maxrun

(任意)スクリプトの最大実行時間を指定します。

maxrun max-run-time-number:スクリプトの最大実行時間を、max-run-time-number 秒と指定します。max-run-time-number の最大値は 4294967295 秒です。

この引数が指定されない場合、デフォルトの実行時間は 20 秒です。

queue_priority

(任意)次のような、スクリプトがキューに入れられるプライオリティ レベル。

queue_priority low:3 つのプライオリティ レベルの最も低いレベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority normal:low プライオリティよりも高く、high プライオリティよりも低いプライオリティ レベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority high:3 つのプライオリティ レベルの最も高いレベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority last:最も低いプライオリティ レベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority_last 引数が設定された状態で複数のスクリプトが登録されている場合、これらのスクリプトは、イベントのパブリッシュ順に実行されます。

(注) queue_priority 引数によって、登録されているスクリプトの実行プライオリティではなく、キューイングのプライオリティが指定されます。

この引数が指定されない場合、デフォルトのキューイング プライオリティは normal です。

nice

(任意)次のような、ポリシー実行時間のプライオリティ設定。

nice 0:ポリシーが、デフォルトの実行時間プライオリティ レベルで実行されるよう、指定します。

nice 1:ポリシーが、デフォルト プライオリティ レベルよりも低い実行時間プライオリティで実行されるよう、指定します。

この引数が指定されない場合、デフォルトの実行時間プライオリティが使用されます。

結果文字列

なし

Set _cerrno

なし

event_register_interface

インターフェイス カウンタ イベントの登録を行います。この Tcl コマンド拡張を使用すると、指定されたインターフェイス カウンタが指定されたしきい値を超えたときに、イベントが生成されます。

構文

event_register_interface [tag ?] name ?
parameter ? entry_op gt|ge|eq|ne|lt|le
entry_val ? entry_val_is_increment TRUE|FALSE
entry_type value|increment|rate
[exit_comb or|and]
[exit_op gt|ge|eq|ne|lt|le]
[exit_val ?] [exit_val_is_increment TRUE|FALSE]
[exit_type value|increment|rate]
[exit_time ?] [poll_interval ?]
[average_factor ?] [queue_priority low|normal|high|last]
[maxrun ?] [nice 0|1]

引数

tag

(任意)Tcl スクリプト内で複数のイベント文をサポートするため、Tcl コマンド拡張のトリガーとともに使用できるタグを指定する文字列。

name

(必須)イーサネット 0/0 など、監視されるインターフェイスの名前。省略形と空白は使用できません。

parameter

(必須)比較されるカウンタの名前は、次のとおりです。

input_errors:ラント、ジャイアント、バッファなし、CRC、フレーム、オーバーラン、および 無視されたカウントが含まれます。他の入力関連のエラーも、入力エラー カウントが大きくなる場合があります。一部のデータグラムには、複数のエラーがあります。したがって、この合計は、列挙型入力エラー カウントとのバランスが取れない場合があります。

input_errors_crc:発信元 LAN ステーションまたは遠隔エンド デバイスによって生成される巡回冗長検査が、受信したデータから計算されるチェックサムに一致しません。

input_errors_frame:受信した不正確なパケット数。CRC エラーが発生し、8 ビットの非整数の数です。

input_errors_overrun:入力レートが、レシーバーのデータ処理能力を超えたために、レシーバー ハードウェアによって、受信データをハードウェア バッファに渡せなかった回数。

input_packets_dropped:入力キューがいっぱいのため、廃棄されたパケット数。

interface_resets:インターフェイスが完全にリセットされた回数。

output_buffer_failures:障害が発生したバッファ数およびスワップされたバッファ数。

output_buffer_swappedout:DRAM にスワップされたパケット数。

parameter(続き)

output_errors:調べられているインターフェイスからのデータグラムの最終的な送信が妨害されたすべてのエラーの合計。一部のデータグラムには、複数のエラーがある場合があり、また、他のデータグラムには、特に表形式のカテゴリに当てはまらないエラーがある場合があるため、これは、列挙型出力エラーの合計とのバランスが取れないことがあります。

output_errors_underrun:トランスミッタが、ルータが処理可能な速度よりも高速だった回数。

output_packets_dropped:出力キューがいっぱいのため、廃棄されたパケット数。

receive_broadcasts:インターフェイスによって受信されたブロードキャスト パケットまたはマルチキャスト パケットの数。

receive_giants:メディアの最大パケット サイズを超過したために廃棄されたパケット数。

receive_rate_bps:1 秒あたりのバイト単位でのインターフェイス受信レート。

receive_rate_pps:1 秒あたりのパケット単位でのインターフェイス受信レート。

receive_runts:メディアの最初パケット サイズよりも小さいために廃棄されたパケット数。

receive_throttle:バッファまたはプロセッサが過負荷などの理由で、ポート上のレシーバーがディセーブルにされた回数。

reliability:5 分間の幾何平均で計算される、255 の分数でのインターフェイスの信頼性(255/255 が 100% の信頼性)。

rxload:255 の分数でのインターフェイスの受信レート(255/255 が 100%)。

transmit_rate_bps:1 秒あたりのバイト単位でのインターフェイス送信レート。

transmit_rate_pps:1 秒あたりのパケット単位でのインターフェイス送信レート。

txload:255 の分数でのインターフェイスの送信レート(255/255 が 100%)。

entry_op

(必須)現在のインターフェイスの値を開始値と比較するために使用される比較演算子。真の場合、イベントが発生し、終了基準を満たすまでイベント監視がディセーブルにされます。

entry_val

(必須)イベントがトリガーされる値。

entry_val_is_increment

(必須)TRUE の場合、entry_val フィールドは増分差異として処理され、現在のカウンタの値と、イベントが最後に真であったとき(これが新しいイベントの場合は最初にポーリングされたサンプル)の値との間の差と、比較されます。負の値によって、減少しているカウンタの増分差異がチェックされます。FALSE の場合、entry_val フィールドが現在のカウンタの値に対して比較されます。

(注) Cisco IOS Release 12.4(20)T では、このキーワードは廃止予定で、指定された場合、構文は同等の entry-type キーワード構文に変換されます。

entry-type

entry-val 引数によって指定されたオブジェクト ID に適用される操作のタイプを指定します。

値は、entry-val 引数の実際の値として定義されます。

増分では、entry-val フィールドは増分差異として使用され、entry-val は、現在のカウンタの値と、イベントが最後に真であったとき(これが新しいイベントの場合は最初にポーリングされたサンプル)の値との間の差と、比較されます。負の値によって、減少しているカウンタの増分差異がチェックされます。

レートは、ある期間の変更の平均レートとして定義されます。期間は、average-factor の値に、poll-interval の値を乗じたものです。ポーリング間隔ごとに、現在のサンプルと前のサンプルとの間の差が取得され、絶対値として記録されます。前の average-factor 値サンプルの平均は、変更のレートとして取得されます。

exit_comb

(任意)イベント トリガーの再準備に必要な終了条件テストの組み合わせを示すために使用されます。and 演算子が指定される場合、再準備のためには、終了値と終了時間テストの両方が真である必要があります。or 演算子が指定される場合、イベント監視の再準備のためには、終了値または終了時間テストのいずれかが真である可能性があります。

exit_op

(任意)現在のインターフェイスの値を終了値と比較するために使用される比較演算子。真の場合、このイベントのイベント監視が再度イネーブルにされます。

exit_val

(任意)イベントが再度監視されるように再準備される値。

exit_val_is_increment

(任意)TRUE の場合、exit_val フィールドは増分差異として処理され、現在のカウンタの値と、イベントが最後に真であったときの値との間の差と、比較されます。負の値によって、減少しているカウンタの増分差異がチェックされます。FALSE の場合、exit_val フィールドが現在のカウンタの値に対して比較されます。

(注) Cisco IOS Release 12.4(20)T では、このキーワードは廃止予定で、指定された場合、構文は同等の exit-type キーワード構文に変換されます。

exit-type

(任意)exit-val 引数によって指定されたオブジェクト ID に適用される操作のタイプを指定します。指定されない場合、値が仮定されます。

値は、exit-val 引数の実際の値として定義されます。

増分では、exit-val フィールドは増分差異として使用され、exit-val は、現在のカウンタの値と、イベントが最後に真であったとき(これが新しいイベントの場合は最初にポーリングされたサンプル)の値との間の差と、比較されます。負の値によって、減少しているカウンタの増分差異がチェックされます。

レートは、ある期間の変更の平均レートとして定義されます。期間は、average-factor の値に、poll-interval の値を乗じたものです。ポーリング間隔ごとに、現在のサンプルと前のサンプルとの間の差が取得され、絶対値として記録されます。前の average-factor 値サンプルの平均は、変更のレートとして取得されます。

exit_time

(任意)イベントが再度監視されるように再準備される時間(SSSSSSSSSS[.MMM] 形式で指定します。SSSSSSSSSS は、0 ~ 4294967295 の秒数を表す整数で、MMM は 0 ~ 999 のミリ秒数を表す整数である必要があります)。

poll_interval

(任意)サンプルが収集される頻度(SSSSSSSSSS[.MMM] 形式で指定します。SSSSSSSSSS は、60 ~ 4294967295 の秒数を表す整数で、MMM は 0 ~ 999 のミリ秒数を表す整数である必要があります)。ポーリング間隔の値には、1 秒よりも小さい値は使用できません。デフォルトは 1 秒です。

average-factor

(任意)レート ベースの計算に使用される期間の計算に使用される 1 から 64 の範囲の数。average-factor の値は、poll-interval の値を乗じた値で、ミリ秒単位で導き出される期間です。最少平均係数値は 1 です。

queue_priority

(任意)次のような、スクリプトがキューに入れられるプライオリティ レベル。

queue_priority low:3 つのプライオリティ レベルの最も低いレベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority normal:low プライオリティよりも高く、high プライオリティよりも低いプライオリティ レベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority high:3 つのプライオリティ レベルの最も高いレベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority last:最も低いプライオリティ レベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority_last 引数が設定された状態で複数のスクリプトが登録されている場合、これらのスクリプトは、イベントのパブリッシュ順に実行されます。

(注) queue_priority 引数によって、登録されているスクリプトの実行プライオリティではなく、キューイングのプライオリティが指定されます。

この引数が指定されない場合、デフォルトのキューイング プライオリティは normal です。

maxrun

(任意)スクリプトの最大実行時間(SSSSSSSSSS[.MMM] 形式で指定します。SSSSSSSSSS は、0 ~ 4294967295 の秒数を表す整数で、MMM は 0 ~ 999 のミリ秒数を表す整数である必要があります)。この引数が指定されない場合、デフォルトの 20 秒ランタイム制限が使用されます。

nice

(任意)ポリシー実行時間のプライオリティ設定。nice 引数が 1 に設定されている場合、ポリシーは、デフォルト プライオリティよりも低い実行時プライオリティで実行されます。デフォルトは 0 です。

結果文字列

なし

Set _cerrno

なし

event_register_ioswdsysmon

IOSWDSysMon イベントの登録を行います。この Tcl コマンド拡張を使用すると、Cisco IOS タスクが指定された CPU 使用率またはメモリしきい値を超えたときに、イベントが生成されます。Cisco IOS タスクは、ネイティブ Cisco IOS の Cisco IOS プロセスと呼ばれます。

構文

event_register_ioswdsysmon [tag ?] [timewin ?] [sub12op and|or] [sub1 ?] [sub2 ?]
[queue_priority low|normal|high|last] [maxrun ?] [nice 0|1]

引数

tag

(任意)Tcl スクリプト内で複数のイベント文をサポートするため、Tcl コマンド拡張のトリガーとともに使用できるタグを指定する文字列。

timewin

(任意)イベントが生成されるようにするために、すべてのサブイベントが発生する必要がある時間ウィンドウを定義します(SSSSSSSSSS[.MMM] 形式で指定します。SSSSSSSSSS は、0 ~ 4294967295 の秒数を表す整数で、MMM は 0 ~ 999 のミリ秒数を表す整数である必要があります)。

sub12_op

(任意)サブイベント 1 とサブイベント 2 とを比較する組み合わせ演算子。

sub1

(任意)サブイベント 1 の指定。

sub2

(任意)サブイベント 2 の指定。

queue_priority

(任意)次のような、スクリプトがキューに入れられるプライオリティ レベル。

queue_priority low:3 つのプライオリティ レベルの最も低いレベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority normal:low プライオリティよりも高く、high プライオリティよりも低いプライオリティ レベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority high:3 つのプライオリティ レベルの最も高いレベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority last:最も低いプライオリティ レベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority_last 引数が設定された状態で複数のスクリプトが登録されている場合、これらのスクリプトは、イベントのパブリッシュ順に実行されます。

(注) queue_priority 引数によって、登録されているスクリプトの実行プライオリティではなく、キューイングのプライオリティが指定されます。

この引数が指定されない場合、デフォルトのキューイング プライオリティは normal です。

maxrun

(任意)スクリプトの最大実行時間(SSSSSSSSSS[.MMM] 形式で指定します。SSSSSSSSSS は、0 ~ 4294967295 の秒数を表す整数で、MMM は 0 ~ 999 のミリ秒数を表す整数である必要があります)。この引数が指定されない場合、デフォルトの 20 秒ランタイム制限が使用されます。

nice

(任意)ポリシー実行時間のプライオリティ設定。nice 引数が 1 に設定されている場合、ポリシーは、デフォルト プライオリティよりも低い実行時プライオリティで実行されます。デフォルトは 0 です。

サブイベントの構文

cpu_proc path ? taskname ? op gt|ge|eq|ne|lt|le val ? [period ?]
 
mem_proc path ? taskname ? op gt|ge|eq|ne|lt|le val ? [is_percent TRUE|FALSE] [period ?]

サブイベントの引数

cpu_proc

(必須)CPU 統計情報のサンプル収集の使用を指定します。

path

(必須)ソフトウェア モジュール方式イメージのみ。監視される Cisco IOS スケジューラが含まれる POSIX プロセスのパス名。たとえば、/sbin/cdp2.iosproc など。

taskname

(必須)監視される Cisco IOS タスクの名前。

op

(必須)収集される使用サンプルを指定値と比較するために使用される比較演算子。真の場合、このイベントが発生します。

val

(必須)比較される値。

period

(任意)収集されるサンプルの平均が計算される経過時間(SSSSSSSSSS[.MMM] 形式で指定します。SSSSSSSSSS は、0 ~ 4294967295 の秒数を表す整数で、MMM は 0 ~ 999 のミリ秒数を表す整数である必要があります)。この引数が指定されない場合は、最新のサンプルが使用されます。

mem_proc

(必須)メモリ統計情報のサンプル収集の使用を指定します。

is_percent

(任意)指定値がパーセンテージかどうか。

結果文字列

なし

Set _cerrno

なし

event_register_ipsla

event ipsla コマンドによってトリガーされるイベントの登録を行います。この Tcl コマンド拡張を使用すると、IPSLA の応答がトリガーされるときに、イベントがパブリッシュされます。イベントの登録には、グループ ID または動作 ID が必要です。

構文

event_register_ipsla [tag ?] group_name ? operation_id ? [reaction_type ?]
[dest_ip_addr ?][queue_priority low|normal|high|last] [maxrun ?] [nice 0|1]

引数

tag

(任意)Tcl スクリプト内で複数のイベント文をサポートするため、Tcl コマンド拡張のトリガーとともに使用できるタグを指定する文字列。

group_name

(必須)IP SLA グループ名を指定します。

operation_id

(必須)IP SLA 動作 ID を指定します。番号は 1 から 2147483647 の範囲の整数です。

reaction_type

(任意)指定した IP SLA 動作に対する応答を指定します。

IP SLA 応答のタイプ: connectionLoss icpif jitterAvg jitterDSAvg jitterSDAvg maxOfNegativeDS maxOfNegativeSD maxOfPositiveDS maxOfPositiveSD mos packetLateArrival packetLossDS packetLossSD packetMIA packetOutOfSequence rtt timeout 、または verifyError の、いずれかのキーワードの 1 つを指定できます。

IP SLA の応答。次のキーワードの 1 つを指定できます。

connectionLoss

icpif

jitterAvg

jitterDSAvg

jitterSDAvg

maxOfNegativeDS

maxOfNegativeSD

maxOfPositiveDS

maxOfPositiveSD

mos

packetLateArrival

packetLossDS

packetLossSD

packetMIA

packetOutOfSequence

rtt

timeout

verifyError

dest_ip_address

(任意)IP SLA イベントが監視される宛先ポートの宛先 IP アドレスを指定します。

queue_priority

(任意)次のような、スクリプトがキューに入れられるプライオリティ レベル。

queue_priority low:3 つのプライオリティ レベルの最も低いレベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority normal:low プライオリティよりも高く、high プライオリティよりも低いプライオリティ レベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority high:3 つのプライオリティ レベルの最も高いレベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority last:最も低いプライオリティ レベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority_last 引数が設定された状態で複数のスクリプトが登録されている場合、これらのスクリプトは、イベントのパブリッシュ順に実行されます。

(注) queue_priority 引数によって、登録されているスクリプトの実行プライオリティではなく、キューイングのプライオリティが指定されます。

この引数が指定されない場合、デフォルトのキューイング プライオリティは normal です。

maxrun

(任意)スクリプトの最大実行時間(SSSSSSSSSS[.MMM] 形式で指定します。SSSSSSSSSS は、0 ~ 31536000 の秒数を表す整数で、MMM は 0 ~ 999 のミリ秒数を表す整数である必要があります)。この引数が指定されない場合、デフォルトの 20 秒ランタイム制限が使用されます。

nice

(任意)ポリシー実行時間のプライオリティ設定。nice 引数が 1 に設定されている場合、ポリシーは、デフォルト プライオリティよりも低い実行時プライオリティで実行されます。デフォルトは 0 です。

結果文字列

なし

Set _cerrno

なし

event_register_nf

NetFlow イベントが event nf コマンドによってトリガーされるときのイベントの登録を行います。この Tcl コマンド拡張を使用すると、NetFlow の応答がトリガーされるときに、イベントがパブリッシュされます。

構文

event_register_nf [tag ?] monitor_name ? event_type create|update|delete
exit_event_type create|update|delete event1-event4 ? [maxrun ?] [nice 0|1]

引数

tag

(任意)Tcl スクリプト内で複数のイベント文をサポートするため、Tcl コマンド拡張のトリガーとともに使用できるタグを指定する文字列。

monitor_name

(必須)NetFlow モニタの名前。

event_type

(必須)フローの作成、アップデート、および削除を監視するイベントのタイプ。

exit_event_type

(必須)監視のためにイベントが再準備されるイベント タイプ(create、delete、update)。

event1- event4

(必須)監視するイベントとそのアトリビュートを指定します。有効な値は、 event1 event2 event3 、および event4 です。

サブイベント キーワードは、単独でも、一緒でも、それぞれの任意の組み合わせでも使用できますが、各キーワードは 1 回のみ使用できます。

maxrun

(任意)スクリプトの最大実行時間(SSSSSSSSSS[.MMM] 形式で指定します。SSSSSSSSSS は、0 ~ 4294967295 の秒数を表す整数で、MMM は 0 ~ 999 のミリ秒数を表す整数である必要があります)。この引数が指定されない場合、デフォルトの 20 秒ランタイム制限が使用されます。

nice

(任意)ポリシー実行時間のプライオリティ設定。nice 引数が 1 に設定されている場合、ポリシーは、デフォルト プライオリティよりも低い実行時プライオリティで実行されます。デフォルトは 0 です。

サブイベントの構文

field ? rate_interval ? event1 only entry_value ? entry_op eq|ge|gt|le|lt|wc
[exit_value ?] [exit_op eq|ge|gt|le|lt|wc] [exit_rate_interval ? event1 only]

サブイベントの引数

field

(必須)監視されるキャッシュまたはフィールド アトリビュートを指定します。次のアトリビュートの 1 つを指定できます。

counter { bytes | packets }:counter フィールドを指定します。

datalink { dot1q | mac }:datalink (layer2) フィールドを指定します。

flow { direction | sampler }:flow 識別フィールドを指定します。

interface { input | output }:interface フィールドを指定します。

ipv4 field-type :IPv4 フィールドを指定します。

ipv6 field-type :IPv6 フィールド。

routing routing-attrribute routing アトリビュートを指定します。

timestamp sysuptime { first | last } timestamp フィールドを指定します。

transport field-type :transport レイヤ フィールドを指定します。

rate_interval

(必須)レートの計算に使用されるレート間隔値を秒単位で指定します。このフィールドは、event1 でのみ有効です。

entry_value

(必須)フィールドまたはレートの値を指定します。

entry_op

(必須)フィールド演算子を指定します。

次の比較演算子の値が有効です。

eq :等しい

ge :以上

gt :より大きい

le :以下

lt :より小さい

wc :ワイルドカード

exit_value

(任意)イベントが再度監視されるように再準備される値。

exit_op

(任意)現在のイベント フィールドまたはレートの値を終了値と比較するために使用される比較演算子。真の場合、このイベントのイベント監視が再度イネーブルにされます。

次の比較演算子の値が有効です。

eq :等しい

ge :以上

gt :より大きい

le :以下

lt :より小さい

wc :ワイルドカード

exit_rate_interval

(任意)終了レート値の計算に使用される終了レート間隔値を秒単位で指定します。このフィールドは、event1 でのみ有効です。

結果文字列

なし

Set _cerrno

なし

event_register_none

event manager run コマンドによってトリガーされるイベントの登録を行います。これらのイベントは、このイベントをスクリーニングする None イベント ディテクタによって処理されます。

構文

event_register_none [tag ?] [queue_priority low|normal|high|last] [maxrun ?] [nice 0|1]

引数

tag

(任意)Tcl スクリプト内で複数のイベント文をサポートするため、Tcl コマンド拡張のトリガーとともに使用できるタグを指定する文字列。

queue_priority

(任意)次のような、スクリプトがキューに入れられるプライオリティ レベル。

queue_priority low:3 つのプライオリティ レベルの最も低いレベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority normal:low プライオリティよりも高く、high プライオリティよりも低いプライオリティ レベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority high:3 つのプライオリティ レベルの最も高いレベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority last:最も低いプライオリティ レベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority_last 引数が設定された状態で複数のスクリプトが登録されている場合、これらのスクリプトは、イベントのパブリッシュ順に実行されます。

(注) queue_priority 引数によって、登録されているスクリプトの実行プライオリティではなく、キューイングのプライオリティが指定されます。

この引数が指定されない場合、デフォルトのキューイング プライオリティは normal です。

maxrun

(任意)スクリプトの最大実行時間(SSSSSSSSSS[.MMM] 形式で指定します。SSSSSSSSSS は、0 ~ 4294967295 の秒数を表す整数で、MMM は 0 ~ 999 のミリ秒数を表す整数である必要があります)。この引数が指定されない場合、デフォルトの 20 秒ランタイム制限が使用されます。

nice

(任意)ポリシー実行時間のプライオリティ設定。nice 引数が 1 に設定されている場合、ポリシーは、デフォルト プライオリティよりも低い実行時プライオリティで実行されます。デフォルトは 0 です。

結果文字列

なし

Set _cerrno

なし

event_register_oir

Online Insertion and Removal(OIR; 活性挿抜)イベントの登録を行います。この Tcl コマンド拡張を使用すると、ハードウェア カード OIR イベントの発生時に発生するイベントに基づいて、ポリシーが実行されます。これらのイベントは、このイベントをスクリーニングする OIR イベント ディテクタによって処理されます。

構文

event_register_oir [tag ?] [queue_priority low|normal|high|last] [maxrun ?] [nice 0|1]

引数

tag

(任意)Tcl スクリプト内で複数のイベント文をサポートするため、Tcl コマンド拡張のトリガーとともに使用できるタグを指定する文字列。

queue_priority

(任意)次のような、スクリプトがキューに入れられるプライオリティ レベル。

queue_priority low:3 つのプライオリティ レベルの最も低いレベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority normal:low プライオリティよりも高く、high プライオリティよりも低いプライオリティ レベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority high:3 つのプライオリティ レベルの最も高いレベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority last:最も低いプライオリティ レベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority_last 引数が設定された状態で複数のスクリプトが登録されている場合、これらのスクリプトは、イベントのパブリッシュ順に実行されます。

(注) queue_priority 引数によって、登録されているスクリプトの実行プライオリティではなく、キューイングのプライオリティが指定されます。

この引数が指定されない場合、デフォルトのキューイング プライオリティは normal です。

maxrun

(任意)スクリプトの最大実行時間(SSSSSSSSSS[.MMM] 形式で指定します。SSSSSSSSSS は、0 ~ 4294967295 の秒数を表す整数で、MMM は 0 ~ 999 のミリ秒数を表す整数である必要があります)。この引数が指定されない場合、デフォルトの 20 秒ランタイム制限が使用されます。

nice

(任意)ポリシー実行時間のプライオリティ設定。nice 引数が 1 に設定されている場合、ポリシーは、デフォルト プライオリティよりも低い実行時プライオリティで実行されます。デフォルトは 0 です。

結果文字列

なし

Set _cerrno

なし

event_register_process

プロセス イベントの登録を行います。この Tcl コマンド拡張を使用すると、Cisco IOS ソフトウェア モジュール方式プロセスの開始時と停止時に発生するイベントに基づいて、ポリシーが実行されます。これらのイベントは、このイベントをスクリーニングする System Manager イベント ディテクタによって処理されます。この Tcl コマンド拡張は、ソフトウェア モジュール方式イメージでのみサポートされます。

構文

event_register_process [tag ?] abort|term|start|user_restart|user_shutdown
[sub_system ?] [version ?] [instance ?] [path ?] [node ?]
[queue_priority low|normal|high|last] [maxrun ?] [nice 0|1]

引数

tag

(任意)Tcl スクリプト内で複数のイベント文をサポートするため、Tcl コマンド拡張のトリガーとともに使用できるタグを指定する文字列。

abort

(必須)プロセスの異常な終了。ゼロではない終了ステータスでの終了、カーネル生成信号の受信、または、ユーザ要求のために送信されない SIGTERM 信号または SIGKILL 信号の受信のため、プロセスが強制終了されることがあります。

term

(必須)プロセスの正常な終了。

start

(必須)プロセスの開始。

user_restart

(必須)CLI コマンドからのプロセスの再起動要求が原因でプロセスを終了。

user_shutdown

(必須)CLI コマンドからのプロセスの終了要求が原因でプロセスを終了。

sub_system

(任意)プロセス イベントをパブリッシュした EEM ポリシーに割り当てられる番号。他のすべての番号は Cisco での使用のために予約されているため、番号は 798 に設定されます。

version

(任意)バージョン マネージャによって割り当てられるプロセスのバージョン番号。major_number.minor_number.level の形式である必要があります。指定される場合、バージョン番号の各コンポーネントは、1 ~ 4294967295 の範囲の整数である必要があります。

instance

(任意)プロセス インスタンス ID。指定される場合、この引数は、1 ~ 4294967295 の範囲の整数である必要があります。

path

(任意)プロセス パス名(正規表現文字列)。process-name 引数の値に空白文字が含まれている場合、二重引用符で囲む必要があります。すべてのプロセスを照会するには、パス「.*」を使用します。

node

(任意)ノード名は、「node」という語句と、それに続く、次の形式を使用してスラッシュ文字で区切られた 2 つのフィールドで構成される、文字列です。

node<slot-number>/<cpu-number>

slot-number は、ハードウェア スロット番号です。cpu-number は、ハードウェア CPU 番号です。たとえば、スロット 0 にある Cisco Catalyst 6500 シリーズ スイッチのスーパーバイザ カードの SP CPU は、node0/0 と指定されます。たとえば、スロット 0 にある Cisco Catalyst 6500 シリーズ スイッチのスーパーバイザ カードの RP CPU は、node0/1 と指定されます。node 引数が指定されない場合、デフォルトのノード指定は、常に、すべての該当するノードを表す正規表現パターン マッチ * です。

queue_priority

(任意)次のような、スクリプトがキューに入れられるプライオリティ レベル。

queue_priority low:3 つのプライオリティ レベルの最も低いレベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority normal:low プライオリティよりも高く、high プライオリティよりも低いプライオリティ レベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority high:3 つのプライオリティ レベルの最も高いレベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority last:最も低いプライオリティ レベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority_last 引数が設定された状態で複数のスクリプトが登録されている場合、これらのスクリプトは、イベントのパブリッシュ順に実行されます。

(注) queue_priority 引数によって、登録されているスクリプトの実行プライオリティではなく、キューイングのプライオリティが指定されます。

この引数が指定されない場合、デフォルトのキューイング プライオリティは normal です。

maxrun

(任意)スクリプトの最大実行時間(SSSSSSSSSS[.MMM] 形式で指定します。SSSSSSSSSS は、0 ~ 4294967295 の秒数を表す整数で、MMM は 0 ~ 999 のミリ秒数を表す整数である必要があります)。この引数が指定されない場合、デフォルトの 20 秒ランタイム制限が使用されます。

nice

(任意)ポリシー実行時間のプライオリティ設定。nice 引数が 1 に設定されている場合、ポリシーは、デフォルト プライオリティよりも低い実行時プライオリティで実行されます。デフォルトは 0 です。

任意の引数が指定されない場合、イベントは、引数のすべての可能な値に対して照会されます。複数の引数が存在する場合、すべての条件が一致したときに、プロセス イベントが発生します。

結果文字列

なし

Set _cerrno

なし

event_register_resource

Embedded Resource Manager(ERM)イベントの登録を行います。この Tcl コマンド拡張を使用すると、指定されたポリシーの ERM イベント レポートに基づいて、ポリシーが実行されます。ERM イベントは、EEM リソース イベントによってスクリーニングされ、これによって、指定された ERM ポリシーへの一致が発生したときに、EEM ポリシーを実行できます。

構文

event_register_resource policy policy-name [queue_priority low|normal|high|last]
[maxrun ?] [nice 0|1]

引数

policy

(必須)ポリシーの使用を指定します。

policy-name

(必須)ERM ポリシーの名前。

queue_priority

(任意)次のような、スクリプトがキューに入れられるプライオリティ レベル。

queue_priority low:3 つのプライオリティ レベルの最も低いレベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority normal:low プライオリティよりも高く、high プライオリティよりも低いプライオリティ レベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority high:3 つのプライオリティ レベルの最も高いレベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority last:最も低いプライオリティ レベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority_last 引数が設定された状態で複数のスクリプトが登録されている場合、これらのスクリプトは、イベントのパブリッシュ順に実行されます。

(注) queue_priority 引数によって、登録されているスクリプトの実行プライオリティではなく、キューイングのプライオリティが指定されます。

この引数が指定されない場合、デフォルトのキューイング プライオリティは normal です。

maxrun

(任意)スクリプトの最大実行時間(SSSSSSSSSS[.MMM] 形式で指定します。SSSSSSSSSS は、0 ~ 4294967295 の秒数を表す整数で、MMM は 0 ~ 999 のミリ秒数を表す整数である必要があります)。この引数が指定されない場合、デフォルトの 20 秒ランタイム制限が使用されます。

nice

(任意)ポリシー実行時間のプライオリティ設定。nice 引数が 1 に設定されている場合、ポリシーは、デフォルト プライオリティよりも低い実行時プライオリティで実行されます。デフォルトは 0 です。

結果文字列

なし

Set _cerrno

なし

event_register_rf

Redundancy Facility(RF; 冗長ファシリティ)イベントの登録を行います。この Tcl コマンド拡張を使用すると、RF の進行またはステータス イベントの通知が発生したときに、ポリシーが実行されます。

構文

event_register_rf [tag ?] event ?
[queue_priority low|normal|high|last]
[maxrun ?] [nice 0|1]

引数

tag

(任意)Tcl スクリプト内で複数のイベント文をサポートするため、Tcl コマンド拡張のトリガーとともに使用できるタグを指定する文字列。

event

(必須)RF の進行またはステータス イベントの名前。次の値が有効です。

RF_PROG_ACTIVE

RF_PROG_ACTIVE_DRAIN

RF_PROG_ACTIVE_FAST = 200

RF_PROG_ACTIVE_PRECONFIG

RF_PROG_ACTIVE_POSTCONFIG

RF_PROG_EXTRALOAD

RF_PROG_HANDBACK

RF_PROG_INITIALIZATION

RF_PROG_PLATFORM_SYNC

RF_PROG_STANDBY_BULK

RF_PROG_STANDBY_COLD

RF_PROG_STANDBY_CONFIG

RF_PROG_STANDBY_FILESYS

RF_PROG_STANDBY_HOT

RF_PROG_STANDBY_OIR_SYNC_DONE

RF_REGISTRATION_STATUS

RF_STATUS_MAINTENANCE_ENABLE

RF_STATUS_MANUAL_SWACT

RF_STATUS_OPER_REDUNDANCY_MODE_CHANGE

RF_STATUS_PEER_COMM

RF_STATUS_PEER_PRESENCE

RF_STATUS_REDUNDANCY_MODE_CHANGE

RF_STATUS_SWACT_INHIBIT

queue_priority

(任意)次のような、スクリプトがキューに入れられるプライオリティ レベル。

queue_priority low:3 つのプライオリティ レベルの最も低いレベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority normal:low プライオリティよりも高く、high プライオリティよりも低いプライオリティ レベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority high:3 つのプライオリティ レベルの最も高いレベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority last:最も低いプライオリティ レベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority_last 引数が設定された状態で複数のスクリプトが登録されている場合、これらのスクリプトは、イベントのパブリッシュ順に実行されます。

(注) queue_priority 引数によって、登録されているスクリプトの実行プライオリティではなく、キューイングのプライオリティが指定されます。

この引数が指定されない場合、デフォルトのキューイング プライオリティは normal です。

maxrun

(任意)スクリプトの最大実行時間(SSSSSSSSSS[.MMM] 形式で指定します。SSSSSSSSSS は、0 ~ 4294967295 の秒数を表す整数で、MMM は 0 ~ 999 のミリ秒数を表す整数である必要があります)。この引数が指定されない場合、デフォルトの 20 秒ランタイム制限が使用されます。

nice

(任意)ポリシー実行時間のプライオリティ設定。nice 引数が 1 に設定されている場合、ポリシーは、デフォルト プライオリティよりも低い実行時プライオリティで実行されます。デフォルトは 0 です。

結果文字列

なし

Set _cerrno

なし

event_register_routing

event routing コマンドによってトリガーされるイベントの登録を行います。これらのイベントは、ルート エントリが Routing Information Base(RIB)インフラストラクチャで変更されるときに、ルーティング イベント ディテクタによって処理され、イベントがパブリッシュされます。この Tcl コマンド拡張を使用すると、このスクリプトのルーティング ポリシーが実行されます。監視されるルートのネットワーク IP アドレスを指定する必要があります。

構文

event_register_routing [tag ?] network ? length [ge|le|ne] [type add|remove|modify|all] [protocol ?] [queue_priority normal|low|high|last] [maxrun ?] [nice {0 | 1}]

引数

tag

(任意)Tcl スクリプト内で複数のイベント文をサポートするため、Tcl コマンド拡張のトリガーとともに使用できるタグを指定する文字列。

network

ネットワーク IP アドレスを指定します。ネットワーク番号には、任意の有効な IP アドレスまたはプレフィクスを使用できます。

length

ネットワーク マスクの長さをビット単位で指定します。ビット マスクは 0 から 32 までの番号を使用できます。

ge :(任意)照会されるプレフィクスの最小の長さを指定します。 ge キーワードは、演算子の「以上」を表します。

le :(任意)照会されるプレフィクスの最大の長さを指定します。 le キーワードは、演算子の「以下」を表します。

ne :(任意)プレフィクスの長さを照会しないと指定します。 ne キーワードは、演算子の「等しくない」を表します。

ge キーワード、 le キーワード、および ne キーワードが設定されない場合、ネットワーク長の完全一致が処理されます。

type

(任意)必要なポリシーのトリガーを指定します。type オプションは、 add remove modify 、および all です。デフォルトは all です。

protocol

(任意)監視されているネットワークのプロトコルの値を指定します。

all bgp connected eigrp isis iso-igrp mobile odr ospf rip 、および static のプロトコルの 1 つを使用できます。デフォルトは all です。

queue_priority

(任意)次のような、スクリプトがキューに入れられるプライオリティ レベル。

queue_priority low:3 つのプライオリティ レベルの最も低いレベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority normal:low プライオリティよりも高く、high プライオリティよりも低いプライオリティ レベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority high:3 つのプライオリティ レベルの最も高いレベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority last:最も低いプライオリティ レベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority_last 引数が設定された状態で複数のスクリプトが登録されている場合、これらのスクリプトは、イベントのパブリッシュ順に実行されます。

(注) queue_priority 引数によって、登録されているスクリプトの実行プライオリティではなく、キューイングのプライオリティが指定されます。

この引数が指定されない場合、デフォルトのキューイング プライオリティは normal です。

maxrun

(任意)スクリプトの最大実行時間(SSSSSSSSSS[.MMM] 形式で指定します。SSSSSSSSSS は、0 ~ 4294967295 の秒数を表す整数で、MMM は 0 ~ 999 のミリ秒数を表す整数である必要があります)。この引数が指定されない場合、デフォルトの 20 秒ランタイム制限が使用されます。

nice

(任意)ポリシー実行時間のプライオリティ設定。nice 引数が 1 に設定されている場合、ポリシーは、デフォルト プライオリティよりも低い実行時プライオリティで実行されます。デフォルトは 0 です。

結果文字列

なし

Set _cerrno

なし

event_register_rpc

EEM SSH Remote Procedure Call(RPC; リモート プロシージャ コール)コマンドによってトリガーされるイベントの登録を行います。これらのイベントは、このイベントをスクリーニングする RPC イベント ディテクタによって処理されます。この Tcl コマンド拡張を使用すると、このスクリプトの RPC ポリシーが実行されます。

構文

event_register_rpc [queue_priority {normal | low | high | last}] [maxrun <sec.msec>] [nice {0 | 1}] [default <sec.msec>]

引数

queue_priority

(任意)次のような、スクリプトがキューに入れられるプライオリティ レベル。

queue_priority low:3 つのプライオリティ レベルの最も低いレベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority normal:low プライオリティよりも高く、high プライオリティよりも低いプライオリティ レベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority high:3 つのプライオリティ レベルの最も高いレベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority last:最も低いプライオリティ レベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority_last 引数が設定された状態で複数のスクリプトが登録されている場合、これらのスクリプトは、イベントのパブリッシュ順に実行されます。

(注) queue_priority 引数によって、登録されているスクリプトの実行プライオリティではなく、キューイングのプライオリティが指定されます。

この引数が指定されない場合、デフォルトのキューイング プライオリティは normal です。

maxrun

(任意)スクリプトの最大実行時間(SSSSSSSSSS[.MMM] 形式で指定します。SSSSSSSSSS は、0 ~ 4294967295 の秒数を表す整数で、MMM は 0 ~ 999 のミリ秒数を表す整数である必要があります)。この引数が指定されない場合、デフォルトの 20 秒ランタイム制限が使用されます。

nice

(任意)ポリシー実行時間のプライオリティ設定。nice 引数が 1 に設定されている場合、ポリシーは、デフォルト プライオリティよりも低い実行時プライオリティで実行されます。デフォルトは 0 です。

default

(任意)CLI イベント ディテクタがポリシーの終了を待つ時間(SSSSSSSSSS[.MMM] 形式で指定します。SSSSSSSSSS は、0 ~ 4294967295 の秒数を表す整数で、MMM は 0 ~ 999 のミリ秒数を表す整数である必要があります)。ポリシーが終了する前にデフォルトの時間の期限が切れると、デフォルト アクションが実行されます。デフォルト アクションによって、コマンドが実行されます。この引数が指定されない場合、デフォルトの時間は 30 秒に設定されます。

結果文字列

なし

Set _cerrno

なし

event_register_snmp

Simple Network Management Protocol(SNMP; 簡易ネットワーク管理プロトコル)統計イベントの登録を行います。この Tcl コマンド拡張を使用すると、SNMP オブジェクト ID(OID)によって指定されたカウンタが、定義されたしきい値に近くなったときに、ポリシーが実行されます。

構文

event_register_snmp [tag ?] oid ? get_type exact|next
entry_op gt|ge|eq|ne|lt|le entry_val ?
entry_type value|increment|rate
[exit_comb or|and]
[exit_op gt|ge|eq|ne|lt|le] [exit_val ?]
[exit_type value|increment|rate]
[exit_time ?] poll_interval ? [average_factor ?]
[queue_priority low|normal|high|last]
[maxrun ?] [nice 0|1]

引数

tag

(任意)Tcl スクリプト内で複数のイベント文をサポートするため、Tcl コマンド拡張のトリガーとともに使用できるタグを指定する文字列。

oid

(必須)SNMP ドット付き表記でのデータ エレメントの OID 番号(たとえば、1.3.6.1.2.1.2.1.0)。次のタイプの OID を使用できます。

COUNTER_TYPE

COUNTER_64_TYPE

GAUGE_TYPE

INTEGER_TYPE

OCTET_PRIM_TYPE

OPAQUE_PRIM_TYPE

TIME_TICKS_TYPE

entry_op

(必須)現在の OID データの値を開始値と比較するために使用される開始比較演算子。真の場合、イベントが発生し、終了基準を満たすまでイベント監視がディセーブルにされます。

get_type

(必須)指定された OID に適用する必要がある SNMP 取得操作のタイプ。get_type 引数が exact の場合、指定された OID の値が取得されます。get_type 引数が next の場合、指定された OID の辞書順での後続値が取得されます。

entry_val

(必須)SNMP イベントを発生させる必要があるかどうかを判断するために、現在の OID データの値を比較する必要がある値。

entry-type

entry-val 引数によって指定されたオブジェクト ID に適用される操作のタイプを指定します。

値は、entry-val 引数の実際の値として定義されます。

増分では、entry-val フィールドは増分差異として使用され、entry-val は、現在のカウンタの値と、イベントが最後に真であったとき(これが新しいイベントの場合は最初にポーリングされたサンプル)の値との間の差と、比較されます。負の値によって、減少しているカウンタの増分差異がチェックされます。

レートは、ある期間の変更の平均レートとして定義されます。期間は、average-factor の値に、poll-interval の値を乗じたものです。ポーリング間隔ごとに、現在のサンプルと前のサンプルとの間の差が取得され、絶対値として記録されます。前の average-factor 値サンプルの平均は、変更のレートとして取得されます。

exit_comb

(任意)イベント監視が再度イネーブルにされるよう、終了基準が満たされているかどうかを判断するために必要な、終了条件テストの組み合わせを示す、終了組み合わせ演算子を使用します。「and」の場合、終了値と終了時間テストの両方が、終了基準を満たすために渡されます。「or」の場合、終了値または終了時間テストのいずれかが、終了基準を満たすために渡されます。

exit_comb が「and」の場合、exit_op と exit_val(exit_time)が存在する必要があります。
exit_comb が「or」の場合、(exit_op と exit_val)または(exit_time)が存在する必要があります。

exit_op

(任意)現在の OID データの値を終了値と比較するために使用される終了比較演算子。真の場合、このイベントのイベント監視が再度イネーブルにされます。

exit_val

(任意)終了基準を満たすかどうかを判断するために、現在の OID データの値を比較する必要がある値。

exit-type

(任意)exit-val 引数によって指定されたオブジェクト ID に適用される操作のタイプを指定します。指定されない場合、値が仮定されます。

値は、exit-val 引数の実際の値として定義されます。

増分では、exit-val フィールドは増分差異として使用され、exit-val は、現在のカウンタの値と、イベントが最後に真であったとき(これが新しいイベントの場合は最初にポーリングされたサンプル)の値との間の差と、比較されます。負の値によって、減少しているカウンタの増分差異がチェックされます。

レートは、ある期間の変更の平均レートとして定義されます。期間は、average-factor の値に、poll-interval の値を乗じたものです。ポーリング間隔ごとに、現在のサンプルと前のサンプルとの間の差が取得され、絶対値として記録されます。前の average-factor 値サンプルの平均は、変更のレートとして取得されます。

exit_time

(任意)イベント監視が再度イネーブルにされるときに発生するイベントの後の、POSIX タイマー ユニットの数。SSSSSSSSSS[.MMM] 形式で指定します。SSSSSSSSSS は、0 ~ 4294967295 の秒数を表す整数である必要があります。MMM はミリ秒を表し、0 ~ 999 の整数である必要があります。

poll_interval

(必須)POSIX タイマー ユニットの連続的なポーリング間の間隔。間隔は、現在、最小で 1 秒に設定されます(SSSSSSSSSS[.MMM] 形式で指定します。SSSSSSSSSS は、0 ~ 4294967295 の秒数を表す整数で、MMM は 0 ~ 999 のミリ秒数を表す整数である必要があります)。

average-factor

(任意)レート ベースの計算に使用される期間の計算に使用される 1 から 64 の範囲の数。average-factor の値は、poll-interval の値を乗じた値で、ミリ秒単位で導き出される期間です。最少平均係数値は 1 です。

queue_priority

(任意)次のような、スクリプトがキューに入れられるプライオリティ レベル。

queue_priority low:3 つのプライオリティ レベルの最も低いレベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority normal:low プライオリティよりも高く、high プライオリティよりも低いプライオリティ レベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority high:3 つのプライオリティ レベルの最も高いレベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority last:最も低いプライオリティ レベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority_last 引数が設定された状態で複数のスクリプトが登録されている場合、これらのスクリプトは、イベントのパブリッシュ順に実行されます。

(注) queue_priority 引数によって、登録されているスクリプトの実行プライオリティではなく、キューイングのプライオリティが指定されます。

この引数が指定されない場合、デフォルトのキューイング プライオリティは normal です。

maxrun

(任意)スクリプトの最大実行時間(SSSSSSSSSS[.MMM] 形式で指定します。SSSSSSSSSS は、0 ~ 4294967295 の秒数を表す整数で、MMM は 0 ~ 999 のミリ秒数を表す整数である必要があります)。この引数が指定されない場合、デフォルトの 20 秒ランタイム制限が使用されます。

nice

(任意)ポリシー実行時間のプライオリティ設定。nice 引数が 1 に設定されている場合、ポリシーは、デフォルト プライオリティよりも低い実行時プライオリティで実行されます。デフォルトは 0 です。

結果文字列

なし

Set _cerrno

なし

event_register_snmp_notification

簡易ネットワーク管理プロトコル(SNMP)通知トラップ イベントの登録を行います。この Tcl コマンド拡張を使用すると、特定のインターフェイスまたはアドレスで、指定された SNMP オブジェクト ID(OID)で SNMP トラップが検出されるときに、ポリシーが実行されます。SNMP 通知が Tcl ポリシーを使用して動作するようにするには、 snmp-server manager CLI コマンドをイネーブルにする必要があります。

構文

event_register_snmp_notification [tag ?] oid ? oid_val ?
op {gt|ge|eq|ne|lt|le}
[maxrun ?]
[src_ip_address ?]
[dest_ip_address ?]
[queue_priority {normal|low|high|last}]
[maxrun ?]
[nice {0|1}]
[default ?]
[direction {incoming|outgoing}]
[msg_op {drop|send}]
 

引数

tag

(任意)Tcl スクリプト内で複数のイベント文をサポートするため、Tcl コマンド拡張のトリガーとともに使用できるタグを指定する文字列。

oid

(必須)SNMP ドット付き表記でのデータ エレメントの OID 番号(たとえば、1.3.6.1.2.1.2.1.0)。指定された OID がドット(.)で終わっている場合、ドットの前の OID 番号で始まっているすべての OID が、照会されます。次のタイプの OID を使用できます。

COUNTER_TYPE

COUNTER_64_TYPE

GAUGE_TYPE

INTEGER_TYPE

OCTET_PRIM_TYPE

OPAQUE_PRIM_TYPE

TIME_TICKS_TYPE

oid_val

(必須)SNMP イベントを発生させる必要があるかどうかを判断するために、現在の OID データの値を比較する必要がある OID 値。

op

(必須)現在の OID データの値を、SNMP Protocol Data Unit(PDU; プロトコル データ ユニット)の OID データ値と比較するために使用される、比較演算子。真の場合、イベントが発生します。

maxrun

(任意)スクリプトの最大実行時間(ssssssss[.mmm] 形式で指定します。ssssssss は、0 ~ 31536000 の秒数を表す整数で、mmm は 0 ~ 999 のミリ秒数を表す整数である必要があります)。この引数が指定されない場合、デフォルトの 20 秒ランタイム制限が使用されます。

src_ip_address

(任意)SNMP 通知トラップが発信される発信元 IP アドレス。デフォルトは all です。すべての IP アドレスから SNMP 通知トラップを受信するよう、設定されます。

dest_ip_address

(任意)SNMP 通知トラップが送信される宛先 IP アドレス。デフォルトは all です。すべての宛先 IP アドレスから SNMP トラップを受信するよう、設定されます。

queue_priority

(任意)次のような、スクリプトがキューに入れられるプライオリティ レベル。

queue_priority low:3 つのプライオリティ レベルの最も低いレベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority normal:low プライオリティよりも高く、high プライオリティよりも低いプライオリティ レベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority high:3 つのプライオリティ レベルの最も高いレベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority last:最も低いプライオリティ レベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority_last 引数が設定された状態で複数のスクリプトが登録されている場合、これらのスクリプトは、イベントのパブリッシュ順に実行されます。

(注) queue_priority 引数によって、登録されているスクリプトの実行プライオリティではなく、キューイングのプライオリティが指定されます。

この引数が指定されない場合、デフォルトのキューイング プライオリティは normal です。

default

(任意)SNMP 通知イベント ディテクタがポリシーの終了を待つ、秒単位での時間を指定します。time 時間 は、ssssssssss[.mmm] 形式で指定します。ssssssssss は、0 ~ 4294967295 の秒数を表す整数で、mmm は 0 ~ 999 のミリ秒数を表す整数である必要があります。

nice

(任意)ポリシー実行時間のプライオリティ設定。nice 引数が 1 に設定されている場合、ポリシーは、デフォルト プライオリティよりも低い実行時プライオリティで実行されます。デフォルトは 0 です。

direction

(任意)発着信 SNMP トラップまたは通知 PDU がフィルタリングする方向。デフォルトは incoming です。

msg_op

(任意)イベントが一度トリガーされると、SNMP PDU(廃棄または送信)で行われるアクション。デフォルトは send です。

結果文字列

なし

Set _cerrno

なし

event_register_snmp_object

簡易ネットワーク管理プロトコル(SNMP)オブジェクト イベントの登録を行います。この Tcl コマンド拡張を使用すると、特定のインターフェイスまたはアドレスで、指定された SNMP オブジェクト ID(OID)で SNMP が検出されるときに、値が置き換えられます。

構文

event_register_snmp_object oid ?
type {int|uint|counter|counter64|gauge|ipv4||oid|string}
sync {yes|no}
skip {yes|no}
[istable {yes|no}]
[default ?]
[queue_priority {normal|low|high|last}]
[maxrun ?]
[nice {0|1}]
 

引数

oid

(必須)SNMP ドット付き表記でのデータ エレメントの OID 番号(たとえば、1.3.6.1.2.1.2.1.0)。指定された OID がドット(.)で終わっている場合、ドットの前の OID 番号で始まっているすべての OID が、照会されます。次のタイプの OID を使用できます。

COUNTER_TYPE

COUNTER_64_TYPE

GAUGE_TYPE

INTEGER_TYPE

OCTET_PRIM_TYPE

OPAQUE_PRIM_TYPE

TIME_TICKS_TYPE

type

(必須)OID 値のタイプ。

sync

(必須)yes は、EEM ポリシーが通知されることを意味します。アプレット set_exit_status または Tcl 戻り値が 0 の場合、SNMP によって、要求が処理されます。戻り値が 1 の場合、SNMP によって、get 要求のポリシーで指定された値が使用され、set 要求は処理されません。no は、EEM は通知されず、SNMP によって要求が処理されることを意味します。

1 つの OID のみが、同期ポリシーに関連付けられます。ただし、複数の同期ポリシーが、同じ OID に登録できます。

skip

sync 引数が no の場合は必須で、sync 引数が yes の場合は使用できません。skip 引数が yes の場合、SNMP が要求を処理することを意味します。skip 引数が no の場合、SNMP は、オブジェクトが存在しないかのように動作することを意味します。

istable

(任意)値 no は、OID がスカラ オブジェクトであることを意味し、yes は、OID がテーブル オブジェクトであることを意味します。

default

(任意)SNMP オブジェクト イベント ディテクタがポリシーの終了を待つ時間(ssssssssss[.mmm] 形式で指定します。ssssssssss は、0 ~ 4294967295 の秒数を表す整数で、mmm は 0 ~ 999 のミリ秒数を表す整数である必要があります)。ポリシーが終了する前にデフォルトの時間の期限が切れると、デフォルト アクションが実行されます。デフォルト アクションは、通常、SNMP サブシステムによって set 要求または get 要求を処理することです。この引数が指定されない場合、デフォルトの時間は 30 秒に設定されます。

maxrun

(任意)スクリプトの最大実行時間(ssssssss[.mmm] 形式で指定します。ssssssss は、0 ~ 31536000 の秒数を表す整数で、mmm は 0 ~ 999 のミリ秒数を表す整数である必要があります)。この引数が指定されない場合、デフォルトの 20 秒ランタイム制限が使用されます。

queue_priority

(任意)次のような、スクリプトがキューに入れられるプライオリティ レベル。

queue_priority low:3 つのプライオリティ レベルの最も低いレベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority normal:low プライオリティよりも高く、high プライオリティよりも低いプライオリティ レベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority high:3 つのプライオリティ レベルの最も高いレベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority last:最も低いプライオリティ レベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority_last 引数が設定された状態で複数のスクリプトが登録されている場合、これらのスクリプトは、イベントのパブリッシュ順に実行されます。

(注) queue_priority 引数によって、登録されているスクリプトの実行プライオリティではなく、キューイングのプライオリティが指定されます。

この引数が指定されない場合、デフォルトのキューイング プライオリティは normal です。

nice

(任意)ポリシー実行時間のプライオリティ設定。nice 引数が 1 に設定されている場合、ポリシーは、デフォルト プライオリティよりも低い実行時プライオリティで実行されます。デフォルトは 0 です。

結果文字列

なし

Set _cerrno

なし

event_register_syslog

Syslog イベントの登録を行います。この Tcl コマンドを使用すると、一定の時間内に一定回数の発生後、特定パターンの Syslog メッセージが記録されるときに、ポリシーがトリガーされます。

構文

event_register_syslog [tag ?] [occurs ?] [period ?] pattern ?
[priority all|emergencies|alerts|critical|errors|warnings|notifications|
informational|debugging|0|1|2|3|4|5|6|7]
[queue_priority low|normal|high|last]
[severity_fatal] [severity_critical] [severity_major]
[severity_minor] [severity_warning] [severity_notification]
[severity_normal] [severity_debugging]
[maxrun ?] [nice 0|1]

引数

tag

(任意)Tcl スクリプト内で複数のイベント文をサポートするため、Tcl コマンド拡張のトリガーとともに使用できるタグを指定する文字列。

occurs

(任意)イベントが発生する前の発生回数。この引数が指定されない場合、イベントは 1 回目から発生します。指定される場合、0 より大きい値を指定する必要があります。

period

(任意)イベントを発生させるために取る必要がある 1 つまたは複数のイベントの間の、秒単位およびミリ秒単位の時間の間隔(SSSSSSSSSS[.MMM] 形式で指定します。SSSSSSSSSS は、0 ~ 4294967295 の秒数を表す整数で、MMM は 0 ~ 999 のミリ秒数を表す整数である必要があります)。この引数が指定されない場合、期間チェックは適用されません。

pattern

(必須)Syslog メッセージ パターン マッチの実行に使用される正規表現。この引数は、記録された Syslog メッセージを指定するためにポリシーによって使用されます。

priority

(任意)スクリーニングされるメッセージのプライオリティ。この引数が指定される場合、指定された記録プライオリティ レベルまたはそれ以下のメッセージのみがスクリーニングされます。この引数が指定されない場合、デフォルトのプライオリティは 0 です。

queue_priority

(任意)次のような、スクリプトがキューに入れられるプライオリティ レベル。

queue_priority low:3 つのプライオリティ レベルの最も低いレベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority normal:low プライオリティよりも高く、high プライオリティよりも低いプライオリティ レベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority high:3 つのプライオリティ レベルの最も高いレベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority last:最も低いプライオリティ レベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority_last 引数が設定された状態で複数のスクリプトが登録されている場合、これらのスクリプトは、イベントのパブリッシュ順に実行されます。

(注) queue_priority 引数によって、登録されているスクリプトの実行プライオリティではなく、キューイングのプライオリティが指定されます。

この引数が指定されない場合、デフォルトのキューイング プライオリティは normal です。

maxrun

(任意)スクリプトの最大実行時間(SSSSSSSSSS[.MMM] 形式で指定します。SSSSSSSSSS は、0 ~ 4294967295 の秒数を表す整数で、MMM は 0 ~ 999 のミリ秒数を表す整数である必要があります)。この引数が指定されない場合、デフォルトの 20 秒ランタイム制限が使用されます。

nice

(任意)ポリシー実行時間のプライオリティ設定。nice 引数が 1 に設定されている場合、ポリシーは、デフォルト プライオリティよりも低い実行時プライオリティで実行されます。デフォルトは 0 です。

severity_xxx

(任意)スクリーニングされるイベントの重大度。この引数が指定される場合、指定された重大度のメッセージのみがスクリーニングされます。Syslog イベントの重大度のマッピングについては、 表 15 を参照してください。

複数の条件が存在する場合、すべての条件が一致したときに、Syslog イベントが発生します。

 

表 15 Syslog イベントの重大度のマッピング

重大度のキーワード
Syslog のプライオリティ
説明

severity_fatal

LOG_EMERG (0)

システム使用不可

severity_critical

LOG_ALERT (1)

クリティカル条件で、即時対応が必要であることを示す

severity_major

LOG_CRIT (2)

メジャー条件

severity_minor

LOG_ERR (3)

マイナー条件

severity_warning

LOG_WARNING (4)

警告条件

severity_notification

LOG_NOTICE (5)

基本的な通知、情報メッセージ

severity_normal

LOG_INFO (6)

正常なイベント、正常な状態に戻ったことを伝える

severity_debugging

LOG_DEBUG (7)

デバッグ メッセージ

結果文字列

なし

Set _cerrno

なし

event_register_timer

パブリッシャとサブスクライバの両方として、タイマーを作成し、タイマー イベントの登録を行います。時間特有または時間に基づいたポリシーをトリガーする必要があるときに、この Tcl コマンド拡張を使用します。このイベント タイマーは、イベントのパブリッシャとサブスクライバの両方です。パブリッシャの部分は、名前付きタイマーがオフになるという条件を示します。サブスクライバの部分は、イベントが登録されているタイマーの名前を示します。


) CRON および絶対時間の指定は、現地時間で動作します。


構文

event_register_timer [tag ?] watchdog|countdown|absolute|cron
[name ?] [cron_entry ?]
[time ?]
[queue_priority low|normal|high|last] [maxrun ?]
[nice 0|1]

引数

tag

(任意)Tcl スクリプト内で複数のイベント文をサポートするため、Tcl コマンド拡張のトリガーとともに使用できるタグを指定する文字列。

watchdog

(必須)ウォッチドッグ タイマー。

countdown

(必須)カウントダウン タイマー。

absolute

(必須)絶対タイマー。

cron

(必須)CRON タイマー。

name

(任意)タイマーの名前。

cron_entry

(任意)CRON タイマー タイプが指定される場合に、指定する必要があります。他のいずれかのタイマー タイプが指定される場合には、指定しないでください。cron_entry は、UNIX CRON デーモンで使用される部分的な UNIX Crontab エントリ(最初の 5 つのフィールド)です。

cron_entry の指定は、5 つのフィールドが使用されるテキスト文字列で構成されます。フィールドは、空白文字で区切られます。フィールドは、CRON タイマー イベントがトリガーされるときの時刻と日付を表します。フィールドは、 表 16 で説明されています。

番号の範囲を使用できます。範囲は、ハイフンで区切られる 2 つの数字で表示されます。範囲には、2 つの数字自身も含まれます。たとえば、時刻に入力される 8-11 は、8 時、9 時、10 時、および 11 時での実行を示します。

フィールドはアスタリスク記号(*)も使用でき、これは常に「first-last」を表します。

リストを使用できます。リストは、カンマで区切られた番号のセット(または範囲)です。たとえば、「1,2,5,9」および「0-4,8-12」などになります。

手順の値は、範囲の組み合わせで使用できます。範囲に続く「/<number>」によって、範囲内での省略値を指定します。たとえば、1 時間おきにイベントのトリガーを指定する場合、「0-23/2」を hour フィールドに使用できます。アスタリスク記号後にも手順を使用でき、「2 時間ごと」と指定する場合は、「*/2」を使用します。

month フィールドと day of week フィールドには、名前も使用できます。特定の日または付きの最初の 3 文字を使用します(ケースは問題ではありません)。名前の範囲またはリストは使用できません。

タイマー イベントがトリガーされる日は、day of month と day of week の 2 つのフィールドで指定できます。両方のフィールドが制限される(つまり * ではない)場合、いずれかのフィールドが現在の時刻と一致すると、イベントがトリガーされます。たとえば、「30 4 1,15 * 5」の場合、各月の 1 日と 15 日に加え、金曜日ごとに、午前 4:30 に、イベントがトリガーされます。

最初の 5 つのフィールドの代わりに、7 つの特殊文字列の 1 つが表示されることがあります。これらの 7 つの特殊文字列は、 表 17 で説明します。

例 1:「0 0 1,15 * 1」では、各月の 1 日と 15 日、および月曜日ごとに、真夜中の 0 時に、イベントがトリガーされます。1 つのフィールドによってのみ日を指定する場合、他のフィールドは * に設定する必要があります。「0 0 * * 1」では、月曜日にのみ、真夜中の 0 時に、イベントがトリガーされます。

例 2:「15 16 1 * *」では、各月の 1 日の午後 4:15 に、イベントがトリガーされます。

例 3:「0 12 * * 1-5」では、各週の月曜日から金曜日まで、正午に、イベントがトリガーされます。

例 4:「@weekly」では、1 週間に一度、日曜日の真夜中の 0 時に、イベントがトリガーされます。

time

(任意)CRON 以外のタイマー タイプが指定される場合に、指定する必要があります。CRON タイマー タイプが指定される場合には、指定しないでください。ウォッチドッグ タイマーとカウントダウン タイマーでは、タイマーの期限が切れるまでの秒およびミリ秒の単位での数です。絶対タイマーでは、期限切れ時刻のカレンダー時間です。時間は、SSSSSSSSSS[.MMM] 形式で指定します。SSSSSSSSSS は、0 ~ 4294967295 の秒数を表す整数で、MMM は 0 ~ 999 のミリ秒数を表す整数である必要があります。期限の絶対日付は、1970 年 1 月 1 日以降の秒およびミリ秒の単位での数です。指定された日付がすでに過ぎた場合、タイマーの期限はただちに切れます。

queue_priority

(任意)次のような、スクリプトがキューに入れられるプライオリティ レベル。

queue_priority low:3 つのプライオリティ レベルの最も低いレベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority normal:low プライオリティよりも高く、high プライオリティよりも低いプライオリティ レベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority high:3 つのプライオリティ レベルの最も高いレベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority last:最も低いプライオリティ レベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority_last 引数が設定された状態で複数のスクリプトが登録されている場合、これらのスクリプトは、イベントのパブリッシュ順に実行されます。

(注) queue_priority 引数によって、登録されているスクリプトの実行プライオリティではなく、キューイングのプライオリティが指定されます。

この引数が指定されない場合、デフォルトのキューイング プライオリティは normal です。

maxrun

(任意)スクリプトの最大実行時間(SSSSSSSSSS[.MMM] 形式で指定します。SSSSSSSSSS は、0 ~ 4294967295 の秒数を表す整数で、MMM は 0 ~ 999 のミリ秒数を表す整数である必要があります)。この引数が指定されない場合、デフォルトの 20 秒ランタイム制限が使用されます。

nice

(任意)ポリシー実行時間のプライオリティ設定。nice 引数が 1 に設定されている場合、ポリシーは、デフォルト プライオリティよりも低い実行時プライオリティで実行されます。デフォルトは 0 です。

 

表 16 CRON イベントがトリガーされるときの時刻と日付

フィールド
使用可能な値

minute

0 ~ 59

hour

0 ~ 23

day of month

1 ~ 31

month

1 ~ 12(または名前、下記を参照)

day of week

0 ~ 7(0 または 7 が日曜日、または名前。 表 17 を参照)

 

表 17 cron_entry の特殊文字列

文字列
意味

@yearly

1 年に 1 回トリガーする、「0 0 1 1 *」。

@annually

@yearly と同じ。

@monthly

1 ヵ月に 1 回トリガーする、「0 0 1 * *」。

@weekly

1 週間に 1 回トリガーする、「0 0 * * 0」。

@daily

1 日に 1 回トリガーする、「0 0 * * *」。

@midnight

@daily と同じ。

@hourly

1 時間に 1 回トリガーする、「0 * * * *」。

結果文字列

なし

Set _cerrno

なし

参考資料

event_register_timer_subscriber

event_register_timer_subscriber

サブスクライバとしてタイマー イベントの登録を行います。この Tcl コマンド拡張を使用すると、サブスクライバとして、登録するイベント タイマーの名前が指定されます。イベント タイマーは、別のポリシーまたは別のプロセスに依存して、カウンタが実際に操作されます。たとえば、policyB はタイマー加入者ポリシーとして動作しますが、policyA(タイマー ポリシーは不要ですが)では、register_counter、timer_arm、または timer_cancel の各 Tcl コマンド拡張を使用して、policyB で参照されているカウンタが操作されます。

構文

event_register_timer_subscriber watchdog|countdown|absolute|cron
name ? [queue_priority low|normal|high|last] [maxrun ?] [nice 0|1]

引数

watchdog

(必須)ウォッチドッグ タイマー。

countdown

(必須)カウントダウン タイマー。

absolute

(必須)絶対タイマー。

cron

(必須)CRON タイマー。

name

(必須)タイマーの名前。

queue_priority

(任意)次のような、スクリプトがキューに入れられるプライオリティ レベル。

queue_priority low:3 つのプライオリティ レベルの最も低いレベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority normal:low プライオリティよりも高く、high プライオリティよりも低いプライオリティ レベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority high:3 つのプライオリティ レベルの最も高いレベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority last:最も低いプライオリティ レベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority_last 引数が設定された状態で複数のスクリプトが登録されている場合、これらのスクリプトは、イベントのパブリッシュ順に実行されます。

(注) queue_priority 引数によって、登録されているスクリプトの実行プライオリティではなく、キューイングのプライオリティが指定されます。

この引数が指定されない場合、デフォルトのキューイング プライオリティは normal です。

maxrun

(任意)スクリプトの最大実行時間(SSSSSSSSSS[.MMM] 形式で指定します。SSSSSSSSSS は、0 ~ 4294967295 の秒数を表す整数で、MMM は 0 ~ 999 のミリ秒数を表す整数である必要があります)。この引数が指定されない場合、デフォルトの 20 秒ランタイム制限が使用されます。

nice

(任意)ポリシー実行時間のプライオリティ設定。nice 引数が 1 に設定されている場合、ポリシーは、デフォルト プライオリティよりも低い実行時プライオリティで実行されます。デフォルトは 0 です。


) タイマー イベントまたはカウンタ イベントの登録を行う EEM ポリシーは、パブリッシャとサブスクライバの両方として動作できます。


結果文字列

なし

Set _cerrno

なし

参考資料

event_register_timer

event_register_track

Cisco IOS Object Tracking サブシステムからのレポート イベントの登録を行います。この Tcl コマンド拡張を使用すると、指定されたオブジェクト番号の Cisco IOS Object Tracking サブシステム レポートに基づいて、ポリシーがトリガーされます。

構文

event_register_track ? [tag ?] [state up|down|any] [queue_priority low|normal|high|last] [maxrun ?]
[nice 0|1]

引数

?(番号を表す)

(必須)1 から 500 の範囲でトラックされるオブジェクト番号。

tag

(任意)Tcl スクリプト内で複数のイベント文をサポートするため、Tcl コマンド拡張のトリガーとともに使用できるタグを指定する文字列。

state

(任意)トラックされるオブジェクトの状態遷移によってイベントが発生するよう、指定します。 up が指定される場合、トラックされるオブジェクトが down 状態から up 状態に遷移するときに、イベントが発生します。 down が指定される場合、トラックされるオブジェクトが up 状態から down 状態に遷移するときに、イベントが発生します。 any が指定される場合、トラックされるオブジェクトが任意の状態へ、または任意の状態から遷移するときに、イベントが発生します。

queue_priority

(任意)次のような、スクリプトがキューに入れられるプライオリティ レベル。

queue_priority low:3 つのプライオリティ レベルの最も低いレベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority normal:low プライオリティよりも高く、high プライオリティよりも低いプライオリティ レベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority high:3 つのプライオリティ レベルの最も高いレベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority last:最も低いプライオリティ レベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority_last 引数が設定された状態で複数のスクリプトが登録されている場合、これらのスクリプトは、イベントのパブリッシュ順に実行されます。

(注) queue_priority 引数によって、登録されているスクリプトの実行プライオリティではなく、キューイングのプライオリティが指定されます。

この引数が指定されない場合、デフォルトのキューイング プライオリティは normal です。

maxrun

(任意)スクリプトの最大実行時間(SSSSSSSSSS[.MMM] 形式で指定します。SSSSSSSSSS は、0 ~ 4294967295 の秒数を表す整数で、MMM は 0 ~ 999 のミリ秒数を表す整数である必要があります)。この引数が指定されない場合、デフォルトの 20 秒ランタイム制限が使用されます。

nice

(任意)ポリシー実行時間のプライオリティ設定。nice 引数が 1 に設定されている場合、ポリシーは、デフォルト プライオリティよりも低い実行時プライオリティで実行されます。デフォルトは 0 です。

任意の引数が指定されない場合、イベントは、引数のすべての可能な値に対して照会されます。

結果文字列

なし

Set _cerrno

なし

event_register_wdsysmon

Watchdog System Monitor イベントの登録を行います。この Tcl コマンド拡張を使用すると、いくつかのサブイベントまたは条件の組み合わせである複合イベントの登録が行われます。たとえば、特定処理の CPU の使用率が 80% を超え、 かつ、 処理に使用されるメモリが、その初期割り当ての 50% よりも大きいときの、条件の組み合わせの登録を行います。この Tcl コマンド拡張は、ソフトウェア モジュール方式イメージでのみサポートされます。

構文

event_register_wdsysmon [tag ?] [timewin ?]
[sub12_op and|or|andnot]
[sub23_op and|or|andnot]
[sub34_op and|or|andnot]
[sub1 subevent-description]
[sub2 subevent-description]
[sub3 subevent-description]
[sub4 subevent-description] [node ?]
[queue_priority low|normal|high|last]
[maxrun ?] [nice 0|1]

 

各引数は、位置に依存しません。


) 演算子の定義は、and(論理 And 操作)or(論理 Or 操作)、andnot(論理 And Not 操作)です。たとえば、「sub12_op and」では、サブイベント 1 およびサブイベント 2 が真であるときにイベントが発生するよう定義されます。「sub23_op or」では、sub12_op で定義された条件が真で、サブイベント 3 が真であるときに、イベントが発生するよう定義されます。ロジックは、次のようにダイアグラム化できます。

(((sub1 sub12_op sub2) sub23_op sub3) sub34_op sub4) が真の場合、イベントが発生


引数

tag

(任意)Tcl スクリプト内で複数のイベント文をサポートするため、Tcl コマンド拡張のトリガーとともに使用できるタグを指定する文字列。

timewin

(任意)イベントが生成されるようにするために、すべてのサブイベントが発生する必要がある時間ウィンドウ(SSSSSSSSSS[.MMM] 形式で指定します。SSSSSSSSSS は、0 ~ 4294967295 の秒数を表す整数で、MMM は 0 ~ 999 のミリ秒数を表す整数である必要があります)。

sub12_op

(任意)サブイベント 1 とサブイベント 2 とを比較する組み合わせ演算子。

sub23_op

(任意)サブイベント 1、2 とサブイベント 3 とを比較する組み合わせ演算子。

sub34_op

(任意)サブイベント 1、2、サブイベント 3、サブイベント 4 とを比較する組み合わせ演算子。

sub1

(任意)サブイベント 1 の指定を意味します。

subevent-description

(任意)サブイベントの構文。

sub2

(任意)サブイベント 2 の指定を意味します。

sub3

(任意)サブイベント 3 の指定を意味します。

sub4

(任意)サブイベント 4 の指定を意味します。

node

(任意)デッドロック条件が監視されるノード名は、「node」という語句と、それに続く、次の形式を使用してスラッシュ文字で区切られた 2 つのフィールドで構成される、文字列です。

node<slot-number>/<cpu-number>

slot-number は、ハードウェア スロット番号です。cpu-number は、ハードウェア CPU 番号です。たとえば、スロット 0 にある Cisco Catalyst 6500 シリーズ スイッチのスーパーバイザ カードの SP CPU は、node0/0 と指定されます。たとえば、スロット 0 にある Cisco Catalyst 6500 シリーズ スイッチのスーパーバイザ カードの RP CPU は、node0/1 と指定されます。node 引数が指定されない場合、デフォルトのノード指定は、登録が行われているローカル ノードです。

queue_priority

(任意)次のような、スクリプトがキューに入れられるプライオリティ レベル。

queue_priority low:3 つのプライオリティ レベルの最も低いレベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority normal:low プライオリティよりも高く、high プライオリティよりも低いプライオリティ レベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority high:3 つのプライオリティ レベルの最も高いレベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority last:最も低いプライオリティ レベルで、スクリプトがキューに入れられるよう、指定します。

queue_priority_last 引数が設定された状態で複数のスクリプトが登録されている場合、これらのスクリプトは、イベントのパブリッシュ順に実行されます。

(注) queue_priority 引数によって、登録されているスクリプトの実行プライオリティではなく、キューイングのプライオリティが指定されます。

この引数が指定されない場合、デフォルトのキューイング プライオリティは normal です。

maxrun

(任意)スクリプトの最大実行時間(SSSSSSSSSS[.MMM] 形式で指定します。SSSSSSSSSS は、0 ~ 4294967295 の秒数を表す整数で、MMM は 0 ~ 999 のミリ秒数を表す整数である必要があります)。この引数が指定されない場合、デフォルトの 20 秒ランタイム制限が使用されます。

nice

(任意)ポリシー実行時間のプライオリティ設定。nice 引数が 1 に設定されている場合、ポリシーは、デフォルト プライオリティよりも低い実行時プライオリティで実行されます。デフォルトは 0 です。

サブイベント

subevent description の構文は、7 つのケースのうちの 1 つを使用できます。

subevent descriptions の引数では、number 引数の値に次の制約事項が適用されます。

dispatch_mgr では、val は、0 ~ 4294967295 の範囲の整数である必要があります。

cpu_proc および cpu_tot では、val は、0 ~ 100 の整数である必要があります。

mem_proc、mem_tot_avail、および mem_tot_used では、is_percent が偽の場合、val は、0 ~ 4294967295 の範囲の整数である必要があります。

1. deadlock procname ?

引数

procname

(必須)デッドロック条件を監視するプロセス名を指定する正規表現。指定された場合、サブイベントによって、時間ウィンドウは無視されます。

2. dispatch_mgr [procname ?] [op gt|ge|eq|ne|lt|le] [val ?] [period ?]

引数

procname

(任意)dispatch_manager ステータスを監視するプロセス名を指定する正規表現。

op

(任意)収集されたイベント数を指定された値と比較するために使用される比較演算子。真の場合、このイベントが発生します。

val

(任意)発生したイベント数の値を比較する必要があります。

period

(任意)発生したイベント数の時間(SSSSSSSSSS[.MMM] 形式で指定します。SSSSSSSSSS は、0 ~ 4294967295 の秒数を表す整数で、MMM は 0 ~ 999 のミリ秒数を表す整数である必要があります)。この引数が指定されない場合は、最新のサンプルが使用されます。

3. cpu_proc [procname ?] [op gt|ge|eq|ne|lt|le] [val ?] [period ?]

引数

procname

(任意)CPU の使用条件を監視するプロセス名を指定する正規表現。

op

(任意)収集された CPU 使用率サンプル パーセンテージを、指定されたパーセント値と比較するために使用される、比較演算子。真の場合、このイベントが発生します。

val

(任意)サンプル期間の平均 CPU 使用率のパーセント値を比較する必要があります。

period

(任意)サンプルの収集の平均の時間(SSSSSSSSSS[.MMM] 形式で指定します。SSSSSSSSSS は、0 ~ 4294967295 の秒数を表す整数で、MMM は 0 ~ 999 のミリ秒数を表す整数である必要があります)。この引数が指定されない場合は、最新のサンプルが使用されます。

4. cpu_tot [op gt|ge|eq|ne|lt|le] [val ?] [period ?]

引数

op

(任意)収集された合計システム CPU 使用率サンプル パーセンテージを、指定されたパーセント値と比較するために使用される、比較演算子。真の場合、このイベントが発生します。

val

(任意)サンプル期間の平均 CPU 使用率のパーセント値を比較する必要があります。

period

(任意)サンプルの収集の平均の時間(SSSSSSSSSS[.MMM] 形式で指定します。SSSSSSSSSS は、0 ~ 4294967295 の秒数を表す整数で、MMM は 0 ~ 999 のミリ秒数を表す整数である必要があります)。この引数が指定されない場合は、最新のサンプルが使用されます。

5. mem_proc [procname ?] [op gt|ge|eq|ne|lt|le] [val ?] [is_percent TRUE|FALSE] [period ?]

引数

procname

(任意)メモリ使用状況を監視するプロセス名を指定する正規表現。

op

(任意)収集された使用メモリを、指定された値と比較するために使用される比較演算子。真の場合、このイベントが発生します。

val

(任意)キロバイト単位で指定される、パーセンテージまたは絶対値。パーセンテージは、指定された時間内で最も古いサンプルと、最新のサンプルとの違いを表します。メモリ使用量が時間内で 150 KB から 300 KB に増えた場合、増加パーセンテージは 100 です。これは、測定された値を比較する必要がある値です。

is_percent

(任意)真の場合、パーセンテージの値が収集され、比較されます。これ以外の場合、絶対値が収集され、比較されます。

period

(任意)is_percent が真に設定される場合、時間のパーセンテージが計算されます。これ以外の場合、収集されるサンプルの平均が計算される時間(SSSSSSSSSS[.MMM] 形式で指定します。SSSSSSSSSS は、0 ~ 4294967295 の秒数を表す整数で、MMM は 0 ~ 999 のミリ秒数を表す整数である必要があります)。この引数が指定されない場合は、最新のサンプルが使用されます。

6. mem_tot_avail [op gt|ge|eq|ne|lt|le] [val ?] [is_percent TRUE|FALSE] [period ?]

引数

op

(任意)使用可能な収集されたメモリを指定された値と比較するために使用される比較演算子。真の場合、このイベントが発生します。

val

(任意)キロバイト単位で指定される、パーセンテージまたは絶対値。パーセンテージは、指定された時間内で最も古いサンプルと、最新のサンプルとの違いを表します。使用可能なメモリ使用量が時間内で 300 KB から 150 KB に減った場合、減少パーセンテージは 50 です。これは、測定された値を比較する必要がある値です。

is_percent

(任意)真の場合、パーセンテージの値が収集され、比較されます。これ以外の場合、絶対値が収集され、比較されます。

period

(任意)is_percent が真に設定される場合、時間のパーセンテージが計算されます。これ以外の場合、収集されるサンプルの平均が計算される時間(SSSSSSSSSS[.MMM] 形式で指定します。SSSSSSSSSS は、0 ~ 4294967295 の秒数を表す整数で、MMM は 0 ~ 999 のミリ秒数を表す整数である必要があります)。この引数が指定されない場合は、最新のサンプルが使用されます。

7. mem_tot_used [op gt|ge|eq|ne|lt|le] [val ?] [is_percent TRUE|FALSE] [period ?]

引数

op

(任意)収集された使用メモリを、指定された値と比較するために使用される比較演算子。真の場合、このイベントが発生します。

val

(任意)キロバイト単位で指定される、パーセンテージまたは絶対値。パーセンテージは、指定された時間内で最も古いサンプルと、最新のサンプルとの違いを表します。メモリ使用量が時間内で 150 KB から 300 KB に増えた場合、増加パーセンテージは 100 です。これは、測定された値を比較する必要がある値です。

is_percent

(任意)真の場合、パーセンテージの値が収集され、比較されます。これ以外の場合、絶対値が収集され、比較されます。

period

(任意)is_percent が真に設定される場合、時間のパーセンテージが計算されます。これ以外の場合、収集されるサンプルの平均が計算される時間(SSSSSSSSSS[.MMM] 形式で指定します。SSSSSSSSSS は、0 ~ 4294967295 の秒数を表す整数で、MMM は 0 ~ 999 のミリ秒数を表す整数である必要があります)。この引数が指定されない場合は、最新のサンプルが使用されます。

(注) is_percent が真に設定されている場合、この引数は必須です。これ以外の場合、この引数は任意です。

結果文字列

なし

Set _cerrno

なし


) サブイベントの説明内部では、各引数は、位置に依存しません。


EEM イベント情報の Tcl コマンド拡張

「event_reqinfo」

event_reqinfo

現在のポリシーを実行させる原因のイベントについての情報を問い合わせます。

構文

event_reqinfo

引数

なし

結果文字列

ポリシーが正常に実行される場合、ポリシーをトリガーするイベントの特性が戻されます。次の項では、各イベント ディテクタで戻される特性を示します。

EEM_EVENT_APPLICATION について

"event_id %u event_type %u event_type_string {%s} event_pub_sec %u event_pub_msec %u"
"sub_system 0x%x type %u data1 {%s} data2 {%s} data3 {%s} data4 {%s}"

 

イベント タイプ
説明

event_id

パブリッシュされた該当イベントの ID を示す一意の番号。同一のイベントで複数のポリシーを実行可能であり、その場合、各ポリシーは同一の event_id を保持します。

event_type

イベントのタイプ。

event_type_string

このイベント タイプのイベントの名前を表す ASCII 文字列。

event_pub_sec
event_pub_msec

イベントが Embedded Event Manager(EEM)にパブリッシュされたときの、秒単位およびミリ秒単位の時間。

sub_system

アプリケーション イベントをパブリッシュした EEM ポリシーに割り当てられる番号。他のすべての番号は Cisco での使用のために予約されているため、番号は 798 に設定されます。

type

指定されたコンポーネント内のイベント サブタイプ。

data1
data2
data3
data4

イベントがパブリッシュされるときに、アプリケーション固有のイベントに渡される、引数データ。データは、文字テキスト、環境変数、または、この 2 つの組み合わせです。

EEM_EVENT_CLI について

"event_id %u event_type %u event_type_string {%s} event_pub_sec %u event_pub_msec %u event_severity %u msg {%s} msg_count %d line %u key %u tty %u error_code %u"

 

イベント タイプ
説明

event_id

パブリッシュされた該当イベントの ID を示す一意の番号。同一のイベントで複数のポリシーを実行可能であり、その場合、各ポリシーは同一の event_id を保持します。

event_type

イベントのタイプ。

event_type_string

このイベント タイプのイベントの名前を表す ASCII 文字列。

event_pub_sec
event_pub_msec

EEM に対してイベントがパブリッシュされた、秒単位およびミリ秒単位の時間。

event_severity

イベントの重大度。

msg

CLI プロンプトで入力されるテキスト。

msg_count

イベントがトリガーされる前にパターン マッチされた回数。

line

一致したキーが入力されたポイントまで、パーサーによって拡張できたテキスト。

key

Enter キー、疑問符、または Tab キー。

tty

ユーザがコマンドを実行する行番号に対応します。

error_code

CLI のエラー コード。

0:パーサーからキーが入力されたポイントまで、エラーはありません。

1:キーが入力されたポイントまで、コマンドはあいまいです。

4:キーが入力されたポイントまで、未知のコマンドです。

EEM_EVENT_COUNTER について

"event_id %u event_type %u event_type_string {%s} %u event_pub_sec %u event_pub_msec %u"
"name {%s}"

 

イベント タイプ
説明

event_id

パブリッシュされた該当イベントの ID を示す一意の番号。同一のイベントで複数のポリシーを実行可能であり、その場合、各ポリシーは同一の event_id を保持します。

event_type

イベントのタイプ。

event_type_string

このイベント タイプのイベントの名前を表す ASCII 文字列。

event_pub_sec
event_pub_msec

EEM に対してイベントがパブリッシュされた、秒単位およびミリ秒単位の時間。

name

カウンタ名。

EEM_EVENT_GOLD について

"event_id %u event_type %u event_type_string {%s} %u card %u sub_card %u"
"event_severity {%s} event_pub_sec %u event_pub_msec %u overall_result %u"
"new_failure {%s} action_notify {%s} tt %u tc %u bl %u ci %u pc %u cn {%s}"
"sn {%s} tn# {%s} ta# %s ec# {%s} rc# %u lf# {%s} tf# %u cf# %u tr# {%s}"
"tr#p# {%s} tr#d# {%s}"

 

イベント タイプ
説明

action_notify

TRUE または FALSE の、GOLD イベントでのアクション通知情報。

bl

起動診断レベル、次のいずれかの値である。

0:完全診断

1:最小診断

2:バイパス診断

card

GOLD イベントのカード情報。

cf testnum

連続的な障害。 testnum はテスト番号。たとえば、 cf3 は、テスト 3 の連続的な障害の EEM 組み込み環境変数です。

ci

カード インデックス。

cn

カードの名前。

ec testnum

テスト エラー コード。 testnum はテスト番号。たとえば、 ec3 は、テスト 3 のエラー コードの EEM 組み込み環境変数です。

event_id

パブリッシュされた該当イベントの ID を示す一意の番号。同一のイベントで複数のポリシーを実行可能であり、その場合、各ポリシーは同一の event_id を保持します。

event_pub_msec
event_pub_sec

イベントが EEM にパブリッシュされたときの、ミリ秒単位および秒単位の時間。

event_severity

GOLD イベントの重大度で、次のいずれかの値を指定できます。

normal

minor

major

event_type

イベントのタイプ。

event_type_string

このイベント タイプのイベントの名前を表す ASCII 文字列。

lf testnum

最終障害時間。 testnum はテスト番号。たとえば、 lf3 は、テスト 3 の最終障害時間の EEM 組み込み環境変数です。

タイムスタンプの形式は mmm dd yyyy hh : mm : ss です。例:Mar 11 1960 08:47:00。

new_failure

GOLD イベント フラグの新しいテスト障害情報(False または True)。

overall_result

総合診断結果、次のいずれかの値である。

0:OK

3:マイナー エラー

4:メジャー エラー

14:結果不明

pc

ポート数。

rc testnum

テスト総実行回数。 testnum はテスト番号。たとえば、 rc3 は、テスト 3 の総実行回数の EEM 組み込み変数です。

sn

カード シリアル番号。

sub_card

GOLD 障害イベントが検出されたサブカード。

ta testnum

テスト アトリビュート。 testnum はテスト番号。たとえば、 ta3 は、テスト 3 のアトリビュートの EEM 組み込み環境変数です。

tc

テスト数。

tf testnum

合計障害回数。 testnum はテスト番号。たとえば、 tf3 は、テスト 3 の合計障害回数の EEM 組み込み変数です。

tn testnum

テストの名前。 testnum はテスト番号。たとえば、 tn3 は、テスト 3 の名前の EEM 組み込み環境変数です。

tr testnum

テストの結果。 testnum はテスト番号。たとえば、 tr6 は、テスト 6 の EEM 組み込み環境変数です。テスト 6 は、ポートごとのテストではなく、デバイスごとのテストでもありません。

テスト結果は、次の値のうちのいずれかです。

P:診断結果 Pass

F:診断結果 Fail

U:診断結果 Unknown

tr testnum d devnum

デバイスごとのテスト結果。 testnum はテスト番号で、 devnum はデバイス番号です。たとえば、 tr3d20 は、テスト 3、デバイス 20 のテスト結果の EEM 組み込み環境変数です。

テスト結果は、次の値のうちのいずれかです。

P:診断結果 Pass

F:診断結果 Fail

U:診断結果 Unknown

tr testnum p portnum

ポートごとのテスト結果。 testnum はテスト番号で、 portnum はデバイス番号です。たとえば、 tr5p20 は、テスト 3、ポート 20 のテスト結果の EEM 組み込み環境変数です。

テスト結果は、次の値のうちのいずれかです。

P:診断結果 Pass

F:診断結果 Fail

U:診断結果 Unknown

tt

テストのタイプ。次のうちのいずれかです。

1:起動診断

2:オンデマンド診断

3:スケジュール診断

4:モニタリング診断

EEM_EVENT_INTERFACE について

"event_id %u event_type %u event_type_string {%s} %u event_pub_sec %u event_pub_msec %u"
"event_severity {%s} name {%s} parameter {%s} value %d"

 

イベント タイプ
説明

event_id

パブリッシュされた該当イベントの ID を示す一意の番号。同一のイベントで複数のポリシーを実行可能であり、その場合、各ポリシーは同一の event_id を保持します。

event_type

イベントのタイプ。

event_type_string

このイベント タイプのイベントの名前を表す ASCII 文字列。

event_pub_sec
event_pub_msec

EEM に対してイベントがパブリッシュされた、秒単位およびミリ秒単位の時間。

event_severity

インターフェイス イベントの重大度で、次のいずれかの値を指定できます。

normal

minor

major

name

インターフェイス名。

parameter

パラメータの名前。

value

指定された entry_val_is_increment によって、トリガーされた最後のイベントに対する増加または減少の差異、または、監視されているパラメータの絶対値。

EEM_EVENT_IOSWDSYSMON について

"event_id %u event_type %u event_type_string {%s} %u event_pub_sec %u event_pub_msec %u"
"num_subs %u"

 

イベント タイプ
説明

event_id

パブリッシュされた該当イベントの ID を示す一意の番号。同一のイベントで複数のポリシーを実行可能であり、その場合、各ポリシーは同一の event_id を保持します。

event_type

イベントのタイプ。

event_type_string

このイベント タイプのイベントの名前を表す ASCII 文字列。

event_pub_sec
event_pub_msec

EEM に対してイベントがパブリッシュされた、秒単位およびミリ秒単位の時間。

num_subs

サブイベントの番号。

サブイベント情報文字列は、次のような、CPU_UTIL サブイベント用です。

"{type %s procname {%s} pid %u taskname {%s} taskid %u value %u sec %ld msec %ld}"

 

サブイベント タイプ
説明

type

サブイベントのタイプ。

procname

このサブイベントの POSIX プロセス名。

pid

このサブイベントの POSIX プロセス ID。

taskname

このサブイベントの Cisco IOS タスク名。

taskid

このサブイベントの Cisco IOS タスク ID。

value

測定された間隔での、実際の平均 CPU 使用率。

sec ,
msec

この測定間隔の経過時間。

サブイベント情報文字列は、次のような、MEM_UTIL サブイベント用です。

"{type %s procname {%s} pid %u taskname {%s} taskid %u is_percent %s value %u diff %d"
"sec %ld msec %ld}"

 

サブイベント タイプ
説明

type

サブイベントのタイプ。

procname

このサブイベントの POSIX プロセス名。

pid

このサブイベントの POSIX プロセス ID。

taskname

このサブイベントの Cisco IOS タスク名。

taskid

このサブイベントの Cisco IOS タスク ID。

is_percent

値がパーセント値かどうかによって、TRUE または FALSE。

value

この測定された間隔の、KB 単位でのメモリ使用量の合計、または、実際のメモリ使用率の平均。

diff

測定された間隔で最も古いサンプルと、最新のサンプルとの、パーセンテージでの違い。負の値は、減少を表します。

sec ,
msec

この測定間隔の経過時間。

EEM_Event_IPSLA について

"event_ID %u event_type %u event_pub_sec %u event_pub_msec %u event_severity %u"
"group_name %u operation_id %u condition %u reaction_type %u dest_ip_addr %u" "threshold_rising %u threshold_falling%u measured_threshold_value %u"
"threshold_count1 %u threshold count2 %u"

 

イベント タイプ

説明

event_id

パブリッシュされた該当イベントの ID を示す一意の番号。同一のイベントで複数のポリシーを実行可能であり、その場合、各ポリシーは同一の event_id を保持します。

event_type

フローの作成、アップデート、および削除を監視するイベントのタイプ。

event_type_string

このイベント タイプのイベントの名前を表す ASCII 文字列。

event_pub_sec
event_pub_msec

EEM に対してイベントがパブリッシュされた、秒単位およびミリ秒単位の時間。

event_severity

イベントの重大度。

group_name

IPSLA グループの名前。

operation_id

IPSLA 動作 ID。

condition

IPSLA の条件で、次の 1 つを使用できます。

cleared

occurred

reaction_type

IPSLA 応答タイプ。

dest_ip_address

IPSLA 宛先 IP アドレス。

threshold rising

IPSLA で設定されている上昇しきい値。

threshold falling

IPSLA で設定されている下限しきい値。

measured_threshold_value

IPSLA 動作の測定されたしきい値。

threshold_count1

しきい値 type1 の引数に対応します。

threshold_count2

しきい値 type2 の引数に対応します。

EEM_EVENT_NF について

"event_ID %u event_type %u event_type_string {%s} event_pub_sec %u event_pub_msec %u event_severity %u monitor_name %u event1-event4_field %u event1-event4_value

 

イベント タイプ

説明

event_id

パブリッシュされた該当イベントの ID を示す一意の番号。同一のイベントで複数のポリシーを実行可能であり、その場合、各ポリシーは同一の event_id を保持します。

event_type

フローの作成、アップデート、および削除を監視するイベントのタイプ。

event_type_string

このイベント タイプのイベントの名前を表す ASCII 文字列。

event_pub_sec
event_pub_msec

EEM に対してイベントがパブリッシュされた、秒単位およびミリ秒単位の時間。

event_severity

NetFlow イベントの重大度。

montior_name

NetFlow モニタの名前。

event1-event4_field

監視するイベントとそのアトリビュートを指定します。有効な値は、 event1 event2 event3 、および event4 です。

event1-event4_value

監視するイベント値とそのアトリビュートを指定します。有効な値は、 event1 event2 event3 、および event4 です。

EEM_EVENT_NONE について

"event_id %u event_type %u event_type_string {%s} event_pub_sec %u event_pub_msec %u
event_severity %u arg %u"

 

イベント タイプ

説明

event_id

パブリッシュされた該当イベントの ID を示す一意の番号。同一のイベントで複数のポリシーを実行可能であり、その場合、各ポリシーは同一の event_id を保持します。

event_type

イベントのタイプ。

event_type_string

このイベント タイプのイベントの名前を表す ASCII 文字列。

event_pub_sec
event_pub_msec

EEM に対してイベントがパブリッシュされた、秒単位およびミリ秒単位の時間。

event_severity

イベントの重大度。

argc

arg1

arg2

arg3

arg4

arg6

arg7

arg8

arg9

arg10

arg11

arg12

arg13

arg14

arg15

Extensible Markup Language(XML)Simple Object Access Protocol(SOAP)コマンドからスクリプトに渡されるパラメータ。

EEM_EVENT_OIR について

"event_id %u event_type %u event_type_string {%s} event_pub_sec %u event_pub_msec %u"
"slot %u event %s"

 

イベント タイプ
説明

event_id

パブリッシュされた該当イベントの ID を示す一意の番号。同一のイベントで複数のポリシーを実行可能であり、その場合、各ポリシーは同一のイベント ID を保持します。

event_type

イベントのタイプ。

event_type_string

このイベント タイプのイベントの名前を表す ASCII 文字列。

event_pub_sec
event_pub_msec

EEM に対してイベントがパブリッシュされた、秒単位およびミリ秒単位の時間。

slot

影響が及ぼされるカードのスロット番号。

event

OIR の削除イベントまたは OIR の挿入イベントを表す、removed または online の文字列を示します。

EEM_EVENT_PROCESS について(ソフトウェアモジュール方式のみ)

"event_id %u event_type %u event_type_string {%s} event_pub_sec %u event_pub_msec %u"
"sub_system 0x%x instance %u process_name {%s} path {%s} exit_status 0x%x"
"respawn_count %u last_respawn_sec %ld last_respawn_msec %ld fail_count %u"
"dump_count %u node_name {%s}"

 

イベント タイプ
説明

event_id

パブリッシュされた該当イベントの ID を示す一意の番号。同一のイベントで複数のポリシーを実行可能であり、その場合、各ポリシーは同一の event_id を保持します。

event_type

イベントのタイプ。

event_type_string

このイベント タイプのイベントの名前を表す ASCII 文字列。

event_pub_sec
event_pub_msec

EEM に対してイベントがパブリッシュされた、秒単位およびミリ秒単位の時間。

sub_system

アプリケーション固有のイベントをパブリッシュした EEM ポリシーに割り当てられる番号。他のすべての番号は Cisco での使用のために予約されているため、番号は 798 に設定されます。

instance

プロセス インスタンス ID。

process_name

プロセス名。

path

パスを含むプロセスの絶対名。

exit_status

プロセスの最後の終了ステータス。

respawn_count

プロセスが再起動された回数。

last_respawn_sec
last_respawn_msec

最後の再起動が発生したカレンダー時間。

fail_count

失敗したプロセスの再起動試行の回数。プロセスが正常に再起動されると、0 にリセットされます。

dump_count

プロセスで取られたコア ダンプの数。

node_name

プロセスが存在するノードの名前。ノード名は、「node」という語句と、それに続く、次の形式を使用してスラッシュ文字で区切られた 2 つのフィールドで構成される、文字列です。

node slot-number / cpu-number

slot-number は、ハードウェア スロット番号です。cpu-number は、ハードウェア CPU 番号です。

EEM_EVENT_RESOURCE について

"event_id %u event_type %u event_type_string {%s} %u event_pub_sec %u event_pub_msec %u"
"owner_id %lld user_id %lld" time_sent %llu dampen_time %d notify_data_flags %u"
"level {%s} direction {%s} configured_threshold %u current_value %u"
"policy_violation_flag {%s} policy_id %d"

 

イベント タイプ
説明

event_id

パブリッシュされた該当イベントの ID を示す一意の番号。同一のイベントで複数のポリシーを実行可能であり、その場合、各ポリシーは同一の event_id を保持します。

event_type

イベントのタイプ。

event_type_string

このイベント タイプのイベントの名前を表す ASCII 文字列。

event_pub_sec
event_pub_msec

EEM に対してイベントがパブリッシュされた、秒単位およびミリ秒単位の時間。

owner_id

Embedded Resource Manager(ERM)オーナー ID。

user_id

ERM ユーザ ID。

time_sent

ERM イベント時間、ナノ秒単位。

dampen_time

ERM 減衰時間、ナノ秒単位。

notify_data_flags

ERM 通知データ フラグ。

level

ERM イベント レベル。イベント レベルは、Normal、Minor、Major、および Critical の 4 つです。

direction

ERM イベント方向。イベント方向は、アップ、ダウン、または、変更なしのうちのいずれかです。

configured_threshold

設定されている ERM しきい値。

current_value

ERM によって報告された、現在の値。

policy_violation_flag

ERM ポリシー違反フラグ(False または True)。

policy_id

ERM ポリシー ID。

EEM_EVENT_RF について

"event_id %u event_type %u event_type_string {%s} %u event_pub_sec %u event_pub_msec %u"
"event {%s}"

 

イベント タイプ
説明

event_id

パブリッシュされた該当イベントの ID を示す一意の番号。同一のイベントで複数のポリシーを実行可能であり、その場合、各ポリシーは同一の event_id を保持します。

event_type

イベントのタイプ。

event_type_string

このイベント タイプのイベントの名前を表す ASCII 文字列。

event_pub_sec
event_pub_msec

EEM に対してイベントがパブリッシュされた、秒単位およびミリ秒単位の時間。

event

このイベントが発生する原因となる RF の進行またはステータス イベント通知。

EEM_EVENT_Routing について

"event_id %u event_type %u event_type_string {%s} %u event_pub_sec %u event_pub_msec %u" "event_severity {%s} %u network %u mask %u protocol %u lastgateway %u distance %u"
"time_sec %u time_msec %u metric %u lastinterface %u"

 

イベント タイプ
説明

event_id

パブリッシュされた該当イベントの ID を示す一意の番号。同一のイベントで複数のポリシーを実行可能であり、その場合、各ポリシーは同一の event_id を保持します。

event_type

イベントのタイプ。

event_type_string

このイベント タイプのイベントの名前を表す ASCII 文字列。

event_pub_sec
event_pub_msec

EEM に対してイベントがパブリッシュされた、秒単位およびミリ秒単位の時間。

event_severity

イベントの重大度。

network

IP アドレス形式のネットワーク プレフィクス。

mask

IP アドレス形式のネットワーク マスク。

protocol

ネットワーク プロトコルのタイプ。

type

追加、削除、または変更するイベントのタイプ。

lastgateway

最後に認識されたゲートウェイ。

distance

管理ディスタンス。

time_sec
time_msec

イベントが EEM にパブリッシュされたときの、秒単位およびミリ秒単位でのイベントの時間。

metric

パス メトリック。

lastinterface

最後に認識されたインターフェイス。

EEM_EVENT_RPC について

"event_id %u event_type %u event_type_string {%s} event_pub_sec %u event_pub_msec %u
arg %u"

 

イベント タイプ

説明

event_id

パブリッシュされた該当イベントの ID を示す一意の番号。同一のイベントで複数のポリシーを実行可能であり、その場合、各ポリシーは同一の event_id を保持します。

event_type

イベントのタイプ。

event_type_string

このイベント タイプのイベントの名前を表す ASCII 文字列。

event_pub_sec
event_pub_msec

EEM に対してイベントがパブリッシュされた、秒単位およびミリ秒単位の時間。

argc

arg0

arg1

arg2

arg3

arg4

arg6

arg7

arg8

arg9

arg10

arg11

arg12

arg13

arg14

Extensible Markup Language(XML)Simple Object Access Protocol(SOAP)コマンドからスクリプトに渡されるパラメータ。

EEM_EVENT_SNMP について

"event_id %u event_type %u event_type_string {%s} %u event_pub_sec %u event_pub_msec %u"
"event_severity {%s} oid {%s} val {%s} delta_val {%s}"

 

イベント タイプ
説明

event_id

パブリッシュされた該当イベントの ID を示す一意の番号。同一のイベントで複数のポリシーを実行可能であり、その場合、各ポリシーは同一の event_id を保持します。

event_type

イベントのタイプ。

event_type_string

このイベント タイプのイベントの名前を表す ASCII 文字列。

event_pub_sec
event_pub_msec

EEM に対してイベントがパブリッシュされた、秒単位およびミリ秒単位の時間。

event_severity

SNMP イベントの重大度で、次のいずれかの値を指定できます。

normal

minor

major

oid

SNMP ドット付き表記での、データ エレメントのオブジェクト ID。

val

データ エレメントの値。

delta_val

ポリシーの値間のデルタ値。

EEM_EVENT_SNMP_Notification について

"event_id %u event_type %u event_type_string {%s} %u event_pub_sec %u event_pub_msec %u
event_severity {%s}" "oid {%s} oid_val {%s} src_ip_addr {%s} dest_ip_addr {%s} x_x_x_x_x (varbinds) {%s} trunc_vb_buf {%s} trap_oid {%s} enterprise_oid {%s} generic_trap %u specific_trap %u"

 

イベント タイプ
説明

event_id

パブリッシュされた該当イベントの ID を示す一意の番号。同一のイベントで複数のポリシーを実行可能であり、その場合、各ポリシーは同一の event_id を保持します。

event_type

イベントのタイプ。

event_type_string

このイベント タイプのイベントの名前を表す ASCII 文字列。

event_pub_sec
event_pub_msec

EEM に対してイベントがパブリッシュされた、秒単位およびミリ秒単位の時間。

oid

ユーザ指定オブジェクト ID。

oid_val

ユーザ指定オブジェクト ID 値。

src_ip_addr

SNMP Protocol Data Unit(PDU; プロトコル データ ユニット)の発信元 IP アドレス。

dest_ip_addr

SNMP PDU の宛先の IP アドレス。

x_x_x_x_x (varbinds)

SNMP PDU varbind 情報。

trap_oid

トラップ OID 値を示します。

enterprise_oid

エンタープライズ OID 値を示します。

generic_trap

汎用トラップ タイプの番号の 1 つを示します。0 から 6 の、7 つの汎用トラップ タイプがあります。

specific_trap

指定されたトラップ コードの番号の 1 つを示します。

EEM_EVENT_SNMP_Object の Event_reqinfo

"event_id %u event_type %u event_type_string {%s} %u event_pub_sec %u event_pub_msec %u
event_severity {%s}" "oid {%s} request {%s} request_type {%s} value %u"

 

イベント タイプ
説明

event_id

パブリッシュされた該当イベントの ID を示す一意の番号。同一のイベントで複数のポリシーを実行可能であり、その場合、各ポリシーは同一の event_id を保持します。

event_type

イベントのタイプ。

event_type_string

このイベント タイプのイベントの名前を表す ASCII 文字列。

event_pub_sec
event_pub_msec

EEM に対してイベントがパブリッシュされた、秒単位およびミリ秒単位の時間。

event_severity

イベントの重大度。

oid

受信した get 要求または set 要求の SNMP オブジェクトの ID。

request

get または set の要求タイプ。

request_type

要求のタイプ(現在または次の)。

value

set 要求のみ。オブジェクトに設定される値。

EEM_EVENT_SYSLOG_MSG について

"event_id %u event_type %u event_type_string {%s} event_pub_sec %u event_pub_msec %u"
"msg {%s}"

 

イベント タイプ
説明

event_id

パブリッシュされた該当イベントの ID を示す一意の番号。同一のイベントで複数のポリシーを実行可能であり、その場合、各ポリシーは同一の event_id を保持します。

event_type

イベントのタイプ。

event_type_string

このイベント タイプのイベントの名前を表す ASCII 文字列。

event_pub_sec
event_pub_msec

EEM に対してイベントがパブリッシュされた、秒単位およびミリ秒単位の時間。

msg

パターンと一致する最後の Syslog メッセージ。

EEM_EVENT_TIMER_ABSOLUTE
EEM_EVENT_TIMER_COUNTDOWN
EEM_EVENT_TIMER_WATCHDOG について

"event_id %u event_type %u event_type_string {%s} event_pub_sec %u event_pub_msec %u"
"timer_type %s timer_time_sec %ld timer_time_msec %ld"
"timer_remain_sec %ld timer_remain_msec %ld"

 

イベント タイプ
説明

event_id

パブリッシュされた該当イベントの ID を示す一意の番号。同一のイベントで複数のポリシーを実行可能であり、その場合、各ポリシーは同一の event_id を保持します。

event_type

イベントのタイプ。

event_type_string

このイベント タイプのイベントの名前を表す ASCII 文字列。

event_pub_sec
event_pub_msec

EEM に対してイベントがパブリッシュされた、秒単位およびミリ秒単位の時間。

timer_type

タイマーのタイプ。次のいずれか 1 つを使用できます。

watchdog

countdown

absolute

timer_time_sec
timer_time_msec

タイマーの期限が切れる時間。

timer_remain_sec
timer_remain_msec

次の期限切れ前の残りの時間。

EEM_EVENT_TIMER_CRON について

"event_id %u event_type %u event_type_string {%s} event_pub_sec %u event_pub_msec %u"
"timer_type {%s} timer_time_sec %ld timer_time_msec %ld"

 

イベント タイプ
説明

event_id

パブリッシュされた該当イベントの ID を示す一意の番号。同一のイベントで複数のポリシーを実行可能であり、その場合、各ポリシーは同一の event_id を保持します。

event_type

イベントのタイプ。

event_type_string

このイベント タイプのイベントの名前を表す ASCII 文字列。

event_pub_sec
event_pub_msec

EEM に対してイベントがパブリッシュされた、秒単位およびミリ秒単位の時間。

timer_type

タイマーのタイプ。

timer_time_sec
timer_time_msec

タイマーの期限が切れる時間。

EEM_EVENT_TRACK について

"event_id %u event_type %u event_type_string {%s} %u event_pub_sec %u event_pub_msec %u"
"track_number {%u} track_state {%s}"

 

イベント タイプ
説明

event_id

パブリッシュされた該当イベントの ID を示す一意の番号。同一のイベントで複数のポリシーを実行可能であり、その場合、各ポリシーは同一のイベント ID を保持します。

event_type

イベントのタイプ。

event_type_string

このイベント タイプのイベントの名前を表す ASCII 文字列。

event_pub_sec
event_pub_msec

EEM に対してイベントがパブリッシュされた、秒単位およびミリ秒単位の時間。

track_number

イベントがトリガーされる原因となるトラックされるオブジェクトの番号。

track_state

イベントがトリガーされたときのトラックされるオブジェクトの状態。有効な値は up または down です。

EEM_EVENT_WDSYSMON について(ソフトウェアモジュール方式のみ)

"event_id %u event_type %u event_type_string {%s} %u event_pub_sec %u event_pub_msec %u"
"num_subs %u"

 

イベント タイプ
説明

event_id

パブリッシュされた該当イベントの ID を示す一意の番号。同一のイベントで複数のポリシーを実行可能であり、その場合、各ポリシーは同一の event_id を保持します。

event_type

イベントのタイプ。

event_type_string

このイベント タイプのイベントの名前を表す ASCII 文字列。

event_pub_sec
event_pub_msec

EEM に対してイベントがパブリッシュされた、秒単位およびミリ秒単位の時間。

num_subs

サブイベント番号。

サブイベント情報文字列は、次のような、デッドロック サブイベント用です。

"{type %s num_entries %u entries {entry 1, entry 2, ...}}"

 

サブイベント タイプ
説明

type

Wdsysmon サブイベントのタイプ。

num_entries

デッドロックのプロセスおよびスレッドの番号。

entries

デッドロックのプロセスおよびスレッドの情報。

各エントリは次のとおりです。

"{node {%s} procname {%s} pid %u tid %u state %s b_node %s b_procname %s b_pid %u
b_tid %u}"
 

エントリでは、プロセス A のスレッド m によって、プロセス B のスレッド n でブロックされるシナリオが説明されるとします。

サブイベント タイプ
説明

node

プロセス A のスレッド m があるノードの名前。

procname

プロセス A の名前。

pid

プロセス A のプロセス ID。

tid

プロセス A のスレッド m のスレッド ID。

state

プロセス A のスレッド m のスレッドの状態。次のいずれか 1 つを使用できます。

STATE_CONDVAR

STATE_DEAD

STATE_INTR

STATE_JOIN

STATE_MUTEX

STATE_NANOSLEEP

STATE_READY

STATE_RECEIVE

STATE_REPLY

STATE_RUNNING

STATE_SEM

STATE_SEND

STATE_SIGSUSPEND

STATE_SIGWAITINFO

STATE_STACK

STATE_STOPPED

STATE_WAITPAGE

STATE_WAITTHREAD

b_node

プロセス B のスレッドがあるノードの名前。

b_procname

プロセス B の名前。

b_pid

プロセス B のプロセス ID。

b_tid

プロセス B のスレッド n のスレッド ID。0 は、プロセス A のスレッド m は、プロセス B のすべてのスレッド上でブロックされることを意味します。

dispatch_mgr サブイベントについて

"{type %s node {%s} procname {%s} pid %u value %u sec %ld msec %ld}"

 

サブイベント タイプ
説明

type

Wdsysmon サブイベントのタイプ。

node

POSIX プロセスが存在するノードの名前。

procname

このサブイベントの POSIX プロセス名。

pid

このサブイベントの POSIX プロセス ID。

(注) 前述の 3 つのフィールドは、このディスパッチ マネージャのオーナー プロセスについて説明します。

value

sec 変数と msec 変数が、0 に指定されるか、または、イベント登録 Tcl コマンド拡張で指定されない場合、ディスパッチ マネージャによって処理されるイベント数は、最新のサンプルにあります。時間ウィンドウが指定され、登録 Tcl コマンド拡張でゼロよりも大きい場合、このディスパッチ マネージャによって処理されるイベントの合計数は、該当する時間ウィンドウにあります。

sec
msec

sec 変数と msec 変数が、0 に指定されるか、または、イベント登録 Tcl コマンド拡張で指定されない場合、両方とも 0 です。時間ウィンドウが指定され、登録 Tcl コマンド拡張でゼロよりも大きい場合、 sec 変数および msec 変数は、この時間ウィンドウの、最も古いサンプルと最新のサンプルとの間の、実際の時間の差です。

cpu_proc サブイベントについて

"{type %s node {%s} procname {%s} pid %u value %u sec %ld msec %ld}"

 

サブイベント タイプ
説明

type

Wdsysmon サブイベントのタイプ。

node

POSIX プロセスが存在するノードの名前。

procname

このサブイベントの POSIX プロセス名。

pid

このサブイベントの POSIX プロセス ID。

(注) 前述の 3 つのフィールドは、その CPU 使用率が監視されているプロセスについて説明します。

value

sec 変数と msec 変数が、0 に指定されるか、または、イベント登録 Tcl コマンド拡張で指定されない場合、プロセス CPU 使用率は、最新のサンプルにあります。時間ウィンドウが指定され、登録 Tcl コマンド拡張でゼロよりも大きい場合、プロセス CPU 使用率の平均は、該当する時間ウィンドウにあります。

sec
msec

sec 変数と msec 変数が、0 に指定されるか、または、イベント登録 Tcl コマンド拡張で指定されない場合、両方とも 0 です。時間ウィンドウが指定され、登録 Tcl コマンド拡張でゼロよりも大きい場合、 sec 変数および msec 変数は、この時間ウィンドウの、最も古いサンプルと最新のサンプルとの間の、実際の時間の差です。

cpu_tot サブイベントについて

"{type %s node {%s} value %u sec %ld msec %ld}"

 

サブイベント タイプ
説明

type

Wdsysmon サブイベントのタイプ。

node

CPU 使用率の合計が監視されているノードの名前。

value

sec 変数と msec 変数が、0 に指定されるか、または、イベント登録 Tcl コマンド拡張で指定されない場合、合計 CPU 使用率は、最新のサンプルにあります。時間ウィンドウが指定され、登録 Tcl コマンド拡張でゼロよりも大きい場合、合計 CPU 使用率の平均は、該当する時間ウィンドウにあります。

sec
msec

sec 変数と msec 変数が、0 に指定されるか、または、イベント登録 Tcl コマンド拡張で指定されない場合、両方とも 0 です。時間ウィンドウが指定され、登録 Tcl コマンド拡張でゼロよりも大きい場合、 sec 変数および msec 変数は、この時間ウィンドウの、最も古いサンプルと最新のサンプルとの間の、実際の時間の差です。

mem_proc サブイベントについて

"{type %s node {%s} procname {%s} pid %u is_percent %s value %u diff %d sec %ld msec %ld}"

 

サブイベント タイプ
説明

type

Wdsysmon サブイベントのタイプ。

node

POSIX プロセスが存在するノードの名前。

procname

このサブイベントの POSIX プロセス名。

pid

このサブイベントの POSIX プロセス ID。

(注) 前述の 3 つのフィールドは、そのメモリ使用率が監視されているプロセスについて説明します。

is_percent

TRUE または FALSE のいずれかです。TRUE は、値がパーセント値であることを示します。FALSE は、値が絶対値であることを示します(平均値の場合もあります)。

value

sec 変数と msec 変数が、0 に指定されるか、または、イベント登録 Tcl コマンド拡張で指定されない場合、プロセスで使用されたメモリは、最新のサンプルにあります。時間ウィンドウが指定され、登録 Tcl コマンド拡張でゼロよりも大きい場合、プロセスで使用されたメモリ使用率の平均は、該当する時間ウィンドウにあります。

サブイベント タイプ
説明

diff

sec 変数と msec 変数が、0 に指定されるか、または、イベント登録 Tcl コマンド拡張で指定されない場合、 diff は、今まで収集された、プロセスで使用された最初のメモリ サンプルと、プロセスで使用された最新のメモリ サンプルとの間の、パーセンテージによる差です。時間ウィンドウが指定され、登録 Tcl コマンド拡張でゼロよりも大きい場合、 diff は、指定された時間ウィンドウで、最も古いプロセスで使用されたメモリ使用率と最新のプロセスで使用されたメモリ使用率との間の、パーセンテージによる差です。

sec
msec

sec 変数と msec 変数が、0 に指定されるか、または、イベント登録 Tcl コマンド拡張で指定されない場合、両方とも 0 です。時間ウィンドウが指定され、登録 Tcl コマンド拡張でゼロよりも大きい場合、 sec 変数および msec 変数は、この時間ウィンドウの、最も古いサンプルと最新のサンプルとの間の、実際の時間の差です。

is_percent 引数が FALSE の場合、 sec 引数と msec 引数は、0 に指定されるか、または、イベント登録 Tcl コマンド拡張では指定されません。

value は、最新のサンプルでプロセスによって使用されたメモリです。

diff は 0 です。

sec msec は、両方とも 0 です。

is_percent 引数が FALSE の場合、時間ウィンドウは、イベント登録 Tcl コマンド拡張で、ゼロよりも大きい値で指定されます。

value は、指定された時間ウィンドウでプロセスによって使用されたメモリ サンプル値の平均です。

diff は 0 です。

sec および msec は、両方とも、この時間ウィンドウの、最も古いタイム スタンプと最新のタイム スタンプとの間の、実際の時間の差です。

is_percent 引数が TRUE の場合、時間ウィンドウは、イベント登録 Tcl コマンド拡張で、ゼロよりも大きい値で指定されます。

value は 0 です。

diff は、指定された時間ウィンドウの、最も古いプロセスで使用されたメモリ サンプルと最新のプロセスで使用されたメモリ サンプルとの間の、パーセンテージによる差です。

sec および msec は、この時間ウィンドウの、最も古いプロセスで使用されたメモリ サンプルと最新のプロセスで使用されたメモリ サンプルとの間の、実際の時間の差です。

is_percent 引数が TRUE の場合、 sec 引数と msec 引数は、0 に指定されるか、または、イベント登録 Tcl コマンド拡張では指定されません。

value は 0 です。

diff は、今まで収集された、プロセスで使用された最初のメモリ サンプルと、プロセスで使用された最新のメモリ サンプルとの間の、パーセンテージによる差です。

sec および msec は、今まで収集された、プロセスで使用された最初のメモリ サンプルとプロセスで使用された最新のメモリ サンプルとの間の、実際の時間の差です。

mem_tot_avail サブイベントについて

"{type %s node {%s} is_percent %s used %u avail %u diff %d sec %ld msec %ld}"

 

サブイベント タイプ
説明

type

Wdsysmon サブイベントのタイプ。

node

使用可能なメモリの合計が監視されているノードの名前。

is_percent

TRUE または FALSE のいずれかです。TRUE は、値がパーセント値であることを示します。FALSE は、値が絶対値であることを示します(平均値の場合もあります)。

used

sec 変数と msec 変数が、0 に指定されるか、または、イベント登録 Tcl コマンド拡張で指定されない場合、使用されたメモリの合計は、最新のサンプルにあります。時間ウィンドウが指定され、登録 Tcl コマンド拡張でゼロよりも大きい場合、使用された合計メモリ使用率の平均は、該当する時間ウィンドウにあります。

avail

sec 変数と msec 変数が、0 に指定されるか、または、イベント登録 Tcl コマンド拡張で指定されない場合、 avail は、最新の使用可能なメモリ サンプルの合計にあります。時間ウィンドウが指定され、登録 Tcl コマンド拡張でゼロよりも大きい場合、 avail は、指定された時間ウィンドウで使用可能なメモリ使用率の合計です。

diff

sec 変数と msec 変数が、0 に指定されるか、または、イベント登録 Tcl コマンド拡張で指定されない場合、 diff は、今まで収集された、最初の使用可能なメモリ サンプルの合計と、最新の使用可能なメモリ サンプルの合計との間の、パーセンテージによる差です。時間ウィンドウが指定され、登録 Tcl コマンド拡張でゼロよりも大きい場合、 diff は、指定された時間ウィンドウで、最も古い使用可能なメモリ使用率と最新の使用可能なメモリ使用率との間の、パーセンテージによる差です。

sec
msec

sec 変数と msec 変数が、0 に指定されるか、または、イベント登録 Tcl コマンド拡張で指定されない場合、両方とも 0 です。時間ウィンドウが指定され、登録 Tcl コマンド拡張でゼロよりも大きい場合、これらの変数は、この時間ウィンドウの、最も古いサンプルと最新のサンプルとの間の、実際の時間の差です。

is_percent 引数が FALSE の場合、 sec 引数と msec 引数は、0 に指定されるか、または、イベント登録 Tcl コマンド拡張では指定されません。

used は、最新のサンプルで使用されたメモリの合計です。

avail は、最新のサンプルで使用可能なメモリの合計です。

diff は 0 です。

sec msec は、両方とも 0 です。

is_percent 引数が FALSE の場合、時間ウィンドウは、イベント登録 Tcl コマンド拡張で、ゼロよりも大きい値で指定されます。

used は 0 です。

avail は、指定された時間ウィンドウで使用可能なメモリ サンプル値の平均です。

diff は 0 です。

sec および msec は、両方とも、この時間ウィンドウの、最も古い使用可能なメモリ サンプルの合計のタイム スタンプと最新の使用可能なメモリ サンプルの合計のタイム スタンプとの間の、実際の時間の差です。

is_percent 引数が TRUE の場合、時間ウィンドウは、イベント登録 Tcl コマンド拡張で、ゼロよりも大きい値で指定されます。

used は 0 です。

avail は 0 です。

diff は、指定された時間ウィンドウの、最も古い使用可能なメモリ サンプルの合計と最新の可能なメモリ サンプルの合計との間の、パーセンテージによる差です。

sec および msec は、両方とも、この時間ウィンドウの、最も古い使用可能なメモリ サンプルの合計のタイム スタンプと最新の使用可能なメモリ サンプルの合計のタイム スタンプとの間の、実際の時間の差です。

is_percent 引数が TRUE の場合、 sec 引数と msec 引数は、0 に指定されるか、または、イベント登録 Tcl コマンド拡張では指定されません。

used は 0 です。

avail は 0 です。

diff は、今まで収集された、最初の使用可能なメモリ サンプルの合計と、最新の使用可能なメモリ サンプルの合計との間の、パーセンテージによる差です。

sec および msec は、今まで収集された、使用可能な最初のメモリ サンプルの合計と使用可能な最新のメモリ サンプルの合計との間の、実際の時間の差です。

mem_tot_used サブイベントについて

"{type %s node {%s} is_percent %s used %u avail %u diff %d sec %ld msec %ld}"

 

サブイベント タイプ
説明

type

Wdsysmon サブイベントのタイプ。

node

使用されているメモリの合計が監視されているノードの名前。

is_percent

TRUE または FALSE のいずれかです。TRUE は、値がパーセント値であることを示します。FALSE は、値が絶対値であることを示します(平均値の場合もあります)。

used

sec 変数と msec 変数が、0 に指定されるか、または、イベント登録 Tcl コマンド拡張で指定されない場合、使用されたメモリの合計は、最新のサンプルにあります。時間ウィンドウが指定され、登録 Tcl コマンド拡張でゼロよりも大きい場合、使用された合計メモリ使用率の平均は、該当する時間ウィンドウにあります。

avail

sec 変数と msec 変数が、0 に指定されるか、または、イベント登録 Tcl コマンド拡張で指定されない場合、 avail は、最新の使用されたメモリ サンプルの合計にあります。時間ウィンドウが指定され、登録 Tcl コマンド拡張でゼロよりも大きい場合、 avail は、指定された時間ウィンドウで使用されたメモリ使用率の合計です。

diff

sec 変数と msec 変数が、0 に指定されるか、または、イベント登録 Tcl コマンド拡張で指定されない場合、 diff は、今まで収集された、プロセスで使用可能な最初のメモリ サンプルと、プロセスで使用可能な最新のメモリ サンプルとの間の、パーセンテージによる差です。時間ウィンドウが指定され、登録 Tcl コマンド拡張でゼロよりも大きい場合、 diff は、指定された時間ウィンドウで、最も古い使用されたメモリ使用率の合計と最新の使用されたメモリ使用率の合計との間の、パーセンテージによる差です。

sec
msec

sec 変数と msec 変数が、0 に指定されるか、または、イベント登録 Tcl コマンド拡張で指定されない場合、両方とも 0 です。時間ウィンドウが指定され、登録 Tcl コマンド拡張でゼロよりも大きい場合、 sec 変数および msec 変数は、この時間ウィンドウの、最も古いサンプルと最新のサンプルとの間の、実際の時間の差です。

is_percent 引数が FALSE の場合、sec 引数と msec 引数は、0 に指定されるか、または、イベント登録 Tcl コマンド拡張では指定されません。

used は、最新のサンプルで使用されたメモリの合計です。

avail は、最新のサンプルで使用可能なメモリの合計です。

diff は 0 です。

sec msec は、両方とも 0 です。

is_percent 引数が FALSE の場合、時間ウィンドウは、イベント登録 Tcl コマンド拡張で、ゼロよりも大きい値で指定されます。

used は、指定された時間ウィンドウで使用されたメモリ サンプル値の平均です。

avail は 0 です。

diff は 0 です。

sec および msec は、両方とも、この時間ウィンドウの、最も古い使用されたメモリ サンプルのタイム スタンプの合計と最新の使用されたメモリ サンプルの合計のタイム スタンプとの間の、実際の時間の差です。

is_percent 引数が TRUE の場合、時間ウィンドウは、イベント登録 Tcl コマンド拡張で、ゼロよりも大きい値で指定されます。

used は 0 です。

avail は 0 です。

diff は、指定された時間ウィンドウの、最も古い使用されたメモリ サンプルの合計と最新の使用されたメモリ サンプルの合計との間の、パーセンテージによる差です。

sec および msec は、両方とも、この時間ウィンドウの、最も古い使用されたメモリ サンプルのタイム スタンプの合計と最新の使用されたメモリ サンプルのタイム スタンプの合計との間の、実際の時間の差です。

is_percent 引数が TRUE の場合、sec 引数と msec 引数は、0 に指定されるか、または、イベント登録 Tcl コマンド拡張では指定されません。

used は 0 です。

avail は 0 です。

diff は、今まで収集された、使用された最初のメモリ サンプルの合計と、プロセスで使用された最新のメモリ サンプルの合計との間の、パーセンテージによる差です。

sec および msec は、今まで収集された、使用された最初のメモリ サンプルの合計と使用された最新のメモリ サンプルの合計との間の、実際の時間の差です。

Set _cerrno

あり

EEM イベントの Tcl コマンド拡張

event_completion

event_completion_with_wait

「event_publish」

「event_wait」

event_completion

トリガーしたイベントのサービスが行われている EEM サーバに、通知を送信します。イベントでは、このイベント インスタンスの return_code である 1 つの引数のみが使用されます。

構文

event_completion status ?

引数

status

(必須)このイベント インスタンスの終了ステータス(return_code)。ゼロの値によって、エラーがないことが示され、他のすべての整数によって、エラーが示されます。

結果文字列

なし

Set _cerrno

なし

event_completion_with_wait

event_completion_with_wait コマンドは、 event_completion コマンドと event_wait コマンドの 2 つのコマンドを、使いやすくするために 1 つに組み合わされたコマンドです。

event_completion コマンドによって、トリガーしたイベントのサービスが行われている EEM サーバに、通知が送信されます。イベントでは、このイベント インスタンスの return_code である 1 つの引数のみが使用されます。

event_wait によって、Tcl ポリシーがスリープ状態になります。Tcl ポリシーで、新しいイベントを通知する新しい信号を受信すると、ポリシーは使用状態になり、再度スリープ状態に戻ります。このループが継続されます。 event_wait ポリシーは、 event_completed ポリシーの前に起動され、エラーが発生して、ポリシーが終了します。

構文

event_completion_with_wait status ? [refresh_vars]

引数

status

(必須)このイベント インスタンスの exit_status(return_code)。ゼロの値は、エラーがないことを示します。他のすべての整数は、エラーを示します。

refresh_vars

(任意)組み込み変数と環境変数は、このイベント インスタンス中に EEM Policy Director からアップデート(リフレッシュ)する必要があるかどうかを示します。

結果文字列

なし

Set _cerrno

あり

使用例

この 1 つのコマンドを使用した前述の例の類似例を示します。

 
namespace import ::cisco::eem::*
namespace import ::cisco::lib::*
 
set i 1
 
while {1 == 1} { # Start high performance policy loop
 
array set arr_einfo [event_reqinfo]
if {$_cerrno != 0} {
set result [format "component=%s; subsys err=%s; posix err=%s;\n%s" \
$_cerr_sub_num $_cerr_sub_err $_cerr_posix_err $_cerr_str]
error $result
}
 
action_syslog msg "event $i serviced" priority info
 
if {$i == 5} {
action_syslog msg "Exiting after servicing 5 events" priority info
exit 0
}
 
incr i
 
array set _event_state_arr [event_completion_with_wait status 0 refresh_vars 1]
 
if {$_event_state_arr(event_state) != 0} {
action_syslog msg "Exiting: failed event_state " \
" $event_state_arr(event_state)" priority info
exit 0
}
}

) 実行される設定の出力は、event_publish Tcl コマンドと同じです。


event_publish

アプリケーション固有のイベントをパブリッシュします。

構文

event_publish sub_system ? type ? [arg1 ?] [arg2 ?] [arg3 ?] [arg4 ?]

引数

sub_system

(必須)アプリケーション固有のイベントをパブリッシュした EEM ポリシーに割り当てられる番号。他のすべての番号は Cisco での使用のために予約されているため、番号は 798 に設定されます。

type

(必須)指定されたコンポーネント内のイベント サブタイプ。sub_system 引数および type 引数によって、アプリケーション イベントが一意に識別されます。1 ~ 4294967295 の範囲の整数である必要があります。

[arg1 ?]-[arg4 ?]

(任意)4 つのアプリケーション イベントのパブリッシャの文字列データ。

結果文字列

なし

Set _cerrno

あり

(_cerr_sub_err = 2) FH_ESYSERR (generic/unknown error from OS/system)
 

このエラーは、オペレーティング システムによってレポートされたエラーを意味します。エラーとともにレポートされる POSIX errno 値を使用して、オペレーティング システム エラーの原因を調べます。

使用例

この例では、同じ機能(たとえば、Tcl 文の指定されたグループによって CPU 時間の長さを測定する)を実行するため、 event_publish Tcl コマンド拡張を使用して、スクリプトを n 回実行する方法を示します。この例では、2 つの Tcl スクリプトが使用されます。

Script1 によって、タイプ 9999 EEM イベントがパブリッシュされ、Script2 の 1 回目の実行が行われます。Script1 は、none イベントとして登録され、Cisco IOS CLI event manager run コマンドを使用して実行されます。Script2 は、タイプ 9999 の EEM アプリケーション イベントとして登録され、このスクリプトによって、アプリケーションによってパブリッシュされた arg1 データ(繰り返し回数)が、EEM 環境変数 test_iterations の値を超過したかどうかがチェックされます。test_iterations の値が超えた場合、スクリプトによってメッセージが書き込まれ、終了します。これ以外の場合、スクリプトによって残りの文が実行され、別の実行が再スケジュールされます。Script2 の CPU 使用率を測定するには、10 の倍数である test_iterations の値を使用して、Script2 によって使用される CPU 時間の平均の長さを計算します。

Tcl スクリプトを実行するには、次の Cisco IOS コマンドを使用します。

configure terminal
event manager environment test_iterations 100
event manager policy script1.tcl
event manager policy script2.tcl
end
event manager run script1.tcl
 

Tcl スクリプト Script2 によって、100 回実行されます。余分な処理なしてスクリプトを実行し、CPU 使用率の平均を導き出し、次に余分な処理を追加して、テストを繰り返す場合、以降の CPU 使用率から前の CPU 使用率を差し引き、余分な処理の平均を調べることができます。

Script1(script1.tcl)

::cisco::eem::event_register_none
 
namespace import ::cisco::eem::*
namespace import ::cisco::lib::*
 
# Query the event info.
array set arr_einfo [event_reqinfo]
if {$_cerrno != 0} {
set result [format "component=%s; subsys err=%s; posix err=%s;\n%s" \
$_cerr_sub_num $_cerr_sub_err $_cerr_posix_err $_cerr_str]
error $result
}
 
action_syslog priority info msg "EEM application_publish test start"
if {$_cerrno != 0} {
set result [format \
"component=%s; subsys err=%s; posix err=%s;\n%s" \
$_cerr_sub_num $_cerr_sub_err $_cerr_posix_err $_cerr_str]
error $result
}
 
# Cause the first iteration to run.
event_publish sub_system 798 type 9999 arg1 0
if {$_cerrno != 0} {
set result [format \
"component=%s; subsys err=%s; posix err=%s;\n%s" \
$_cerr_sub_num $_cerr_sub_err $_cerr_posix_err $_cerr_str]
error $result
}
 

Script2(script2.tcl)

::cisco::eem::event_register_appl sub_system 798 type 9999
 
# Check if all the required environment variables exist.
# If any required environment variable does not exist, print out an error msg and quit.
if {![info exists test_iterations]} {
set result \
"Policy cannot be run: variable test_iterations has not been set"
error $result $errorInfo
}
 
namespace import ::cisco::eem::*
namespace import ::cisco::lib::*
 
# Query the event info.
array set arr_einfo [event_reqinfo]
if {$_cerrno != 0} {
set result [format "component=%s; subsys err=%s; posix err=%s;\n%s" \
$_cerr_sub_num $_cerr_sub_err $_cerr_posix_err $_cerr_str]
error $result
}
# Data1 contains the arg1 value used to publish this event.
set iter $arr_einfo(data1)
 
# Use the arg1 info from the previous run to determine when to end.
if {$iter >= $test_iterations} {
# Log a message.
action_syslog priority info msg "EEM application_publish test end"
if {$_cerrno != 0} {
set result [format \
"component=%s; subsys err=%s; posix err=%s;\n%s" \
$_cerr_sub_num $_cerr_sub_err $_cerr_posix_err $_cerr_str]
error $result
}
exit 0
}
set iter [expr $iter + 1]
 
# Log a message.
set msg [format "EEM application_publish test iteration %s" $iter]
action_syslog priority info msg $msg
if {$_cerrno != 0} {
set result [format "component=%s; subsys err=%s; posix err=%s;\n%s" \
$_cerr_sub_num $_cerr_sub_err $_cerr_posix_err $_cerr_str]
error $result
}
 
# Do whatever processing that you want to measure here.
 
# Cause the next iteration to run. Note that the iteration is passed to the
# next operation as arg1.
event_publish sub_system 798 type 9999 arg1 $iter
if {$_cerrno != 0} {
set result [format \
"component=%s; subsys err=%s; posix err=%s;\n%s" \
$_cerr_sub_num $_cerr_sub_err $_cerr_posix_err $_cerr_str]
error $result
}
 

event_wait

Tcl ポリシーがスリープ状態になります。Tcl ポリシーで、新しいイベントを通知する新しい信号を受信すると、ポリシーは使用状態になり、再度スリープ状態に戻ります。このループが継続されます。 event_wait ポリシーは、 event_completed ポリシーの前に起動され、エラーが発生して、ポリシーが終了します。

構文

event_wait [refresh_vars]

引数

refresh_vars

(任意)組み込み変数と環境変数は、このイベント インスタンス中に EEM Policy Director からアップデート(リフレッシュ)する必要があるかどうかを示します。

結果文字列

なし

Set _cerrno

なし

使用例

event_wait イベント ディテクタによって、 event_state という名前の 1 つのエレメントを使用して配列タイプ値が戻されます。Event_state は、イベントの処理中にエラーが発生したかどうかを示す EEM サーバから戻される値です。イベント インスタンスの処理時に、ユーザが、 event_completion を設定する前に、 event_wait を設定した場合、エラーが発生する例です。

次に、 event_completion Tcl コマンドと event_wait Tcl コマンドの両方の出力例を示します。

::cisco::eem::event_register_syslog tag e1 occurs 1 pattern CLEAR maxrun 0
 
namespace import ::cisco::eem::*
namespace import ::cisco::lib::*
 
set i 1
 
while {1 == 1} { # Start high performance policy loop
 
array set arr_einfo [event_reqinfo]
if {$_cerrno != 0} {
set result [format "component=%s; subsys err=%s; posix err=%s;\n%s" \
$_cerr_sub_num $_cerr_sub_err $_cerr_posix_err $_cerr_str]
error $result
}
 
action_syslog msg "event $i serviced" priority info
 
if {$i == 5} {
action_syslog msg "Exiting after servicing 5 events" priority info
exit 0
}
 
incr i
 
event_completion status 0
 
array set _event_state_arr [event_wait refresh_vars 0]
 
if {$_event_state_arr(event_state) != 0} {
action_syslog msg "Exiting: failed event_state " \
" $event_state_arr(event_state)" priority info
exit 0
}
}
 
 

次に、実行コンフィギュレーションの例を示します。

Router#
01:00:44: %SYS-5-CONFIG_I: Configured from console by consoleclear counters
Clear "show interface" counters on all interfaces [confirm]
Router#
01:00:49: %CLEAR-5-COUNTERS: Clear counter on all interfaces by console
01:00:49: %HA_EM-6-LOG: high_perf_example.tcl: event 1 serviced
Router#
Router#clear counters
Clear "show interface" counters on all interfaces [confirm]
Router#
Router#
01:00:53: %CLEAR-5-COUNTERS: Clear counter on all interfaces by console
01:00:53: %HA_EM-6-LOG: high_perf_example.tcl: event 2 serviced
Router#clear counters
Clear "show interface" counters on all interfaces [confirm]
Router#
Router#
01:00:56: %CLEAR-5-COUNTERS: Clear counter on all interfaces by console
01:00:56: %HA_EM-6-LOG: high_perf_example.tcl: event 3 serviced
Router#
Router#
Router#clear counters
Clear "show interface" counters on all interfaces [confirm]
Router#
01:00:59: %CLEAR-5-COUNTERS: Clear counter on all interfaces by console
Router#
01:00:59: %HA_EM-6-LOG: high_perf_example.tcl: event 4 serviced
01:00:59: %HA_EM-6-LOG: high_perf_example.tcl: Exiting after servicing 5 events
Router#
Router#
Router#copy tftp disk1:
Address or name of remote host [dirt]?
Source filename [user/eem_scripts/high_perf_example.tcl]?
Destination filename [high_perf_example.tcl]?
%Warning:There is a file already existing with this name
Do you want to over write? [confirm]
Accessing tftp://dirt/user/eem_scripts/high_perf_example.tcl...
Loading user/eem_scripts/high_perf_example.tcl from 192.0.2.19 (via FastEthernet0/0): !
[OK - 909 bytes]
 
909 bytes copied in 0.360 secs (2525 bytes/sec)
Router#
Router#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#no event manager policy high_perf_example.tcl
Router(config)#event manager po high_perf_example.tcl
Router(config)#end
Router#
Router#
Router#
Router#
01:02:19: %SYS-5-CONFIG_I: Configured from console by consoleclear counters
Clear "show interface" counters on all interfaces [confirm]
Router#
01:02:23: %CLEAR-5-COUNTERS: Clear counter on all interfaces by console
Router#
Router#
01:02:23: %HA_EM-6-LOG: high_perf_example.tcl: event 1 serviced
Router#
Router#clear counters
Clear "show interface" counters on all interfaces [confirm]
Router#
Router#
01:02:26: %CLEAR-5-COUNTERS: Clear counter on all interfaces by console
01:02:26: %HA_EM-6-LOG: high_perf_example.tcl: event 2 serviced
Router#
Router#clear counters
Clear "show interface" counters on all interfaces [confirm]
Router#
Router#
01:02:29: %CLEAR-5-COUNTERS: Clear counter on all interfaces by console
01:02:29: %HA_EM-6-LOG: high_perf_example.tcl: event 3 serviced
Router#
Router#clear counters
Clear "show interface" counters on all interfaces [confirm]
Router#
Router#
01:02:33: %CLEAR-5-COUNTERS: Clear counter on all interfaces by console
Router#
01:02:33: %HA_EM-6-LOG: high_perf_example.tcl: event 4 serviced
Router#
Router#clear counters
Clear "show interface" counters on all interfaces [confirm]
Router#
Router#
Router#
01:02:36: %CLEAR-5-COUNTERS: Clear counter on all interfaces by console
01:02:36: %HA_EM-6-LOG: high_perf_example.tcl: event 5 serviced
01:02:36: %HA_EM-6-LOG: high_perf_example.tcl: Exiting after servicing 5 events
Router#
 
 

また、イベントがサービスされ、次のイベントの到着を待っている間に、 show event manager policy active コマンドによって、次の出力が表示されます。

 
Router#show event manager policy active
Key: p - Priority :L - Low, H - High, N - Normal, Z - Last
s - Scheduling node :A - Active, S - Standby
 
default class - 1 script event
no. job id p s status time of event event type name
1 11 N A wait Mon Oct20 14:15:24 2008 syslog high_perf_example.tcl
 
 
 

前述の例では、ステータスは待ち状態です。これは、ポリシーが次のイベントの到着を待っていることを示します。

EEM の複数イベントがサポートされる Tcl コマンド拡張

「trigger」

「correlate」

「attribute」

trigger

Embedded Event Manager(EEM)イベントの複数イベントの設定機能を指定します。複数イベントは、1 つまたは複数のイベント発生、1 つまたは複数のトラックされるオブジェクト状態、および発生するイベントの時間を起動できるイベントです。イベントは指定されたパラメータに基づいて発生します。

構文

trigger [occurs ?] [period ?] [period-start ?] [delay ?]

引数

occurs

(任意)EEM イベントが発生する前に発生した合計相関回数を指定します。数が指定されない場合、EEM イベントは 1 回目から発生します。範囲は 1 ~ 4294967295 です。

period

(任意)1 つまたは複数が発生する必要がある間の、秒単位、および、任意でミリ秒単位での、時間の間隔。これは、ssssssssss[.mmm] 形式で指定します。ssssssssss は、0 ~ 4294967295 の秒数を表す整数で、mmm は 0 ~ 999 のミリ秒数を表す整数である必要があります。

period-start

(任意)イベント相関ウィンドウの開始を指定します。指定されない場合、最初の CRON 期間の発生後、イベント監視はイネーブルにされます。

delay

(任意)すべての条件が真の場合にイベントの発生後の秒数とミリ秒数(任意)を指定します(ssssssssss[.mmm] 形式で指定します。ssssssssss は、0 ~ 4294967295 の秒数を表す整数で、mmm は 0 ~ 999 のミリ秒数を表す整数である必要があります)。

結果文字列

なし

Set _cerrno

なし

correlate

イベントおよびトラックされるオブジェクトに関連する、1 つの複雑なイベントを構築し、ブール値のロジックを使用します。

構文

correlate event ? track ? [andnot | and | or] event ? track ?

引数

event

スクリプト内で複数のイベント文をサポートするために、 trigger コマンドで使用できるイベントを指定します。

event-tag 引数に関連付けられているイベントが、 trigger コマンドによって指定されて何度も発生する場合、結果は真です。これ以外の場合、結果は偽です。

track

トラックするイベント オブジェクト番号を指定します。値の範囲は 1 ~ 500 です。

トラックされるオブジェクトが設定されている場合、評価の結果は真です。トラックされるオブジェクトが未設定または未定義の場合、評価の結果は偽です。この結果は、オブジェクトの状態には関係ありません。

andnot

(任意)イベント 1 が発生した場合にアクションが実行され、さらに、イベント 2 およびイベント 3 が一緒に発生した場合にはアクションが実行されないよう、指定します。

and

(任意)イベント 1 が発生した場合にアクションが実行され、さらに、イベント 2 およびイベント 3 が一緒に発生した場合にアクションが実行されるよう、指定します。

or

(任意)イベント 1 が発生した場合にアクションが実行されるか、または、イベント 2 およびイベント 3 が一緒に発生した場合にアクションが実行されるよう、指定します。

結果文字列

なし

Set _cerrno

なし

attribute

複雑なイベントを指定します。

構文

attribute tag ? [occurs ?]

引数

tag

イベントを関連付けるために attribute コマンドで使用できる event-tag 引数を使用して、タグを指定します。

occurs

(任意)EEM イベントがトリガーされる前の発生数を指定します。指定されない場合、EEM イベントは 1 回目から発生します。範囲は 1 ~ 4294967295 です。

結果文字列

なし

Set _cerrno

なし

action_policy

Tcl スクリプトで、None イベント ディテクタで登録された Embedded Event Manager(EEM)ポリシーを実行できるようにします。EEM ポリシーを実行するアクションは、 event manager run コマンドを使用して実行することもできます。

構文

action_policy ?

引数

?(文字列を表す)

(必須)実行がスケジュールされる EEM ポリシーの名前。ポリシーは、None イベント ディテクタを使用して事前に登録しておく必要があります。

なし

結果文字列

なし

Set _cerrno

あり

(_cerr_sub_err = 2) FH_ESYSERR (generic/unknown error from OS/system)
 

このエラーは、オペレーティング システムによってレポートされたエラーを意味します。エラーとともにレポートされる POSIX errno 値を使用して、オペレーティング システム エラーの原因を調べます。

(_cerr_sub_err = 12) FH_ENOSUCHEID (unknown event ID)
 

このエラーは、ポリシーが登録されていないため、未知であることを意味します。

(_cerr_sub_err = 14) FH_ENOSUCHACTION (unknown action type)
 

このエラーは、要求されたアクション コマンドが未知であることを示します。

action_process

ソフトウェア モジュール方式プロセスを起動、再起動、または停止します。この Tcl コマンド拡張は、ソフトウェア モジュール方式イメージでのみサポートされます。

構文

action_process start|restart|kill [job_id ?]
[process_name ?] [instance ?]

引数

start

(必須)プロセスが起動されるよう指定します。

restart

(必須)プロセスが再起動されるよう指定します。

kill

(必須)プロセスが停止されるよう指定します。

job_id

(任意)システム マネージャによってプロセスに割り当てられるジョブ ID。この引数を指定する場合、1 ~ 4294967295 の範囲の整数である必要があります。

process_name

(任意)プロセス名。job_id を指定するか、または、process_name および instance を指定する必要があります。

instance

(任意)プロセス インスタンス ID。この引数を指定する場合、1 ~ 4294967295 の範囲の整数である必要があります。

結果文字列

なし

Set _cerrno

あり

(_cerr_sub_err = 14) FH_ENOSUCHACTION (unknown action type)
 

このエラーは、要求されたアクション コマンドが未知であることを示します。

(_cerr_sub_num = 425, _cerr_sub_err = 1) SYSMGR_ERROR_INVALID_ARGS (Invalid arguments passed)
 

このエラーは、渡された引数が無効であったことを意味します。

(_cerr_sub_num = 425, _cerr_sub_err = 2) SYSMGR_ERROR_NO_MEMORY (Could not allocate required memory)
 

このエラーは、メモリの内部 SYSMGR 要求に障害が発生したことを意味します。

(_cerr_sub_num = 425, _cerr_sub_err = 5) SYSMGR_ERROR_NO_MATCH (This process is not known to sysmgr)
 

このエラーは、プロセス名が未知であったことを意味します。

(_cerr_sub_num = 425, _cerr_sub_err = 14) SYSMGR_ERROR_TOO_BIG (outside the valid limit)
 

このエラーは、オブジェクト サイズがその最大値を超えたことを意味します。

(_cerr_sub_num = 425, _cerr_sub_err = 15) SYSMGR_ERROR_INVALID_OP (Invalid operation for this process)
 

このエラーは、その動作がプロセスに対して無効であったことを意味します。

action_program

Tcl スクリプトで、POSIX プロセス(プログラム)を実行できるようにします。任意で、該当する引数文字列、環境文字列、標準入力(stdin)パス名、標準出力(stdout)パス名、または標準エラー(stderr)パス名を使用します。この Tcl コマンド拡張は、ソフトウェア モジュール方式イメージでのみサポートされます。

構文

action_program path ? [argv ?] [envp ?] [stdin ?] [stdout ?] [stderr ?]

引数

path

(必須)実行するプログラムのパス名。

argv

(任意)プログラムの引数文字列。

envp

(任意)プログラムの環境文字列。

stdin

(任意)stdin のパス名。

stdout

(任意)stdout のパス名。

stderr

(任意)stderr のパス名。

結果文字列

なし

Set _cerrno

あり

(_cerr_sub_err = 2) FH_ESYSERR (generic/unknown error from OS/system)
 

このエラーは、オペレーティング システムによってレポートされたエラーを意味します。エラーとともにレポートされる POSIX errno 値を使用して、オペレーティング システム エラーの原因を調べます。

(_cerr_sub_err = 14) FH_ENOSUCHACTION (unknown action type)
 

このエラーは、要求されたアクション コマンドが未知であることを示します。

(_cerr_sub_err = 34) FH_EMAXLEN (maximum length exceeded)
 

このエラーは、オブジェクト長またはオブジェクト数が、最大値を超えたことを意味します。

action_reload

ルータをリロードします。

構文

action_reload

引数

なし

結果文字列

なし

Set _cerrno

あり

(_cerr_sub_err = 2) FH_ESYSERR (generic/unknown error from OS/system)
 

このエラーは、オペレーティング システムによってレポートされたエラーを意味します。エラーとともにレポートされる POSIX errno 値を使用して、オペレーティング システム エラーの原因を調べます。

(_cerr_sub_err = 14) FH_ENOSUCHACTION (unknown action type)
 

このエラーは、要求されたアクション コマンドが未知であることを示します。

action_script

Tcl スクリプトで、すべての Tcl スクリプトの実行をイネーブルまたはディセーブルにします(スクリプト スケジューラをイネーブルまたはディセーブルにします)。

構文

action_script [status enable|disable]

Arguments

status

(任意)スクリプト実行ステータスを示すフラグ。この引数がイネーブルに設定されている場合、スクリプト実行がイネーブルにされます。この引数がディセーブルに設定されている場合、スクリプト実行がディセーブルにされます。

結果文字列

なし

Set _cerrno

あり

(_cerr_sub_err = 2) FH_ESYSERR (generic/unknown error from OS/system)
 

このエラーは、オペレーティング システムによってレポートされたエラーを意味します。エラーとともにレポートされる POSIX errno 値を使用して、オペレーティング システム エラーの原因を調べます。

(_cerr_sub_err = 14) FH_ENOSUCHACTION (unknown action type)
 

このエラーは、要求されたアクション コマンドが未知であることを示します。

(_cerr_sub_err = 52) FH_ECONFIG (configuration error)
 

このエラーは、設定エラーが発生したことを意味します。

action_snmp_trap

Embedded Event Manager Notification MIB を使用して簡易ネットワーク管理プロトコル(SNMP)トラップを送信します。

構文

action_snmp_trap [intdata1 ?] [intdata2 ?] [strdata ?]

引数

intdata1

(任意)トラップで送信される任意の整数。

intdata2

(任意)トラップで送信される任意の整数。

strdata

(任意)トラップで送信される任意の文字列データ。

結果文字列

なし

Set _cerrno

あり

(_cerr_sub_err = 2) FH_ESYSERR (generic/unknown error from OS/system)
 

このエラーは、オペレーティング システムによってレポートされたエラーを意味します。エラーとともにレポートされる POSIX errno 値を使用して、オペレーティング システム エラーの原因を調べます。

(_cerr_sub_err = 14) FH_ENOSUCHACTION (unknown action type)
 

このエラーは、要求されたアクション コマンドが未知であることを示します。

action_snmp _object_value

SNMP get 要求で返される簡易ネットワーク管理プロトコル(SNMP)オブジェクト ID および値を設定します。

構文

action_snmp_object_value {int|uint|counter|gauge|ipv4|octet|counter64|string} ?
[next_oid ?]

引数

int

管理対象オブジェクトのコンテキスト内の番号が付けられたタイプを指定する場合は、32 ビットの数字が使用されます。

uint

10 進数の値を表す 32 ビット番号。

counter

最小値が 0 の 32 ビットの数値。

gauge

最小値が 0 の 32 ビットの数値。

ipv4

IP バージョン 4 アドレス。

octet

物理アドレスを表すために使用される、16 進表記のオクテット文字列。

counter 64

最小値が 0 の 64 ビットの数値。

string

テキスト文字列を表すために使用される、テキスト表記のオクテット文字列。

next_oid

テールブルにある次のオブジェクトの OID。テーブルの最後のオブジェクトの場合は NULL です。

結果文字列

なし

Set _cerrno

あり

action_switch

完全冗長環境でセカンダリ プロセッサで処理するよう切り替えます。 action_switch Tcl コマンド拡張を使用する前に、デバイスでバックアップ プロセッサをインストールする必要があります。ハードウェアが完全冗長ではない場合、切り替えアクションは実行されません。

構文

action_switch

引数

なし

結果文字列

なし

Set _cerrno

あり

(_cerr_sub_err = 2) FH_ESYSERR (generic/unknown error from OS/system)
 

このエラーは、オペレーティング システムによってレポートされたエラーを意味します。エラーとともにレポートされる POSIX errno 値を使用して、オペレーティング システム エラーの原因を調べます。

(_cerr_sub_err = 14) FH_ENOSUCHACTION (unknown action type)
 

このエラーは、要求されたアクション コマンドが未知であることを示します。

action_syslog

EEM スクリプトがトリガーされるときに、指定された機能を使用して定期的な Syslog メッセージを生成します。

構文

action_syslog [priority emerg|alert|crit|err|warning|notice|info|debug]
[msg ?] [facility ?]

引数

priority

(任意)action_syslog メッセージ ファシリティ レベル。この引数が指定されない場合、デフォルトのプライオリティは LOG_INFO です。

msg

(任意)記録されるメッセージ。

facility

(任意)Syslog の機能。

結果文字列

なし

Set _cerrno

あり

action_track_read

Embedded Event Manager(EEM)スクリプトがトリガーされるときにトラックされるオブジェクトの状態を読み取ります。

構文

action_track_read ?

引数

?(番号を表す)

(必須)1 から 500 の範囲でトラックされるオブジェクト番号。

結果文字列

number {%u}
state {%s}

Set _cerrno

あり

FH_ENOTRACK
 

このエラーは、トラックされるオブジェクト番号が見つからなかったことを意味します。

action_track_set

Embedded Event Manager(EEM)スクリプトがトリガーされるときにトラックされるオブジェクトの状態を設定します。

構文

action_track_set ? state up|down

引数

?(番号を表す)

(必須)1 から 500 の範囲でトラックされるオブジェクト番号。

state

(必須)トラックされるオブジェクトの状態が設定されるよう指定します。up と指定されている場合、トラックされているオブジェクトの状態はアップです。down と指定されている場合、トラックされているオブジェクトの状態はダウンです。

結果文字列

なし

Set _cerrno

あり

FH_ENOTRACK
 

このエラーは、トラックされるオブジェクト番号が見つからなかったことを意味します。

appl_read

Embedded Event Manager(EEM)アプリケーションの揮発性データ この Tcl コマンド拡張では、EEM アプリケーションの揮発性データの読み取りがサポートされます。EEM アプリケーションの揮発性データは、API をパブリッシュする EEM アプリケーションが使用される Cisco IOS ソフトウェア プロセスによってパブリッシュすることができます。EEM アプリケーションの揮発性データは、EEM ポリシーによってパブリッシュすることはできません。


) 現在、アプリケーション揮発性データをパブリッシュする Cisco IOS ソフトウェアはありません。


構文

appl_read name ? length ?

引数

name

(必須)アプリケーションによってパブリッシュされる文字列データの名前。

length

(必須)読み取る文字列データの長さ。1 ~ 4294967295 の範囲の整数である必要があります。

結果文字列

data %s
 

data は、読み取られる、アプリケーションによってパブリッシュされた文字列データです。

Set _cerrno

あり

(_cerr_sub_err = 2) FH_ESYSERR (generic/unknown error from OS/system)
 

このエラーは、オペレーティング システムによってレポートされたエラーを意味します。エラーとともにレポートされる POSIX errno 値を使用して、オペレーティング システム エラーの原因を調べます。

(_cerr_sub_err = 7) FH_ENOSUCHKEY (could not find key)
 

このエラーは、アプリケーション イベント検出情報キーまたはその他の ID が見つからなかったことを意味します。

(_cerr_sub_err = 9) FH_EMEMORY (insufficient memory for request)
 

このエラーは、メモリの内部 EEM 要求に障害が発生したことを意味します。

appl_reqinfo

Embedded Event Manager(EEM)から、前に保存された情報が取得されます。この Tcl コマンド拡張によって、一意のキーで前に保存された EEM からの情報の取得がサポートされます。これは、情報を取得するために指定する必要があります。情報の取得によって、その情報が EEM から削除されることに、注意してください。再度取得できるようにするには、再保存する必要があります。

構文

appl_reqinfo key ?

引数

key

(必須)データの文字列キー。

結果文字列

data %s
 

data は、取得されるアプリケーション文字列データです。

Set _cerrno

あり

(_cerr_sub_err = 2) FH_ESYSERR (generic/unknown error from OS/system)
 

このエラーは、オペレーティング システムによってレポートされたエラーを意味します。エラーとともにレポートされる POSIX errno 値を使用して、オペレーティング システム エラーの原因を調べます。

(_cerr_sub_err = 7) FH_ENOSUCHKEY (could not find key)
 

このエラーは、アプリケーション イベント検出情報キーまたはその他の ID が見つからなかったことを意味します。

appl_setinfo

Embedded Event Manager(EEM)に情報を保存します。この Tcl コマンド拡張によって、同じポリシーまたは別のポリシーによって、後で取得できる Embedded Event Manager への情報の保存がサポートされます。一意のキーを指定する必要があります。このキーを使用すると、情報を後で取得することができます。

構文

appl_setinfo key ? data ?

引数

key

(必須)データの文字列キー。

data

(必須)保存するアプリケーション文字列 データ。

結果文字列

なし

Set _cerrno

あり

(_cerr_sub_err = 2) FH_ESYSERR (generic/unknown error from OS/system)
 

このエラーは、オペレーティング システムによってレポートされたエラーを意味します。エラーとともにレポートされる POSIX errno 値を使用して、オペレーティング システム エラーの原因を調べます。

(_cerr_sub_err = 8) FH_EDUPLICATEKEY (duplicate appl info key)
 

このエラーは、アプリケーション イベント検出情報キーまたはその他の ID が重複していたことを意味します。

(_cerr_sub_err = 9) FH_EMEMORY (insufficient memory for request)
 

このエラーは、メモリの内部 EEM 要求に障害が発生したことを意味します。

(_cerr_sub_err = 34) FH_EMAXLEN (maximum length exceeded)
 

このエラーは、オブジェクト長またはオブジェクト数が、最大値を超えたことを意味します。

(_cerr_sub_err = 43) FH_EBADLENGTH (bad API length)
 

このエラーは、API メッセージ長が無効であったことを意味します。

counter_modify

カウンタの値を変更します。

構文

counter_modify event_id ? val ? op nop|set|inc|dec

引数

event_id

(必須) register_counter Tcl コマンド拡張によって返されるカウンタ イベント ID。0 ~ 4294967295 の範囲の整数である必要があります。

val

(必須)

(注) op nop 引数値の組み合わせが指定されている以外は必須です。

op が設定されている場合、この引数は、設定されるカウンタ値を表します。

op が inc の場合、この引数は、カウンタを増やすために使用される値です。

op が dec の場合、この引数は、カウンタを減らすために使用される値です。

op

(必須)

nop:現在のカウンタの値を取得します。

set:カウンタの値を指定値に設定します。

inc:カウンタの値を指定値分増やします。

dec:カウンタの値を指定値分減らします。

結果文字列

val_remain %d
 

val_remain は、カウンタの現在の値です。

Set _cerrno

あり

(_cerr_sub_err = 2) FH_ESYSERR (generic/unknown error from OS/system)
 

このエラーは、オペレーティング システムによってレポートされたエラーを意味します。エラーとともにレポートされる POSIX errno 値を使用して、オペレーティング システム エラーの原因を調べます。

(_cerr_sub_err = 11) FH_ENOSUCHESID (unknown event specification ID)
 

このエラーは、イベントが登録されたときか、またはイベント ディテクタの内部イベント構造が破損したときに、イベント指定 ID を照会できないことを意味します。

(_cerr_sub_err = 22) FH_ENULLPTR (event detector internal error - ptr is null)
 

このエラーは、内部 EEM イベント ディテクタ ポインタが、含まれたデータである必要があるときに、ヌルであったことを意味します。

(_cerr_sub_err = 30) FH_ECTBADOPER (bad counter threshold operator)
 

このエラーは、カウンタ イベント ディテクタの設定演算子または変更演算子が、無効であったことを意味します。

description

記録されたポリシーの簡単な説明を記述します。

構文

description ?

引数

line

(任意)1 文字から 240 文字で構成されるポリシーの簡単な説明。

結果文字列

なし

Set _cerrno

あり

使用例

説明文は、ポリシーの作成者によって入力されます。Tcl のイベント登録文の前または後に表示できます。ポリシーには、1 つの説明のみ使用できます。


) 1 つのポリシーに複数の説明文を登録した場合、障害が発生します。


次に、 event_register_syslog ポリシーに簡単な説明が指定される例を示します。

::cisco::eem::description “This Tcl command looks for the word count in syslog messages.”
::cisco::eem::event_register_syslog tag 1 ...
::cisco::eem::event_register_snmp_object tag 2 ...
::cisco::eem::trigger
::cisco::eem::correlate event 1 and event 2
::cisco::eem::attribute tag 1 occurs 1
::cisco::eem::attribute tag 2 occurs 1

fts_get_stamp

最後にソフトウェアがブートされて以来の経過時間を返します。この Tcl コマンド拡張を使用すると、配列 nsec nnnn に、ブート以降のナノ秒数が返されます。nnnn は、ナノ秒数です。

構文

fts_get_stamp

引数

なし

結果文字列

nsec %d
 

nsec は、ブート以降のナノ秒数です。

Set _cerrno

なし

register_counter

カウンタを登録し、カウンタ イベント ID を返します。この Tcl コマンド拡張は、カウンタのパブリッシャによって使用され、イベント ID を使用してカウンタを操作する前に、この登録が実行されます。

構文

register_counter name ?

引数

name

(必須)操作されるカウンタの名前。

結果文字列

event_id %d
event_spec_id %d
 

event_id は、指定されたカウンタのカウンタ イベント ID です。 unregister_counter Tcl コマンド拡張または counter_modify Tcl コマンド拡張によって、カウンタの操作に使用されます。event_spec_id 引数は、指定されたカウンタのイベント指定 ID です。

Set _cerrno

あり

(_cerr_sub_err = 2) FH_ESYSERR (generic/unknown error from OS/system)
 

このエラーは、オペレーティング システムによってレポートされたエラーを意味します。エラーとともにレポートされる POSIX errno 値を使用して、オペレーティング システム エラーの原因を調べます。

(_cerr_sub_err = 4) FH_EINITONCE (Init() is not yet done, or done twice.)
 

このエラーは、EEM イベント ディテクタがその初期化を完了する前に、特定のイベントを登録する要求が行われたことを意味します。

(_cerr_sub_err = 6) FH_EBADEVENTTYPE (unknown EEM event type)
 

このエラーは、内部イベント指定で指定されたイベント タイプが無効であることを意味します。

(_cerr_sub_err = 9) FH_EMEMORY (insufficient memory for request)
 

このエラーは、メモリの内部 EEM 要求に障害が発生したことを意味します。

(_cerr_sub_err = 10) FH_ECORRUPT (internal EEM API context is corrupt)
 

このエラーは、内部 EEM API コンテキスト構造が破損したことを意味します。

(_cerr_sub_err = 11) FH_ENOSUCHESID (unknown event specification ID)
 

このエラーは、イベントが登録されたときか、またはイベント ディテクタの内部イベント構造が破損したときに、イベント指定 ID を照会できないことを意味します。

(_cerr_sub_err = 12) FH_ENOSUCHEID (unknown event ID)
 

このエラーは、イベントが登録されたときか、またはイベント ディテクタの内部イベント構造が破損したときに、イベント ID を照会できないことを意味します。

(_cerr_sub_err = 16) FH_EBADFMPPTR (bad ptr to fh_p data structure)
 

このエラーは、各 EEM API コールで使用されるコンテキスト ポインタが不正確であったことを意味します。

(_cerr_sub_err = 17) FH_EBADADDRESS (bad API control block address)
 

このエラーは、EEM API に渡された制御ブロック アドレスが不正確であったことを意味します。

(_cerr_sub_err = 22) FH_ENULLPTR (event detector internal error - ptr is null)
 

このエラーは、内部 EEM イベント ディテクタ ポインタが、含まれたデータである必要があるときに、ヌルであったことを意味します。

(_cerr_sub_err = 25) FH_ESUBSEXCEED (number of subscribers exceeded)
 

このエラーは、タイマーまたはカウンタのサブスクライバの数が、最大値を超えたことを意味します。

(_cerr_sub_err = 26) FH_ESUBSIDXINV (invalid subscriber index)
 

これは、サブスクライバの索引が無効であったことを意味します。

(_cerr_sub_err = 54) FH_EFDUNAVAIL (connection to event detector unavailable)
 

このエラーは、イベント ディテクタが使用できなかったことを意味します。

(_cerr_sub_err = 56) FH_EFDCONNERR (event detector connection error)
 

このエラーは、この要求を処理する EEM イベント ディテクタは使用できないことを意味します。

register_timer

タイマーを登録し、タイマー イベント ID を返します。この Tcl コマンド拡張は、カウンタのパブリッシャによって使用され、パブリッシャまたはサブスクライバとしての登録に、 event_register_timer コマンド拡張が使用されなかった場合に、イベント ID を使用してタイマーを操作する前に、この登録が実行されます。

構文

register_timer watchdog|countdown|absolute|cron name ?

引数

name

(必須)操作されるタイマーの名前。

結果文字列

event_id %u
 

event_id は、指定されたタイマーのタイマー イベント ID です( timer_arm コマンド拡張または timer_cancel コマンド拡張によってタイマーの操作に使用できます)。

Set _cerrno

あり

(_cerr_sub_err = 2) FH_ESYSERR (generic/unknown error from OS/system)
 

このエラーは、オペレーティング システムによってレポートされたエラーを意味します。エラーとともにレポートされる POSIX errno 値を使用して、オペレーティング システム エラーの原因を調べます。

(_cerr_sub_err = 4) FH_EINITONCE (Init() is not yet done, or done twice.)
 

このエラーは、EEM イベント ディテクタがその初期化を完了する前に、特定のイベントを登録する要求が行われたことを意味します。

(_cerr_sub_err = 6) FH_EBADEVENTTYPE (unknown EEM event type)
 

このエラーは、内部イベント指定で指定されたイベント タイプが無効であることを意味します。

(_cerr_sub_err = 9) FH_EMEMORY (insufficient memory for request)
 

このエラーは、メモリの内部 EEM 要求に障害が発生したことを意味します。

(_cerr_sub_err = 10) FH_ECORRUPT (internal EEM API context is corrupt)
 

このエラーは、内部 EEM API コンテキスト構造が破損したことを意味します。

(_cerr_sub_err = 11) FH_ENOSUCHESID (unknown event specification ID)
 

このエラーは、イベントが登録されたときか、またはイベント ディテクタの内部イベント構造が破損したときに、イベント指定 ID を照会できないことを意味します。

(_cerr_sub_err = 16) FH_EBADFMPPTR (bad ptr to fh_p data structure)
 

このエラーは、各 EEM API コールで使用されるコンテキスト ポインタが不正確であったことを意味します。

(_cerr_sub_err = 17) FH_EBADADDRESS (bad API control block address)
 

このエラーは、EEM API に渡された制御ブロック アドレスが不正確であったことを意味します。

 
(_cerr_sub_err = 22) FH_ENULLPTR (event detector internal error - ptr is null)
 

このエラーは、内部 EEM イベント ディテクタ ポインタが、含まれたデータである必要があるときに、ヌルであったことを意味します。

(_cerr_sub_err = 25) FH_ESUBSEXCEED (number of subscribers exceeded)
 

このエラーは、タイマーまたはカウンタのサブスクライバの数が、最大値を超えたことを意味します。

(_cerr_sub_err = 26) FH_ESUBSIDXINV (invalid subscriber index)
 

これは、サブスクライバの索引が無効であったことを意味します。

(_cerr_sub_err = 54) FH_EFDUNAVAIL (connection to event detector unavailable)
 

このエラーは、イベント ディテクタが使用できなかったことを意味します。

(_cerr_sub_err = 56) FH_EFDCONNERR (event detector connection error)
 

このエラーは、この要求を処理する EEM イベント ディテクタは使用できないことを意味します。

timer_arm

タイマーを搭載します。タイプは、CRON、ウォッチドッグ、カウントダウン、または絶対の場合があります。

構文

timer_arm event_id ? cron_entry ?|time ?

引数

event_id

(必須) register_timer Tcl コマンド拡張によって返されるタイマー イベント ID。0 ~ 4294967295 の範囲の整数である必要があります。

cron_entry

(必須)タイマー タイプが CRON の場合に存在する必要があります。他のタイプのタイマーの場合には、存在させることはできません。CRON タイマー指定によって、CRON テーブル エントリの形式が使用されます。

time

(必須)タイマー タイプが CRON ではない場合に存在する必要があります。タイマー タイプが CRON の場合には、存在できません。ウォッチドッグ タイマーおよびカウントダウン タイマーでは、タイマーの期限が切れるまでの秒数およびミリ秒数です。絶対タイマーでは、期限切れ時刻のカレンダー時間です(SSSSSSSSSS[.MMM] 形式で指定します。SSSSSSSSSS は、0 ~ 4294967295 の秒数を表す整数で、MMM は 0 ~ 999 のミリ秒数を表す整数である必要があります)。期限の絶対日付は、1970 年 1 月 1 日以降の秒およびミリ秒の単位での数です。指定された日付がすでに過ぎた場合、タイマーの期限はただちに切れます。

結果文字列

sec_remain %ld msec_remain %ld
 

sec_remain および msec_remain は、タイマーの次の期限切れまでの残り時間です。


) タイマー タイプが CRON の場合、sec_remain 引数および msec_remain 引数には 0 が返されます。


Set _cerrno

あり

(_cerr_sub_err = 2) FH_ESYSERR (generic/unknown error from OS/system)
 

このエラーは、オペレーティング システムによってレポートされたエラーを意味します。エラーとともにレポートされる POSIX errno 値を使用して、オペレーティング システム エラーの原因を調べます。

(_cerr_sub_err = 6) FH_EBADEVENTTYPE (unknown EEM event type)
 

このエラーは、内部イベント指定で指定されたイベント タイプが無効であることを意味します。

(_cerr_sub_err = 9) FH_EMEMORY (insufficient memory for request)
 

このエラーは、メモリの内部 EEM 要求に障害が発生したことを意味します。

(_cerr_sub_err = 11) FH_ENOSUCHESID (unknown event specification ID)
 

このエラーは、イベントが登録されたときか、またはイベント ディテクタの内部イベント構造が破損したときに、イベント指定 ID を照会できないことを意味します。

(_cerr_sub_err = 12) FH_ENOSUCHEID (unknown event ID)
 

このエラーは、イベントが登録されたときか、またはイベント ディテクタの内部イベント構造が破損したときに、イベント ID を照会できないことを意味します。

(_cerr_sub_err = 22) FH_ENULLPTR (event detector internal error - ptr is null)
 

このエラーは、内部 EEM イベント ディテクタ ポインタが、含まれたデータである必要があるときに、ヌルであったことを意味します。

(_cerr_sub_err = 27) FH_ETMDELAYZR (zero delay time)
 

このエラーは、タイマーの搭載に指定された時間がゼロであったことを意味します。

(_cerr_sub_err = 42) FH_ENOTREGISTERED (request for event spec that is unregistered)
 

このエラーは、イベント検出が登録できなかったことを意味します。

(_cerr_sub_err = 54) FH_EFDUNAVAIL (connection to event detector unavailable)
 

このエラーは、イベント ディテクタが使用できなかったことを意味します。

(_cerr_sub_err = 56) FH_EFDCONNERR (event detector connection error)
 

このエラーは、この要求を処理する EEM イベント ディテクタは使用できないことを意味します。

timer_cancel

タイマーを取り消します。

構文

timer_cancel event_id ?

引数

event_id

(必須) register_timer Tcl コマンド拡張によって返されるタイマー イベント ID。0 ~ 4294967295 の範囲の整数である必要があります。

結果文字列

sec_remain %ld msec_remain %ld
 

sec_remain および msec_remain は、タイマーの次の期限切れまでの残り時間です。


) タイマー タイプが CRON の場合、sec_remain および msec_remain には 0 が返されます。


Set _cerrno

あり

(_cerr_sub_err = 2) FH_ESYSERR (generic/unknown error from OS/system)
 

このエラーは、オペレーティング システムによってレポートされたエラーを意味します。エラーとともにレポートされる POSIX errno 値を使用して、オペレーティング システム エラーの原因を調べます。

(_cerr_sub_err = 6) FH_EBADEVENTTYPE (unknown EEM event type)
 

このエラーは、内部イベント指定で指定されたイベント タイプが無効であることを意味します。

(_cerr_sub_err = 7) FH_ENOSUCHKEY (could not find key)
 

このエラーは、アプリケーション イベント検出情報キーまたはその他の ID が見つからなかったことを意味します。

(_cerr_sub_err = 11) FH_ENOSUCHESID (unknown event specification ID)
 

このエラーは、イベントが登録されたときか、またはイベント ディテクタの内部イベント構造が破損したときに、イベント指定 ID を照会できないことを意味します。

(_cerr_sub_err = 12) FH_ENOSUCHEID (unknown event ID)
 

このエラーは、イベントが登録されたときか、またはイベント ディテクタの内部イベント構造が破損したときに、イベント ID を照会できないことを意味します。

(_cerr_sub_err = 22) FH_ENULLPTR (event detector internal error - ptr is null)
 

このエラーは、内部 EEM イベント ディテクタ ポインタが、含まれたデータである必要があるときに、ヌルであったことを意味します。

(_cerr_sub_err = 54) FH_EFDUNAVAIL (connection to event detector unavailable)
 

このエラーは、イベント ディテクタが使用できなかったことを意味します。

(_cerr_sub_err = 56) FH_EFDCONNERR (event detector connection error)
 

このエラーは、この要求を処理する EEM イベント ディテクタは使用できないことを意味します。

unregister_counter

カウンタの登録を解除します。この Tcl コマンド拡張は、カウンタのパブリッシャによって使用され、 register_counter コマンド拡張で前に登録されたカウンタの登録を解除します。

構文

unregister_counter event_id ? event_spec_id ?

引数

event_id

(必須) register_counter Tcl コマンド拡張によって返されるカウンタ イベント ID。0 ~ 4294967295 の範囲の整数である必要があります。

event_spec_id

(必須) register_counter コマンド拡張によって返された、指定されたカウンタのカウンタ イベント指定 ID。0 ~ 4294967295 の範囲の整数である必要があります。

結果文字列

なし

Set _cerrno

あり

(_cerr_sub_err = 2) FH_ESYSERR (generic/unknown error from OS/system)
 

このエラーは、オペレーティング システムによってレポートされたエラーを意味します。エラーとともにレポートされる POSIX errno 値を使用して、オペレーティング システム エラーの原因を調べます。

(_cerr_sub_err = 9) FH_EMEMORY (insufficient memory for request)
 

このエラーは、メモリの内部 EEM 要求に障害が発生したことを意味します。

(_cerr_sub_err = 11) FH_ENOSUCHESID (unknown event specification ID)
 

このエラーは、イベントが登録されたときか、またはイベント ディテクタの内部イベント構造が破損したときに、イベント指定 ID を照会できないことを意味します。

(_cerr_sub_err = 22) FH_ENULLPTR (event detector internal error - ptr is null)
 

このエラーは、内部 EEM イベント ディテクタ ポインタが、含まれたデータである必要があるときに、ヌルであったことを意味します。

(_cerr_sub_err = 26) FH_ESUBSIDXINV (invalid subscriber index)
 

これは、サブスクライバの索引が無効であったことを意味します。

(_cerr_sub_err = 54) FH_EFDUNAVAIL (connection to event detector unavailable)
 

このエラーは、イベント ディテクタが使用できなかったことを意味します。

(_cerr_sub_err = 56) FH_EFDCONNERR (event detector connection error)
 

このエラーは、この要求を処理する EEM イベント ディテクタは使用できないことを意味します。

EEM システム情報の Tcl コマンド拡張

「sys_reqinfo_cli_freq」

「sys_reqinfo_cli_history」

「sys_reqinfo_cpu_all」

「sys_reqinfo_crash_history」

「sys_reqinfo_mem_all」

「sys_reqinfo_proc」

「sys_reqinfo_proc_all」

「sys_reqinfo_routername」

「sys_reqinfo_snmp」

「sys_reqinfo_syslog_freq」

「sys_reqinfo_syslog_history」


) すべての EEM システム情報コマンド sys_reqinfo_xxx には、yes に設定された Set _cerrno セクションがあります。


sys_reqinfo_cli_freq

すべての Command-Line Interface(CLI; コマンドライン インターフェイス)イベントの頻度情報を問い合わせます。

構文

sys_reqinfo_cli_freq

引数

なし

結果文字列

rec_list {{CLI frequency string 0},{CLI frequency str 1}, ...}
 

各 CLI の頻度の文字列は、次のとおりです。

time_sec %ld time_msec %ld match_count %u raise_count %u occurs %u period_sec %ld
period_msec %ld pattern {%s}

 

rec_list

CLI イベント頻度リストの開始をマークします。

time_sec
time_msec

この CLI イベントが発生した最後の時刻。

match count

CLI イベントによって指定されたパターンが、CLI コマンドによって照会される回数。

raise_count

この CLI イベントが発生した回数。次のフィールドは、CLI イベント指定に関する情報です。

sync:yes は、イベント パブリッシュが同期的に実行される必要があることを意味します。Event Manager Server がイベントのパブリッシュを完了したときに、イベント ディテクタが通知されます。Event Manager Server は、CLI コマンドが実行される必要があるかどうかを示すコードを返します。

skip:yes は、sync フラグが設定されているときに、CLI コマンドは実行してはいけないことを意味します。

occurs

イベントが発生する前の発生回数。この引数が指定されない場合、イベントは 1 回目から発生します。

period_sec
period_msec

イベントを発生させるには、発生回数が POSIX タイマー ユニットのこの数以内である必要があります。この引数が指定されない場合は、適用されません。

pattern

CLI コマンドのパターン マッチの実行に使用される正規表現。

Set _cerrno

あり

sys_reqinfo_cli_history

コマンドライン インターフェイス(CLI)コマンドの履歴を問い合わせます。

構文

sys_reqinfo_cli_history

引数

なし

結果文字列

rec_list {{CLI history string 0}, {CLI history str 1},...}
 

各 CLI の履歴の文字列は、次のとおりです。

time_sec %ld time_msec %ld cmd {%s}

rec_list

CLI コマンド履歴リストの開始をマークします。

time_sec
time_msec

CLI コマンドを実行した時間。

cmd

CLI コマンドのテキスト。

Set _cerrno

あり

sys_reqinfo_cpu_all

指定された期間で、指定された順序で、上位プロセスの CPU 使用率(POSIX プロセスと IOS プロセスの両方)を問い合わせます。この Tcl コマンド拡張は、ソフトウェア モジュール方式イメージでのみサポートされます。

構文

sys_reqinfo_cpu_all order cpu_used [sec ?] [msec ?] [num ?]

引数

order

(必須)プロセスの CPU 使用率のソートに使用される順序。

cpu_used

(必須)指定されたウィンドウの、CPU 使用率の平均が、降順でソートされるよう、指定します。

sec
msec

(任意)CPU 使用率の平均が計算される、秒単位およびミリ秒単位での、時間。0 から 4294967295 の範囲の整数である必要があります。指定されない場合か、または、sec と msec の両方が 0 と指定される場合、最新の CPU サンプルが使用されます。

num

(任意)表示される、ソートされたプロセスのリストの上位からのエントリの数。1 ~ 4294967295 の範囲の整数である必要があります。デフォルト値は 5 です。

結果文字列

rec_list {{process CPU info string 0},{process CPU info string 1}, ...}
 

各プロセスの CPU 情報文字列は、次のとおりです。

pid %u name {%s} cpu_used %u

 

rec_list

プロセス CPU 情報リストの開始をマークします。

pid

プロセス ID。

name

プロセス名。

cpu_used

sec と msec が、ゼロよりも大きい数で指定される場合、平均パーセンテージは、指定された時間のプロセス CPU 使用率から計算されるよう、指定します。sec と msec が、両方ともゼロか、または指定されない場合。平均パーセンテージは、最新のサンプルのプロセス CPU 使用率から計算されます。

Set _cerrno

あり

sys_reqinfo_crash_history

クラッシュしたすべてのプロセスのプロセス情報を問い合わせます。この Tcl コマンド拡張は、ソフトウェア モジュール方式イメージでのみサポートされます。

構文

sys_reqinfo_crash_history

引数

なし

結果文字列

rec_list {{crash info string 0},{crash info string 1}, ...}
 
各クラッシュ情報文字列は、次のとおりです。
 
job_id %u name {%s} respawn_count %u fail_count %u dump_count %u
inst_id %d exit_status 0x%x exit_type %d proc_state {%s} component_id 0x%x
crash_time_sec %ld crash_time_msec %ld

 

job_id

システム マネージャによってプロセスに割り当てられるジョブ ID。1 ~ 4294967295 の整数。

name

プロセス名。

respawn_count

プロセスの再起動の合計回数。

fail_count

プロセスの再起動試行の回数。プロセスが正常に再起動されると、このカウントはゼロにリセットされます。

dump_count

実行されたコア ダンプの回数。

inst_id

プロセス インスタンス ID。

exit_status

プロセスの最後の終了ステータス。

exit_type

最後の終了タイプ。

proc_state

Sysmgr プロセスの状態。error、forced_stop、hold、init、ready_to_run、run、run_rnode、stop、waitEOltimer、wait_rnode、wait_spawntimer、wait_tpl の 1 つです。

component_id

プロセスが属するコンポーネントのコンポーネント ID に割り当てられているバージョン マネージャ。

crash_time_sec
crash_time_msec

1970 年 1 月 1 日以降の秒およびミリ秒の単位で、プロセスがクラッシュした最後の時刻を表します。

Set _cerrno

あり

sys_reqinfo_mem_all

指定された期間で、指定された順序で、上位プロセスのメモリの使用状況(POSIX と IOS の両方)を問い合わせます。この Tcl コマンド拡張は、ソフトウェア モジュール方式イメージでのみサポートされます。

構文

sys_reqinfo_mem_all order allocates|increase|used [sec ?] [msec ?] [num ?]

引数

order

(必須)プロセスのメモリの使用状況のソートに使用される順序。

allocates

(必須)指定された時間ウィンドウの期間に、メモリの使用状況が、プロセス割り当ての数によって降順でソートされるよう、指定します。

increase

(必須)指定された時間ウィンドウの期間に、メモリの使用状況が、プロセスで増えたメモリのパーセンテージによって降順でソートされるよう、指定します。

used

(必須)メモリが、プロセスによって使用される現在のメモリによってソートされるよう、指定します。

sec
msec

(任意)プロセスでのメモリの使用状況が計算される、秒単位およびミリ秒単位での、時間。0 から 4294967295 の範囲の整数である必要があります。sec と msec の両方が指定され、ゼロではない場合、割り当て数は、該当する時間で収集された最も古いサンプルと最新のサンプルでの、割り当て数の差です。パーセンテージは、該当する時間で収集された最も古いサンプルと最新のサンプルでの、パーセンテージの差として計算されます。指定されない場合か、または、sec と msec の両方が 0 と指定される場合、収集された最初のサンプルが、最も古いサンプルとして使用されます。つまり、時間は、起動から現在時までの時間で設定されます。

num

(任意)表示される、ソートされたプロセスのリストの上位からのエントリの数。1 ~ 4294967295 の範囲の整数である必要があります。デフォルト値は 5 です。

結果文字列

rec_list {{process mem info string 0},{process mem info string 1}, ...}
 

各プロセスのメモリ情報文字列は、次のとおりです。

pid %u name {%s} delta_allocs %d initial_alloc %u current_alloc %u percent_increase %d

 

rec_list

プロセスのメモリの使用状況情報リストの開始をマークします。

pid

プロセス ID。

name

プロセス名。

delta_allocs

該当する期間で収集された、最も古いサンプルと最新のサンプルでの、割り当て数の差として、差を指定します。

initial_alloc

時間の開始時にプロセスによって使用される、キロバイト単位での、メモリの容量を指定します。

current_alloc

プロセスによって使用される、キロバイト単位での、メモリの容量を指定します。

percent_increase

該当する期間で収集された、最も古いサンプルと最新のサンプルで、使用されたメモリの差を、パーセンテージで指定します。パーセンテージの差は、current_alloc から initial_alloc の 100 を差し引いた数として、および、initial_alloc で割った数として、表すことができます。

Set _cerrno

あり

sys_reqinfo_proc

1 つの POSIX プロセスに関する情報を問い合わせます。この Tcl コマンド拡張は、ソフトウェア モジュール方式イメージでのみサポートされます。

構文

sys_reqinfo_proc job_id ?

引数

job_id

(必須)システム マネージャによってプロセスに割り当てられるジョブ ID。1 ~ 4294967295 の範囲の整数である必要があります。

結果文字列

job_id %u component_id 0x%x name {%s} helper_name {%s} helper_path {%s} path {%s}
node_name {%s} is_respawn %u is_mandatory %u is_hold %u dump_option %d
max_dump_count %u respawn_count %u fail_count %u dump_count %u
last_respawn_sec %ld last_respawn_msec %ld inst_id %u proc_state %s
level %d exit_status 0x%x exit_type %d

 

job_id

システム マネージャによってプロセスに割り当てられるジョブ ID。1 ~ 4294967295 の整数。

component_id

プロセスが属するコンポーネントのコンポーネント ID に割り当てられているバージョン マネージャ。

name

プロセス名。

helper_name

ヘルパー プロセスの名前。

helper_path

ヘルパー プロセスの実行可能パス。

path

プロセスの実行可能パス。

node_name

プロセスが属するノードのノード名に割り当てられているシステム マネージャ。

is_respawn

プロセスが再生成できることを指定するフラグ。

is_mandatory

プロセスが実行され続ける必要があることを指定するフラグ。

is_hold

API によって呼び出されるまでプロセスが再生成されることを指定するフラグ。

dump_option

コア ダンプのオプション。

max_dump_count

許可されるコア ダンプの最大数。

respawn_count

プロセスの再起動の合計回数。

fail_count

プロセスの再起動試行の回数。プロセスが正常に再起動されると、このカウントはゼロにリセットされます。

dump_count

実行されたコア ダンプの回数。

last_respawn_sec
last_respawn_msec

1970 年 1 月 1 日以降の POSIX タイマー ユニットでの秒およびミリ秒の単位で、プロセスが開始された最後の時刻を表します。

inst_id

プロセス インスタンス ID。

proc_state

Sysmgr プロセスの状態。error、forced_stop、hold、init、ready_to_run、run、run_rnode、stop、waitEOltimer、wait_rnode、wait_spawntimer、wait_tpl の 1 つです。

level

プロセス実行レベル。

exit_status

プロセスの最後の終了ステータス。

exit_type

最後の終了タイプ。

Set _cerrno

あり

sys_reqinfo_proc_all

すべての POSIX プロセスの情報を問い合わせます。この Tcl コマンド拡張は、ソフトウェア モジュール方式イメージでのみサポートされます。

構文

sys_reqinfo_proc_all

引数

なし

結果文字列

rec_list {{process info string 0}, {process info string 1},...}
 

各プロセスの情報文字列は、 sysreq_info_proc Tcl コマンド拡張の結果文字列と同じです。

Set _cerrno

あり

sys_reqinfo_routername

ルータ名を問い合わせます。

構文

sys_reqinfo_routername

引数

なし

結果文字列

routername %s
 

routername は、ルータの名前です。

Set _cerrno

あり

sys_reqinfo_snmp

簡易ネットワーク管理プロトコル(SNMP)オブジェクト ID によって指定されたエンティティの値を問い合わせます。

構文

sys_reqinfo_snmp oid ? get_type exact|next

引数

oid

(必須)ドット付き表記での SNMP OID(たとえば、1.3.6.1.2.1.2.1.0)。

get_type

(必須)指定された OID に適用する必要がある SNMP 取得操作のタイプ。get_type が exact の場合、指定された OID の値が取得されます。get_type が next の場合、指定された OID の辞書順での後続値が取得されます。

結果文字列

oid {%s} value {%s}

 

oid

SNMP OID。

value

割り当てられた SNMP データ エレメントの値文字列。

Set _cerrno

あり

(_cerr_sub_err = 2) FH_ESYSERR (generic/unknown error from OS/system)
 

このエラーは、オペレーティング システムによってレポートされたエラーを意味します。エラーとともにレポートされる POSIX errno 値を使用して、オペレーティング システム エラーの原因を調べます。

(_cerr_sub_err = 22) FH_ENULLPTR (event detector internal error - ptr is null)
 

このエラーは、内部 EEM イベント ディテクタ ポインタが、含まれたデータである必要があるときに、ヌルであったことを意味します。

(_cerr_sub_err = 37) FH_ENOSNMPDATA (can't retrieve data from SNMP)
 

このエラーは、SNMP オブジェクト タイプのデータがなかったことを意味します。

(_cerr_sub_err = 51) FH_ESTATSTYP (invalid statistics data type)
 

このエラーは、SNMP 統計データ タイプが無効であったことを意味します。

(_cerr_sub_err = 54) FH_EFDUNAVAIL (connection to event detector unavailable)
 

このエラーは、イベント ディテクタが使用できなかったことを意味します。

sys_reqinfo_syslog_freq

すべての Syslog イベントの頻度情報を問い合わせます。

構文

sys_reqinfo_syslog_freq

引数

なし

結果文字列

rec_list {{event frequency string 0}, {log freq str 1}, ...}
 

各イベントの頻度の文字列は、次のとおりです。

time_sec %ld time_msec %ld match_count %u raise_count %u occurs %u
period_sec %ld period_msec %ld pattern {%s}

 

time_sec
time_msec

1970 年 1 月 1 日以降の POSIX タイマー ユニットでの秒およびミリ秒の単位で、最後のイベントが発生した時刻を表します。

match_count

イベントの登録以降、この Syslog イベント指定によって指定されたパターンが、Syslog メッセージによって照会される回数。

raise_count

この Syslog イベントが発生した回数。

occurs

イベントを発生させるために必要な発生回数。指定されない場合、イベントは 1 回目から発生します。

period_sec
period_msec

イベントを発生させるには、発生回数が POSIX タイマー ユニットのこの数以内である必要があります。この引数が指定されない場合、時間のチェックは適用されません。

pattern

Syslog メッセージのパターン マッチの実行に使用される正規表現。

Set _cerrno

あり

(_cerr_sub_err = 2) FH_ESYSERR (generic/unknown error from OS/system)
 

このエラーは、オペレーティング システムによってレポートされたエラーを意味します。エラーとともにレポートされる POSIX errno 値を使用して、オペレーティング システム エラーの原因を調べます。

(_cerr_sub_err = 9) FH_EMEMORY (insufficient memory for request)
 

このエラーは、メモリの内部 EEM 要求に障害が発生したことを意味します。

(_cerr_sub_err = 22) FH_ENULLPTR (event detector internal error - ptr is null)
 

このエラーは、内部 EEM イベント ディテクタ ポインタが、含まれたデータである必要があるときに、ヌルであったことを意味します。

(_cerr_sub_err = 45) FH_ESEQNUM (sequence or workset number out of sync)
 

このエラーは、イベント ディテクタ シーケンスまたは作業セット番号が無効であったことを意味します。

(_cerr_sub_err = 46) FH_EREGEMPTY (registration list is empty)
 

このエラーは、イベント ディテクタ登録リストが空であったことを意味します。

(_cerr_sub_err = 54) FH_EFDUNAVAIL (connection to event detector unavailable)
 

このエラーは、イベント ディテクタが使用できなかったことを意味します。

sys_reqinfo_syslog_history

指定された Syslog メッセージの履歴を問い合わせます。

構文

sys_reqinfo_syslog_history

引数

なし

結果文字列

rec_list {{log hist string 0}, {log hist str 1}, ...}
 

各記録の履歴の文字列は、次のとおりです。

time_sec %ld time_msec %ld msg {%s}

 

time_sec
time_msec

1970 年 1 月 1 日以降の秒およびミリ秒の単位で、メッセージが記録された時刻を表します。

msg

Syslog メッセージ。

Set _cerrno

あり

(_cerr_sub_err = 2) FH_ESYSERR (generic/unknown error from OS/system)
 

このエラーは、オペレーティング システムによってレポートされたエラーを意味します。エラーとともにレポートされる POSIX errno 値を使用して、オペレーティング システム エラーの原因を調べます。

(_cerr_sub_err = 22) FH_ENULLPTR (event detector internal error - ptr is null)
 

このエラーは、内部 EEM イベント ディテクタ ポインタが、含まれたデータである必要があるときに、ヌルであったことを意味します。

(_cerr_sub_err = 44) FH_EHISTEMPTY (history list is empty)
 

このエラーは、履歴のリストが空であったことを意味します。

(_cerr_sub_err = 45) FH_ESEQNUM (sequence or workset number out of sync)
 

このエラーは、イベント ディテクタ シーケンスまたは作業セット番号が無効であったことを意味します。

(_cerr_sub_err = 54) FH_EFDUNAVAIL (connection to event detector unavailable)
 

このエラーは、イベント ディテクタが使用できなかったことを意味します。

EEM ライブラリのデバッグ コマンド拡張

「cli_debug」

「smtp_debug」

cli_debug

コマンドライン インターフェイス(CLI)のデバッグ文を、Syslog に出力します。 debug event manager tcl cli_library Cisco IOS CLI コマンドが有効な場合に、この Tcl コマンド拡張を使用すると、CLI デバッグ文が Syslog に出力されます。

構文

cli_debug spec_string debug_string

引数

spec_string

(必須)spec_string 引数が使用され、デバッグ文のタイプを示します。

debug_string

(必須)debug_string 引数が使用され、デバッグ テキストを示します。

結果文字列

なし

Set _cerrno

なし

smtp_debug

Simple Mail Transfer Protocol(SMTP; シンプル メール転送プロトコル)のデバッグ文を、Syslog に出力します。 debug event manager tcl smtp_library Cisco IOS のコマンドライン インターフェイス(CLI)コマンドが有効な場合に、この Tcl コマンド拡張によって、SMTP デバッグ文が Syslog に出力されます。

構文

smtp_debug spec_string debug_string

引数

spec_string

(必須)spec_string 引数が使用され、デバッグ文のタイプを示します。

debug_string

(必須)debug_string 引数が使用され、デバッグ テキストを示します。

結果文字列

なし

Set _cerrno

なし

SMTP ライブラリのコマンド拡張

すべてのシンプル メール転送プロトコル(SMTP)ライブラリ コマンドは、::cisco::lib 名前空間に属します。

このライブラリを使用するには、ユーザは、E メール テンプレート ファイルを用意する必要があります。E メール サービスと E メール テキストを、 event manager environment Cisco IOS コマンドライン インターフェイス(CLI)コンフィギュレーション コマンドを使用して設定できるよう、テンプレート ファイルに Tcl グローバル変数を含めることができます。E メール テンプレート ファイルでグローバル変数を置き換え、設定された E メール サーバを使用して、設定された To アドレス、CC アドレス、From アドレス、および Subject 行プロパティで必要な E メール コンテキストを送信するには、このライブラリにあるコマンドを使用します。

E メール テンプレート

E メール テンプレート ファイルの形式は、次のとおりです。


) RFC 2554 に基づき、SMTP E メール サーバ名 Mailservername には、username:password@host、username@host、または host のテンプレート形式のいずれか 1 つを使用できます。


Mailservername:<space><the list of candidate SMTP server addresses>
From:<space><the e-mail address of sender>
To:<space><the list of e-mail addresses of recipients>
Cc:<space><the list of e-mail addresses that the e-mail will be copied to>
Sourceaddr:<space><the IP addresses of the recipients>
Subject:<subject line>
<a blank line>
<body>
 

) テンプレートには、通常、設定される Tcl グローバル変数が含まれていることに、注意してください。


次に、サンプル E メール テンプレート ファイルを挙げます。

Mailservername: $_email_server
From: $_email_from
To: $_email_to
Cc: $_email_cc
Sourceaddr: $_email_ipaddr
Subject: From router $routername: Process terminated
 
process name: $process_name
subsystem: $sub_system
exit status: $exit_status
respawn count: $respawn_count

エクスポートされる Tcl コマンド拡張

「smtp_send_email」

「smtp_subst」

smtp_send_email

E メール テンプレート ファイルのテキストが、すべてのグローバル変数ですでに置き換えられている場合、シンプル メール転送プロトコル(SMTP)を使用して E メールを送信します。E メール テンプレートによって、候補メール サーバのアドレス、To アドレス、CC アドレス、From アドレス、件名の行、および E メールの本文が指定されます。


) ライブラリが、リストにあるサーバの 1 つに接続できるまで、サーバへの接続が、1 つ 1 つ試行されるよう、候補 E メール サーバのリストを用意できます。


構文

smtp_send_email text

引数

text

(必須)すべてのグローバル変数ですでに置き換えられた、E メール テンプレート ファイルのテキスト。

結果文字列

なし

Set _cerrno

1 行目の形式が間違っている:Mailservername:サーバ名のリスト。

2 行目の形式が間違っている:From:送信元アドレス。

3 行目の形式が間違っている:To:送信先アドレスのリスト。

4 行目の形式が間違っている:CC:コピー送信先アドレスのリスト。

メール サーバへの接続エラー:リモート サーバによって $sock が閉じられている($sock はメール サーバに開かれているソケットの名前)。

メール サーバへの接続エラー:$sock 応答コードが service ready greeting ではなく $k である($sock はメール サーバに開かれているソケットの名前、$k は $sock の応答コード)。

メール サーバへの接続エラー:すべてのメール サーバ候補に接続できない。

メール サーバからの接続解除エラー:リモート サーバによって $sock が閉じられている($sock はメール サーバに開かれているソケットの名前)。

サンプル スクリプト

E メール テンプレートですべての必要なグローバル変数が定義された後には、次のようになります。

if [catch {smtp_subst [file join $tcl_library email_template_sm]} result] {
puts stderr $result
exit 1
}
if [catch {smtp_send_email $result} result] {
puts stderr $result
exit 1
}

smtp_subst

E メール テンプレート ファイル e-mail_template の場合、ファイルにある各グローバル変数を、そのユーザ定義値によって置き換えます。置換後に、ファイルのテキストを返します。

構文

smtp_subst e-mail_template

引数

e-mail_template

(必須)グローバル変数が、ユーザ定義値によって置き換えられる必要がある、E メール テンプレート ファイルの名前。ファイル名の例は /disk0://example.template で、スロット 0 の ATA フラッシュ ディスクの上位レベル ディレクトリにある example.template という名前のファイルを表します。

結果文字列

すべてのグローバル変数で置き換えられた、E メール テンプレート ファイルのテキスト。

Set _cerrno

E メール テンプレート ファイルを開けられない。

E メール テンプレート ファイルを閉じられない。

CLI ライブラリのコマンド拡張

すべてのコマンドライン インターフェイス(CLI)ライブラリ コマンド拡張は、 ::cisco::eem 名前空間に属します。

このライブラリによって、ユーザに対し、CLI コマンドを実行し、Tcl でコマンドの出力を取得する機能が用意されます。コマンドが exec によって実行され、コマンドの出力が読み戻されるようにするため、ユーザは、このライブラリでコマンドを使用して、exec を生成し、それに対して仮想端末チャネルをオープンし、コマンドを記述してチャネルに対して実行できます。

CLI コマンドには、対話式コマンドと非対話式コマンドの、2 つのタイプがあります。

対話式コマンドでは、コマンドの入力後、ルータによって、異なるユーザ オプションが質問される「Q&A」フェーズがあり、ユーザは、各質問に対する答えを入力する必要があります。すべての質問が適切に答えられた後、ユーザのオプションに従って、完了するまでコマンドが実行されます。

非対話式コマンドでは、コマンドが一度入力されると、コマンドが完了まで実行されます。EEM スクリプトで異なるタイプのコマンドを実行するには、異なる CLI ライブラリ コマンド シーケンスを使用する必要があり、これは、「CLI ライブラリを使用した非対話式コマンドの実行」 および 「CLI ライブラリを使用した対話式コマンドの実行」 で説明します。

vty 行は、 line vty CLI コンフィギュレーション コマンドを使用して設定された vty 行のプールから割り当てられます。EEM によって vty 行が使用されていない場合で、使用可能な vty 行がある場合、EEM では、vty 行が使用されます。EEM によって vty 行がすでに使用されている場合で、使用可能な 3 行以上の vty 行がある場合も、EEM では、vty 行が使用されます。3 行よりも少ない vty 行が使用可能な場合、残りの vty 行は Telnet で使用するために予約されているので、接続は失敗することに注意してください。

Cisco IOS Release 12.4(22)T およびそれ以降のリリースで、XML-PI サポートが導入されました。XML-PI サポート、新しい CLI ライブラリ コマンド拡張、および、XML-PI の実装方法の例については、「CLI ライブラリの XML-PI サポート」を参照してください。

エクスポートされる Tcl コマンド拡張

「cli_close」

「cli_exec」

「cli_get_ttyname」

「cli_open」

「cli_read」

「cli_read_drain」

「cli_read_line」

「cli_read_pattern」

「cli_run」

「cli_run_interactive」

「cli_write」

cli_close

exec プロセスをクローズし、コマンドライン インターフェイス(CLI)に接続された、vty および指定されたチャネル ハンドラをリリースします。

構文

cli_close fd tty_id

引数

fd

(必須)CLI チャネル ハンドラ。

tty_id

(必須) cli_open コマンド拡張から返された TTY ID。

結果文字列

なし

Set _cerrno

チャネルをクローズできない。

cli_exec

指定されたチャネル ハンドラにコマンドを記述し、コマンドを実行します。次に、チャネルからコマンドの出力を読み取り、出力を返します。

構文

cli_exec fd cmd

引数

fd

(必須)コマンドライン インターフェイス(CLI)チャネル ハンドラ。

cmd

(必須)実行する CLI コマンド。

結果文字列

実行された CLI コマンドの出力。

Set _cerrno

チャネルを読み取れない。

cli_get_ttyname

該当する TTY ID の実際と疑似の TTY の名前を返します。

構文

cli_get_ttyname tty_id

引数

tty_id

(必須) cli_open コマンド拡張から返された TTY ID。

結果文字列

pty %s tty %s

Set _cerrno

なし

cli_open

vty を割り当て、EXEC コマンドライン インターフェイス(CLI)セッションを作成し、vty をチャネル ハンドラに接続します。チャネル ハンドラを含む配列を返します。


cli_open への各コールによって、Cisco IOS vty 回線を割り当てる Cisco IOS EXEC セッションが開始されます。vty は、cli_close ルーチンが呼び出されるまで、使用中のままです。vty 行は、line vty CLI コンフィギュレーション コマンドを使用して設定された vty 行のプールから割り当てられます。EEM によって vty 行が使用されていない場合で、使用可能な vty 行がある場合、EEM では、vty 行が使用されます。EEM によって vty 行がすでに使用されている場合で、使用可能な 3 行以上の vty 行がある場合も、EEM では、vty 行が使用されます。3 行よりも少ない vty 行が使用可能な場合、残りの vty 行は Telnet で使用するために予約されているので、接続は失敗することに注意してください。


構文

cli_open

引数

なし

結果文字列

"tty_id {%s} pty {%d} tty {%d} fd {%d}"

 

イベント タイプ
説明

tty_id

TTY ID。

pty

PTY デバイス名。

tty

TTY デバイス名。

fd

CLI チャネル ハンドラ。

Set _cerrno

EXEC の pty を取得できない。

EXEC CLI セッションを作成できない。

最初のプロンプトを読み取れない。

cli_read

読み取られている内容でルータ プロンプトのパターンが発生するまで、指定されたコマンドライン インターフェイス(CLI)のチャネル ハンドラからコマンド出力を読み取ります。一致するまで、読み取られたすべての内容を返します。

構文

cli_read fd

引数

fd

(必須)CLI チャネル ハンドラ。

結果文字列

読み取られたすべての内容。

Set _cerrno

ルータ名を取得できない。


) この Tcl コマンド拡張によって、ルータ プロンプトを待つ状態がブロックされ、読み取られた内容が表示されます。


cli_read_drain

指定されたコマンドライン インターフェイス(CLI)のチャネル ハンドラのコマンド出力を読み取り、排出します。読み取られたすべての内容を返します。

構文

cli_read_drain fd

引数

fd

(必須)CLI チャネル ハンドラ。

結果文字列

読み取られたすべての内容。

Set _cerrno

なし

cli_read_line

指定されたコマンドライン インターフェイス(CLI)のチャネル ハンドラから、コマンド出力の 1 行を読み取ります。読み取られた回線を返します。

構文

cli_read_line fd

引数

fd

(必須)CLI チャネル ハンドラ。

結果文字列

読み取られた回線。

Set _cerrno

なし


) この Tcl コマンド拡張によって、行の末尾を待つ状態がブロックされ、読み取られた内容が表示されます。


cli_read_pattern

読み取られている内容でパターンが発生するまで、指定されたコマンドライン インターフェイス(CLI)のチャネル ハンドラからコマンド出力を読み取ります。一致するまで、読み取られたすべての内容を返します。


) パターン マッチ ロジックで、Cisco IOS コマンドから配信されるコマンド出力データを探すことによって、照会が試行されます。照会は、出力バッファの最新の 256 文字で常に行われます。ただし、使用可能な文字がより少ない場合は、より少ない文字で照会が行われます。正常な一致に 256 よりも多い文字が必要な場合、パターン マッチは実行されません。


構文

cli_read_pattern fd ptn

引数

fd

(必須)CLI チャネル ハンドラ。

ptn

(必須)チャネルからコマンド出力を読み取るときに、パターンが照会されます。

結果文字列

読み取られたすべての内容。

Set _cerrno

なし


) この Tcl コマンド拡張によって、指定されたパターンを待つ状態がブロックされ、読み取られた内容が表示されます。


cli_run

clist にある回数を繰り返し、それぞれが、イネーブル モードで実行されるコマンドライン インターフェイス(CLI)であることを前提とします。正常に実行されると、実行されたすべてのコマンドの出力を返します。失敗すると、失敗からのエラーを返します。

構文

cli_run clist

引数

clist

(必須)実行されるコマンドのリスト。

結果文字列

出力されるすべてのコマンドの出力、またはエラー メッセージ。

Set _cerrno

なし

使用例

次に、 cli_run コマンド拡張の使用例を示します。

set clist [list {sh run} {sh ver} {sh event man pol reg}]
cli_run { clist }
 

cli_run_interactive

4 つの項目がある clist のサブリストを用意します。正常に実行されると、実行されたすべてのコマンドの出力を返します。失敗すると、失敗からのエラーを返します。可能な場合には、配列も使用します。予測と応答を別々に保持することによって、より簡単に後で読み取ることができます。

構文

cli_run_interactive clist

引数

clist

(必須)4 つの項目があるサブリストで、各項目には、次の 4 つのサブ項目があります。

コマンド

予測

予測される質問

応答

この質問に対する応答

実行するコマンド

予測

予測される質問

応答

この質問に対する応答

応答

予測

予測される質問

応答

この質問に対する応答

予測と応答の内容のリスト

予測

予測される質問

応答

この質問に対する応答

結果文字列

出力されるすべてのコマンドの出力、またはエラー メッセージ。

Set _cerrno

なし

使用例

次に、cli_ru_ interactive コマンド拡張の使用例を示します。

set cmd1 "first command"
set cmd1_exp1 {[confirm]}
set cmd1_rep1 {y}
set cmd1_response [list [list expect $cmd1_exp1 reply $cmd1_rep1]]
 
set cmd2 "second command"
set cmd2_exp1 {save config}
set cmd2_rep1 {no}
set cmd2_exp2 {[confirm]}
set cmd2_rep2 {y}
set cmd2_response [list [list expect $cmd2_exp1 reply $cmd2_rep1] [list expect $cmd2_exp2 reply $cmd2_rep2]]
 
set cmd3 "third command"
set cmd3_exp1 {are you sure}
set cmd3_rep1 {yes}
set cmd3_exp2 {destination file}
set cmd3_rep2 {test.txt}
set cmd2_response [list [list expect $cmd3_exp1 reply $cmd3_rep1] [list expect $cmd3_exp2 reply $cmd3_rep2]]
 
set clist [list " command $cmd1 responses $cmd1_response" " command $cmd2 responses $cmd2_response" " command $cmd3 responses $cmd3_response"]
cli_run_interactive { clist }

 

cli_write

指定された CLI チャネル ハンドラに対して実行されるコマンドを書き込みます。CLI チャネル ハンドラによって、コマンドが実行されます。

構文

cli_write fd cmd

引数

fd

(必須)CLI チャネル ハンドラ。

cmd

(必須)実行する CLI コマンド。

結果文字列

なし

Set _cerrno

なし

使用例

たとえば、次のように、コンフィギュレーション CLI コマンドを使用して、イーサネット インターフェイス 1/0 をアップにします。

if [catch {cli_open} result] {
puts stderr $result
exit 1
} else {
array set cli1 $result
}
if [catch {cli_exec $cli1(fd) "en"} result] {
puts stderr $result
exit 1
}
if [catch {cli_exec $cli1(fd) "config t"} result] {
puts stderr $result
exit 1
}
if [catch {cli_exec $cli1(fd) "interface Ethernet1/0"} result] {
puts stderr $result
exit 1
}
if [catch {cli_exec $cli1(fd) "no shut"} result] {
puts stderr $result
exit 1
}
if [catch {cli_exec $cli1(fd) "end"} result] {
puts stderr $result
exit 1
}
if [catch {cli_close $cli1(fd) $cli1(tty_id)} } result] {
puts stderr $result
exit 1