在此页面上
配置事件策略以将参数传递至事件脚本
当事件策略调用事件脚本时,策略可以将参数传递至脚本。以下部分概述如何在事件策略中配置参数并使用事件脚本中的参数:
在事件策略中配置事件脚本参数
您可配置事件策略传递到层次结构下event-script filename arguments
策略语句中then
事件脚本的参数。您可以为每个调用的事件脚本配置任意数量的参数。
[edit event-options policy policy-name then] event-script filename { arguments { argument-name argument-value; } }
您将脚本的参数包括为名称/值对。该参数值可包含包含有关触发事件或其他已接收事件的信息的变量。然后,事件脚本可在执行过程中参考此信息。您可以使用以下表单的变量:
{$$.attribute-name}
—双美元标志 ($$
) 符号表示触发策略的事件。与属性名称结合使用时,变量解析为与触发事件关联的属性的值。例如,{$$.interface-name}
解析与触发事件关联的接口名称。{$event.attribute-name}
- 带有活动名称 ($event
) 符号的单美元标志表示与之匹配event
的最新事件。与属性名称结合使用时,变量解析为与该事件关联的属性的值。例如,{$COSD_CHAS_SCHED_MAP_INVALID.interface-name}
解析与事件过程缓存的最新COSD_CHAS_SCHED_MAP_INVALID
事件相关的接口名称。
对于给定事件,您可以查看可通过发出 help syslog event
命令来参考的事件属性列表。
user@host> help syslog event
例如,在以下命令输出中,尖括号文本 (< >
) 显示事件属性 COSD_CHASSIS_SCHEDULER_MAP_INVALID
:
user@host> help syslog COSD_CHASSIS_SCHEDULER_MAP_INVALID Name: COSD_CHASSIS_SCHEDULER_MAP_INVALID Message: Chassis scheduler map incorrectly applied to interface <interface-name>: <error-message> ...
查看事件属性列表的另一种方式是在层次结构级别上[edit event-options policy policy-name]
发出set attributes-match event?
配置模式命令。
[edit event-options policy policy-name] user@host# set attributes-match event?
例如,在以下命令输出中,event.attribute
列表显示error-message
事件的cosd_chassis_scheduler_map_invalid
属性和interface-name
属性:
[edit event-options policy p1] user@host# set attributes-match cosd_chassis_scheduler_map_invalid? Possible completions: <from-event-attribute> First attribute to compare cosd_chassis_scheduler_map_invalid.error-message cosd_chassis_scheduler_map_invalid.interface-name
在本 set
命令中,事件名称和问号 (?
) 之间没有空间。
要查看可参考的所有事件属性的列表,请在层次结构级别发出set attributes-match ?
[edit event-options policy policy-name]
配置模式命令。
[edit event-options policy policy-name] user@host# set attributes-match ? Possible completions: <from-event-attribute> First attribute to compare acct_accounting_ferror acct_accounting_fopen_error ...
使用事件脚本中的参数
当事件策略调用事件脚本时,事件脚本可以参考策略传递的任何参数。事件脚本中的参数名称必须与配置中层次结构下 [edit event-options policy policy-name then event-scripts filename arguments]
为该事件脚本配置的参数的名称匹配。
要在 SLAX 或 XSLT 事件脚本中使用参数,必须为每个参数声明。事件脚本将每个脚本参数的值分配给同一名称的相应参数,然后可在整个脚本中参考。
XSLT 语法
<xsl:param name="argument-name"/>
SLAX 语法
param $argument-name;
要在 Python 事件脚本中使用参数,您可以使用 Python 语言中的任何有效方法。以下示例使用 Python argparse
模块来处理脚本参数。对于传递到脚本的每个论点,都必须包含一个 parser.add_argument
语句。
Python 语法
import argparse def main(): parser = argparse.ArgumentParser() parser.add_argument('-argument-name', required=True) args = parser.parse_args() # to use the argument reference args.argument-name if __name__ == '__main__': main()