Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

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

执行 Python 脚本的要求

您可以使用 Python 编写 Junos OS 提交、事件、操作和 SNMP 自动化脚本。为防止未经授权的 Python 代码执行,默认情况下,Junos 设备不允许执行未签名的 Python 脚本。要执行未签名的 Python 脚本,除了对设备自动化脚本的正常要求外,还必须满足以下要求:

  • 文件所有者在 Junos OS super-user 登录类中为 root 或用户。

  • 只有文件所有者才有为该文件写入许可。

  • 通过在层次结构级别配置 language pythonlanguage python3 语句来启用未签名 Python 脚本的 [edit system scripts] 执行。

    注意:

    如果配置语 language python3 句,设备将使用 Python 3 执行支持此 Python 版本的脚本,并且在给定 Junos OS 版本中使用 Python 2.7 执行不支持 Python 3 的脚本。有关更多信息,请参阅 了解 Junos 设备的 Python 自动化脚本

    注意:

    从 Junos OS Evolved 版本 21.2R1 开始, junos-defaults 配置组默认包含语 language python 句。

    注意:

    要使不属于该文件的用户或组类的用户执行未签名的 Python 自动化脚本,脚本的文件权限必须包括其他人的读取权限。

与 SLAX 和 XSLT 自动化脚本一样,您必须在设备的相应目录中存储 Python 自动化脚本,并且您必须通过在适合配置中的脚本类型的层次结构级别下配置脚本文件名来启用各个脚本。有关存储和支持自动化脚本的信息,请参阅 Store and Enable Junos Automation Scripts

我们建议您配置校验和验证 Python 脚本的完整性。要为本地脚本指定校验和,请为特定类型的脚本在层次结构中的语句下[file filename]配置 checksum 语句。要为远程操作脚本指定校验和,请在key使用 命令执行脚本时包括该op url参数。从 Junos OS 18.2R2 和 18.3R1 版开始,如果您执行未签名的 Python 脚本未配置校验和,Junos 设备会在系统日志文件中记录CSCRIPT_SECURITY_WARNING消息。例如:

为 Python 脚本配置访问权限

从 Junos OS 版本 16.1R3 开始,交互式 Python 脚本(如提交和操作脚本)利用执行调用脚本的命令或操作的用户的访问权限运行。非交互式 Python 脚本(例如事件和 SNMP 脚本)默认在用户和组nobody的权限下执行。要使用特定用户的访问权限执行事件或 SNMP 脚本,必须在层级为事件脚本或 [edit system scripts snmp file filename] SNMP 脚本的层次结构级别配置python-script-user username语句[edit event-options event-script file filename],并指定在层次结构级别上配置的[edit system login]用户。

例如:

注意:

您无法配置 Python 事件和 SNMP 脚本以执行 root 访问权限。

按版本对要求更改的汇总

从 Junos OS 16.1R3 版开始,部分未签名 Python 脚本的所有权和访问权限要求将进行修改。在 Junos OS 版本 16.1R2 和早期版本中,未签名的 Python 提交、事件、操作和 SNMP 脚本必须归 root 用户所有,而 Junos OS 使用 *nix 用户和组 nobody(即通用、无权限系统帐户)的访问权限执行脚本。从 Junos OS 版本 16.1R3 开始,未签名的 Python 自动化脚本必须归 Junos OS super-user 登录类中的 root 用户或用户所有,并且只有文件所有者才能为该文件写入许可。此外,Python 自动化脚本可通过授权用户的访问权限执行。

表 1 概述了在 Junos OS 支持 Veriexec 的不同版本中执行未签名的 Python 自动化脚本的要求。

表 1:Python 自动化脚本要求

要求/限制

Junos OS 版本 16.1R2 或更低版本

Junos OS 版本 16.1R3 或更高版本

文件所有者

根用户

Junos OS super-user 登录类中的 root 用户或用户。

文件编写权限

任何

仅文件所有者

language pythonlanguage python3语句必须在层次结构级别上配置[edit system scripts]

注意:

Junos OS 19.4R1 和更高版本支持 Python 3。

是的

是的

脚本必须在适合该脚本类型的层次结构下的配置中启用

是的

是的

访问权限

所有 Python 自动化脚本均使用用户和组的访问权限执行 nobody

Python 提交和操作脚本使用调用脚本的用户的访问权限执行。

Python 事件和 SNMP 脚本使用语句中 python-script-user 配置的用户的访问权限执行。如果未配置语 python-script-user 句,则脚本将按照用户和组 nobody的访问权限执行。

发布历史记录表
释放
描述
22.3R1-EVO
从 Junos OS Evolved 版本 22.3R1 开始,Python 3 是默认版本,仅支持 Python 版本执行 Python 脚本。
21.2R1-EVO
从 Junos OS Evolved 版本 21.2R1 开始, language python 该语句默认配置在配置组中 junos-defaults
16.1R3
从 Junos OS 16.1R3 版开始,部分未签名 Python 脚本的所有权和访问权限要求将进行修改。