Ereignis- und Remoteausführungsdetails in Ereignisskripten verwenden
Ereignisrichtlinienaktionen können die Ausführung einer oder mehrerer Ereignisskripte umfassen. Wenn eine Ereignisrichtlinie ein Ereignisskript ausführt, leitet der Ereignisprozess die Ereignisdetails an das Skript weiter. Diese Ereignisdetails können bei Bedarf erfasst, ausgewertet und an Protokolldateien gesendet werden. Darüber hinaus werden alle konfigurierten Details zur Remoteausführung auch an das Ereignisskript weitergeleitet.
Es werden zwei Arten von Ereignisdetails zurückgegeben: ausgelöste Ereignisse und empfangene Ereignisse. Ausgelöste Ereignisse zeichnen die Details des Ereignisses auf, das die Richtlinie ausgelöst hat. Empfangene Ereignisse zeichnen die Details der Ereignisse auf, die vor dem auslösenden Ereignis geschehen sind. Triggerereignisdetails werden immer an Ereignisskripte weitergeleitet. Empfangene Ereignisdetails werden nur angezeigt, wenn eine Ereignisrichtlinie für korrelierte Ereignisse ausgelöst wird.
Details zur Remoteausführung, einschließlich Hostname, Benutzername und Passphrase für einen oder mehrere Remote-Hosts, ermöglichen es einem Ereignisskript, Remote-Prozeduraufrufe auf Remote-Hosts aufzurufen, ohne die Verbindungsinformationen direkt im Ereignisskript zu codieren. Sie konfigurieren Details zur Remoteausführung auf Hierarchieebene [edit event-options event-script file filename remote-execution]
. Wenn Sie statt in den einzelnen Ereignisskripten Details zur Remoteausführung in die Konfiguration einbeziehen, werden die Informationen an einem einzigen Ort erfasst und die Passphrase wird verschlüsselt. Dies ist in einer Ereignisskriptdatei nicht der Fall.
Ereignisdetails und Details zur Remoteausführung werden als XML im folgenden Format an SLAX- und XSLT-Ereignisskripte weitergeleitet:
<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>
Informationen zum <junos-context>
Element finden Sie unter Globale Parameter und Variablen in Junos OS Automation Scripts.
Python-Ereignisskripte müssen die Junos_Trigger_Event
Objekte importieren, Junos_Received_Events
um auf Details zum Triggerereignis und den empfangenen Ereignissen zuzugreifen. Junos_Trigger_Event
Junos_Received_Events
Sie sind lxml.etree _Element
Objekte und enthalten die gleichen Hierarchie- und Tagnamen wie die <trigger-event>
<received-events>
und Hierarchien in den Skripteingaben SLAX und XSLT.
Python-Ereignisskripte können die erforderlichen Ereignisdetails aus den Objekten mit lxml-Methoden wie xpath()
und , find()
findall()
und findtext()
extrahieren. Zum Beispiel:
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-Ereignisskripte müssen importiert Junos_Remote_Execution_Details
werden, um auf die auf Hierarchieebene [edit event-options event-script file filename remote-execution]
konfigurierten Remoteausführungsdetails zuzugreifen. Junos_Remote_Execution_Details
Hier handelt es sich um eine Generatorfunktion, die eine Abfolge von Remotegeräten erzeugt, wodurch die Iterate über mehrere konfigurierte Hosts vereinfacht werden. Sie können den Hostnamen, den Benutzernamen und die Passphrase für einen konfigurierten Remote-Host referenzieren, user
indem Sie die host
, und passwd
die Eigenschaften wie im folgenden Code verwenden:
from junos import Junos_Remote_Execution_Details for remote in Junos_Remote_Execution_Details(): hostname = remote.host username = remote.user passphrase = remote.passwd