イベントスクリプトでのイベントとリモート実行の詳細の使用
イベント・ポリシー・アクションには、1つ以上のイベント・スクリプトの実行を含めることができます。イベント・ポリシーがイベント・スクリプトを実行すると、イベント・プロセスはイベントの詳細をスクリプトに転送します。これらのイベントの詳細は、必要に応じてキャプチャ、評価、およびログ ファイルに送信できます。さらに、構成されたリモート実行の詳細もイベントスクリプトに転送されます。
トリガーされたイベントと受信されたイベントの 2 種類のイベントの詳細が返されます。 トリガーされたイベント には、ポリシーをトリガーしたイベントの詳細が記録されます。 受信イベントには 、トリガーとなるイベントの前に発生したイベントの詳細が記録されます。トリガー・イベントの詳細は、常にイベント・スクリプトに転送されます。受信したイベントの詳細は、相関イベントに対してイベントポリシーがトリガーされたときにのみ存在します。
1 つ以上のリモートホストのホスト名、ユーザー名、パスフレーズを含むリモート実行の詳細により、イベントスクリプトは、接続情報をイベントスクリプトに直接エンコードすることなく、リモートホストでリモートプロシージャコールを呼び出すことができます。リモート実行の詳細は、 [edit event-options event-script file filename remote-execution] 階層レベルで設定します。個々のイベント スクリプトではなく、構成にリモート実行の詳細を含めると、情報は 1 つの場所でキャプチャされ、パスフレーズは暗号化されます。これは、イベント スクリプト ファイルには当てはまりません。
イベントの詳細とリモート実行の詳細は、次の形式の XML として SLAX および XSLT イベント スクリプトに転送されます。
<event-script-input> <junos-context> ... </junos-context> <trigger-event> <id>event-id</id> <type>event-type</type> <generation-time>timestamp</generation-time> <process> <name>process-name</name> <pid>pid</pid> </process> <hostname>hostname</hostname> <message>message-string</message> <facility>facility-string</facility> <severity>severity-string</severity> <attribute-list> <attribute> <name>attribute-name</name> <value>attribute-value</value> </attribute> </attribute-list> </trigger-event> <received-events> <received-event> <id>event-id</id> <type>event-type</type> <generation-time>timestamp</generation-time> <process> <name>process-name</name> <pid>pid</pid> </process> <hostname>hostname</hostname> <facility>facility-string</facility> <severity>severity-string</severity> <attribute-list> <attribute> <name>attribute-name</name> <value>attribute-value</value> </attribute> </attribute-list> </received-event> </received-events> <remote-execution-details> <remote-execution-detail> <remote-hostname>hostname</remote-hostname> <username>username</username> <passphrase>passphrase</passphrase> </remote-execution-detail> </remote-execution-details> </event-script-input>
<junos-context>要素の詳細については、「Junos OS自動化スクリプトのグローバルパラメーターと変数」を参照してください。
Python イベント スクリプトは、トリガー イベントと受信したイベントの詳細にアクセスするために、 Junos_Trigger_Event オブジェクトと Junos_Received_Events オブジェクトをインポートする必要があります。 Junos_Trigger_Event と Junos_Received_Events は lxml.etree _Element オブジェクトであり、SLAX および XSLT スクリプト入力の <trigger-event> 階層と <received-events> 階層と同じ階層とタグ名を含みます。
Pythonイベントスクリプトは、 xpath() と find()、 findall()、 findtext()などのlxmlメソッドを使用して、オブジェクトから必要なイベントの詳細を抽出できます。例えば:
from junos import Junos_Trigger_Event
from junos import Junos_Received_Events
id = Junos_Trigger_Event.xpath('//trigger-event/id')[0].text
name = Junos_Trigger_Event.xpath('//trigger-event/process/name')[0].text
message = Junos_Trigger_Event.xpath('//trigger-event/message')[0].text
Pythonイベントスクリプトは、[edit event-options event-script file filename remote-execution]階層レベルで構成されたリモート実行の詳細にアクセスするために、Junos_Remote_Execution_Detailsをインポートする必要があります。 Junos_Remote_Execution_Detailsは、一連のリモートデバイスを生成するジェネレータ関数であり、複数の設定されたホストの反復処理を容易にします。次のコードのように、host、user、および passwd プロパティを使用して、設定されたリモートホストのホスト名、ユーザー名、およびパスフレーズを参照できます。
from junos import Junos_Remote_Execution_Details
for remote in Junos_Remote_Execution_Details():
hostname = remote.host
username = remote.user
passphrase = remote.passwd