启用 Op 脚本并定义脚本别名
操作 (op) 脚本存储在设备的硬盘中 /var/db/scripts/op 目录中,或存储在 /config/scripts/op 目录中的闪存驱动器上。只有 Junos OS super-user 登录类的用户才能在这些目录中访问和编辑文件。有关设置脚本存储位置的信息,请参阅 闪存中的 存储和启用 Junos 自动化脚本 和 存储脚本。
为防止在运行 Junos OS 的设备上执行未经授权的 Python 代码,未签名的 Python 脚本必须满足某些要求,才能在设备上执行脚本。从 Junos OS 版本 16.1R3 开始,未签名的 Python 脚本必须归 Junos OS super-user 登录类中的 root 或用户所有,并且只有文件所有者才能为该文件写入许可。在 Junos OS 16.1R3 版之前,未签名的 Python 脚本必须仅归 root 用户所有。有关在运行 Junos OS 的设备上执行 Python 自动化脚本的要求的详细信息,请参阅 在 Junos 设备上执行 Python 自动化脚本的要求。
如果设备具有两个路由引擎,并且您想要启用操作脚本在两个路由引擎上执行,则可以将脚本复制到两个路由引擎上的 /var/db/scripts/op 或 /config/scripts/op 目录,或者可以发出 commit synchronize scripts 命令来同步配置并将脚本复制到其他路由引擎,作为提交操作的一部分。
您必须先启用操作脚本才能执行。要启用操作脚本,请在层次结构级别中[edit system scripts op]包含file filename语句,并指定包含操作脚本的文件名称。只有属于 Junos OS super-user 登录类的用户才能启用操作脚本。
[edit system scripts op] user@host# set file filename
SLAX 和 Python 脚本必须在配置中的实际脚本名称和文件名中分别包括 .slax 或 .py 文件名扩展。XSLT 脚本不需要文件名扩展,但我们强烈建议您附加 .xsl 扩展。无论您是否选择在文件中包含 .xsl 扩展,您在 [edit system scripts op file] 层级添加的文件名都必须与目录中的脚本文件名完全匹配。例如,如果 XSLT 脚本文件名是 script1.xsl,则必须在配置层次结构中包含 script1.xsl 以启用脚本:如果 XSLT 脚本文件名是 脚本1,则必须在配置层次结构中包含 脚本1 。
或者,您可以为操作脚本定义别名。要定义别名,请在层次结构级别中[edit system scripts op file filename]包含 command 语句。
[edit system scripts op file filename] user@host# set command filename-alias
默认情况下,您无法在运行 Junos OS 的设备上执行未签名的 Python 脚本。要允许执行未签名的 Python 自动化脚本,满足 Junos 设备上执行 Python 自动化脚本的要求,必须在层次结构级别配置 language python 或 language python3 语句 [edit system scripts] 。
[edit system scripts] user@host# set language (python | python3)
要确定设备上当前启用了哪些操作脚本,请使用 show 命令显示在 [edit system scripts op] 层次结构级别上配置的文件。
[edit system scripts op] user@host# show
为确保启用的文件已在设备上,请使用file list /var/run/scripts/op操作模式命令列出 /var/run/scripts/op/ 目录的内容。
user@host> file list /var/run/scripts/op
要执行脚本,您可以指定操作脚本文件名或别名。
user@host> op (filename | filename-alias)
super-user 登录类中的 root 或用户所有,并且只有文件所有者才能为该文件写入许可。