Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

了解适用于 Junos 设备的 Python 自动化脚本

Python 脚本概述

作为 SLAX 和 XSLT 的替代方法,您可以在支持软件映像中的 Python 扩展包的 Junos 设备上创建和执行 Python 脚本。Python 是一种实用、功能丰富的语言,具有广泛的库支持,使您能够创建自定义脚本。 表 1 概述了 Junos 设备上可用的 Python 版本,并指出了针对某些类型的脚本添加或删除对该版本的支持的版本。

表 1:运行 Junos OS 的设备上的 Python 版本

蟒蛇版本

释放

改变

受影响的脚本类型

Python 2.7.x

Junos OS 16.1R1 及更高版本

已添加支持

提交、事件、操作和 SNMP 脚本

瞻博网络扩展工具包 (JET) 脚本

杨 动作和翻译脚本

Junos OS 20.2R1 及更高版本

已删除支持

杨 动作和翻译脚本

Junos OS 21.1R1 及更高版本

已删除支持

提交、事件、操作和 SNMP 脚本

瞻博网络扩展工具包 (JET) 脚本

Junos OS 演化版 22.3R1 及更高版本

已删除支持

提交、事件、操作和 SNMP 脚本

瞻博网络扩展工具包 (JET) 脚本

杨 动作和翻译脚本

Python 3.x

Junos OS 19.4R1 及更高版本

已添加支持

提交、事件、操作和 SNMP 脚本

Junos OS 20.2R1 及更高版本

已添加支持

瞻博网络扩展工具包 (JET) 脚本

杨 动作和翻译脚本

Junos OS 演化版 21.1R1 及更高版本

已添加支持

有关支持的平台,请参阅 功能资源管理器

提交、事件、操作和 SNMP 脚本

瞻博网络扩展工具包 (JET) 脚本

杨 动作和翻译脚本

注意:

Python 2.7 生命周期终止和支持终止日期为 2020 年 1 月 1 日。Python 2.7 的官方升级路径是 Python 3。由于运行 Junos OS 的设备中添加了对 Python 3 的支持,适用于不同类型的本机脚本,因此我们建议您将受支持的脚本类型从 Python 2 迁移到 Python 3。

Python 脚本可以利用 Python 语言中的所有功能和构造,这提供了优于 SLAX 和 XSLT 的灵活性,使您能够执行在 SLAX 和 XSLT 中难以或不可能执行的操作。SLAX 和 XSLT 是为处理 XML 数据而设计的,但 Python 适合处理任何格式的数据。Python 支持广泛的数据类型列表,包括列表、字典、集合和元组,并且与大多数 SLAX 和 XSLT 变量不同,许多 Python 变量是可变的。循环控制在 SLAX 和 XSLT 脚本中受到限制,但 Python 脚本可以利用类似 和 continue 之类的语句break来精确控制循环行为。Python 还对文件操作有广泛的支持,你可以在命令行上调用标准的 Python 调试器来调试 Python 操作脚本。

此外,Junos OS 在 Python 脚本中支持以下内容:

  • Junos PyEZ 库 — 简化在运行 Junos OS 的设备上执行 RPC 以及执行操作和配置任务的过程。

  • lxml 库 — 简化 XPath 处理。

  • Jinja2 库 — 模板引擎,使您能够从预定义模板生成内容,这对于生成 Junos OS 配置数据非常有用。

  • IPv6 — 从 Junos OS 19.3R1 版开始,运行具有升级版 FreeBSD 的 Junos OS 的设备将使用 Python 自动化脚本中的 IPv6。有关详细信息 ,请参阅 Python 自动化脚本中的 IPv6 支持

  • 非默认路由实例 — 从 Junos OS 19.3R1 版开始,受支持设备上的 Python 脚本可以使用 set_routing_instance() 扩展功能通过非默认路由实例连接到远程设备。

  • 其他 Python 模块 - 有关运行 Junos OS 的设备上的 Python 脚本可用的模块的信息,请参阅 运行 Junos OS 的设备上的 Python 模块概述

为防止在运行 Junos OS 的设备上执行未经授权的 Python 代码,未签名的 Python 脚本必须满足特定要求,然后才能在设备上执行脚本。有关在运行 Junos OS 的设备上执行 Python 自动化脚本的要求的详细信息,请参阅 在 Junos 设备上执行 Python 自动化脚本的要求

要使用 Python 2.7 或 Python 3 执行未签名的 Python 脚本,必须分别在层次结构级别配置 language python [edit system scripts] or language python3 语句。如果配置该language python3语句,设备将使用 Python 3 执行支持此 Python 版本的脚本,并使用 Python 2.7 在给定的 Junos OS 版本中执行不支持 Python 3 的脚本,如表 1 中所述。

对于 JET 脚本,必须配置与脚本支持的 Python 版本对应的语句版本。例如,如果为仅支持 Python 2.7 的 JET 脚本配置语句 language python3 ,则在执行脚本时将收到运行时错误。

提交、事件、操作和 SNMP 脚本的 Python 脚本输入

运行支持 Python 自动化脚本的 Junos OS 的设备包括以下模块,您可以将这些模块导入到提交、事件、操作和 SNMP 脚本中:

表 2:junos 模块对象

Python 对象

类型

脚本类型

描述

等效 XSLT/SLAX

Junos_Context

字典

提交

事件

操作

有关脚本执行环境的设备特定信息,例如设备主机名、脚本类型以及执行脚本的用户。

commit-script-input/junos-context

event-script-input/junos-context

op-script-input/junos-context

Junos_Configuration

lxml.etree _Element

提交

采用 Junos XML 格式的继承后候选配置。

commit-script-input/configuration

Junos_Trigger_Event

lxml.etree _Element

事件

触发相应事件策略的事件的详细信息。

event-script-input/trigger-event

Junos_Received_Events

lxml.etree _Element

事件

在触发事件之前发生的相关事件的详细信息。

event-script-input/received-events

Junos_Remote_Execution_Details

生成一系列远程设备的生成器功能。

事件

在层次结构级别为 [edit event-options event-script file filename remote-execution] 事件脚本配置的本地或远程主机的连接详细信息。

event-script-input/remote-execution-details

有关不同脚本输入以及如何在自动化脚本中导入和使用它们的详细信息,请参阅:

Python 脚本资源

3 提供了可帮助您在运行 Junos OS 的设备上创建和执行 Python 脚本的资源。表 4 提供了每种不同类型的脚本的资源。

表 3:常规资源

资源

文档

Python 脚本执行要求

在 Junos 设备上执行 Python 自动化脚本的要求

运行 Junos OS 的设备上的 Python 模块

运行 Junos OS 的设备上的 Python 模块概述

Python 脚本中的 IPv6 支持

Python 自动化脚本中的 IPv6 支持

Junos PyEZ 文档

Junos PyEZ

Python 编程语言文档

https://www.python.org/

表 4:按脚本类型划分的资源

脚本类型

文档

Junos OS 提交、事件、操作和 SNMP 脚本

Junos OS 自动化脚本用户指南

瞻博网络扩展工具包 (JET) 脚本

瞻博网络扩展工具包文档

杨 动作和翻译脚本

NETCONF XML 管理协议开发人员指南