了解适用于 Junos 设备的 Python 自动化脚本
Python 脚本概述
作为 SLAX 和 XSLT 的替代方法,您可以在支持软件映像中的 Python 扩展包的 Junos 设备上创建和执行 Python 脚本。Python 是一种实用、功能丰富的语言,具有广泛的库支持,使您能够创建自定义脚本。 表 1 概述了 Junos 设备上可用的 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 脚本中:
jcs
模块 - 提供对可用于 SLAX 和 XSLT 脚本的扩展函数和模板子集的访问。有关 Junos OS 扩展函数和模板的信息,请参阅了解 Junos OS 自动化脚本中的扩展功能和了解 Junos OS 自动化脚本中的命名模板。
junos
模块 - 包含表 2 中概述的Junos
类和脚本输入。
Python 对象 |
类型 |
脚本类型 |
描述 |
等效 XSLT/SLAX |
---|---|---|---|---|
|
字典 |
提交 事件 操作 |
有关脚本执行环境的设备特定信息,例如设备主机名、脚本类型以及执行脚本的用户。 |
commit-script-input/junos-context event-script-input/junos-context op-script-input/junos-context |
|
lxml.etree _Element |
提交 |
采用 Junos XML 格式的继承后候选配置。 |
commit-script-input/configuration |
|
lxml.etree _Element |
事件 |
触发相应事件策略的事件的详细信息。 |
event-script-input/trigger-event |
|
lxml.etree _Element |
事件 |
在触发事件之前发生的相关事件的详细信息。 |
event-script-input/received-events |
|
生成一系列远程设备的生成器功能。 |
事件 |
在层次结构级别为 |
event-script-input/remote-execution-details |
有关不同脚本输入以及如何在自动化脚本中导入和使用它们的详细信息,请参阅: