Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

使用事件脚本更改配置

您可以配置事件策略来更改配置以响应事件。事件策略可以通过调用更改并提交配置的事件脚本,或者使用 change-configuration 语句执行更改配置的配置模式命令来修改配置。在修改配置时, change-configuration 事件脚本提供了比语句更大的灵活性。例如,通过事件脚本,您可以检查特定条件,以不同的格式提供配置数据,并指定如何将数据与现有配置合并。在某些情况下(例如,在启用了不间断活动路由 (NSR) 的双路由引擎设备上,事件策略只能使用事件脚本来修改配置。

以下各节讨论如何使用事件脚本修改配置。

如何使用 SLAX 或 XSLT 事件脚本更改配置

SLAX 和 XSLT 事件脚本可以调用 jcs:load-configuration 模板来对 Junos OS 配置进行结构化更改。您必须先与目标设备建立连接,然后才能调用模板来修改配置。有关模板的信息,请参阅 jcs:load-configuration使用 SLAX 和 XSLT 脚本更改配置

以下 SLAX 事件脚本打开与本地设备的连接,调用 jcs:load-configuration 模板以修改并提交配置,然后关闭连接。模板所需的 jcs:load-configuration 所有值都定义为变量,然后将这些变量作为参数传递到模板中。

要配置为给定事件调用 SLAX 事件脚本的事件策略,请执行以下操作:

  1. 将脚本复制到设备上的 /var/db/scripts/event 目录中,并提供使用 .slax 扩展名的文件名,例如 config-change.slax
  2. 配置事件脚本。
  3. 配置为特定事件调用事件脚本的事件策略,例如:
  4. 提交配置。

如何使用 Python 事件脚本更改配置

Python 脚本可以使用 Junos PyEZ 库对运行 Junos OS 的设备上的配置进行更改。Junos PyEZ jnpr.junos.utils.config.Config 实用程序提供用于锁定、加载、提交和解锁配置的实例方法。

以下 Python 事件脚本连接到本地设备,并更新并提交配置。

要配置为给定事件调用 Python 事件脚本的事件策略,请执行以下操作:

  1. 将脚本复制到设备上的 /var/db/scripts/event 目录中,并提供使用 .py 扩展名的文件名,例如 config-change.py
    注意:

    未签名的 Python 脚本必须由 root 用户或 Junos OS super-user 登录类中的用户拥有,并且只有文件所有者才能对文件具有写入权限。

  2. 允许在设备上执行未签名的 Python 脚本。
  3. 配置事件脚本以及执行脚本的权限用户。
  4. 配置为特定事件调用事件脚本的事件策略,例如:
  5. 提交配置。

有关使用 Junos PyEZ 配置运行 Junos OS 的设备的详细信息,请参阅 Junos PyEZ 开发人员指南

如何在启用了不间断活动路由的设备上使用事件脚本更改配置

在启用了不间断活动路由 (NSR) 的双路由引擎设备上使用事件策略更改配置时,建议事件策略调用事件脚本,该脚本仅在主路由引擎上提交更新的配置。这有助于确保在两个路由引擎上都成功更新配置和后续提交操作。配置会自动同步到备份路由引擎,因为 commit synchronize 语句是作为 NSR 配置的一部分在 [edit system] 层次结构级别配置的。或者,如果使用语 change-configuration 句修改配置,或者事件脚本未仅在主路由路由引擎上提交更改,则两个路由引擎可能会同时尝试获取配置数据库上的锁定,从而导致一个或两个提交失败。

若要创建仅在主路由引擎上配置和提交配置的事件脚本,请包含用于测试当前路由引擎是否为主路由引擎的逻辑。如果当前路由引擎是主路由引擎,请更新配置并提交。

以下 SLAX 事件脚本连接到本地设备,并检查当前路由引擎是否为主路由引擎。如果是主路由引擎,则脚本会更新配置,然后提交。

同样,以下 Python 事件脚本连接到本地设备,并且仅在当前路由引擎是主路由引擎时更新和提交配置: