Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

示例:使用操作脚本导出文件

此示例中的 op 脚本 使用 Junos XML 协议 file-put 操作写入远程服务器和本地设备上的文件。

要求

此示例使用运行 Junos OS 的设备。

概述和操作脚本

Junos XML 协议 file-put 操作会创建一个文件,并将指定的内容写入该文件。使用 file-put 命令的基本语法如下:

以下标记元素与命令一起使用 file-put 。这些标记可以按任意顺序放置,但除 file-contents。标记 file-contents 元素必须是列表中的最后一个标记。

  • delete-if-exist-(可选)如果包含,则任何现有文件将被覆盖。如果省略标记,则当遇到现有文件时,将返回错误。

  • encoding-(必需)指定使用的编码类型。您可以使用 ASCIIbase64 编码。

  • filename-(必需)此标记中包含要创建的文件的完整或相对路径和文件名。使用相对路径时,指定的路径是相对于用户主目录的。如果指定的目录不存在,系统将返回“目录不存在”错误。

  • permission-(可选)在远程服务器上设置文件的 UNIX 权限。例如,要为用户应用读/写访问权限和对其他人的读取访问权限,应将权限值设置为 0644。有关 UNIX 权限的完整说明,请参阅 chmod 命令。

  • file-contents—(必需)要导出的 ASCII 或 base64 编码文件内容。这必须是列表中的最后一个标记。

XSLT 语法

以下示例脚本执行 Junos XML API 请求,并将结果导出到远程设备上的文件和本地设备上的文件。脚本采用三个参数:远程设备的 IP 地址或主机名、文件名和文件编码。变量 arguments 在脚本的全局级别进行声明,以便在命令行界面 (CLI) 中显示参数名称和说明。

该脚本会调用本地设备上的 Junos XML API <get-software-information> 请求,并将结果存储在变量中result。该脚本会声明该fileput变量,其中包含该操作的file-put远程过程调用 (RPC)。命令行参数定义和encoding标记元素的值filename。如果缺少必需参数myhost,则脚本会发出错误并停止执行。否则,脚本会提示输入连接到远程设备的用户名和密码。

如果与远程设备的连接成功,则脚本将在连接句柄的上下文中执行 RPC。操作的 file-put 输出是函数的结果 jcs:execute() ,存储在变量中 out 。如果操作遇到错误,脚本将错误打印到 CLI。 file-put 如果操作成功,则标记元素指定 file-contents 的内容将导出到远程设备上的指定文件。然后,与远程主机的连接将关闭。该脚本还会将内容导出到本地设备上的相同文件。

示例脚本包括可选标记元素 permissiondelete-if-exist 操作 file-put 。通过包括标记 delete-if-exist ,脚本将覆盖远程和本地主机上任何同名的现有文件。在此示例中, permission 标记设置为 0644

SLAX 语法

配置

程序

逐步过程

要下载、启用和测试脚本:

  1. 将 XSLT 或 SLAX 脚本复制到文本文件中,根据需要将文件命名 为 export.xslexport.slax ,并将其复制到设备上的 /var/db/script/op/ 目录中。

  2. 在配置模式下,在 file 层次结构级别包括语句 [edit system scripts op] ,并根据需要 导出.xslexport.slax

  3. commit and-quit发出命令。

  4. 通过发出 op export 操作模式命令来执行操作脚本,并包括任何必要的参数。

验证

验证操作脚本参数

目的

验证参数名称和说明是否显示在 CLI 中。

行动

发出 op exort ? 操作模式命令。CLI 根据脚本中的全局 arguments 变量中的定义,列出了脚本参数的可能补全。

验证操作脚本执行

目的

验证脚本是否按预期运行。

行动

发出 op export myhost host encoding encoding filename file 操作模式命令,并在出现提示时包括适当的用户名和密码。如果脚本执行成功,RPC 请求的结果 <get-software-information> 将写入远程设备和本地设备上的文件。例如:

如果未能在命令行参数中提供远程设备的 IP 地址或主机名,则脚本会发出错误并停止执行。

如果省略操作的delete-if-existfile-put子标记,并且指定的文件已存在,则脚本报告错误。

如果执行脚本并包括远程或本地主机上都不存在的目录路径,则脚本将报告错误。