Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

使用 NETCONF Java 工具包执行操作任务

使用设备对象方法执行 RPC 和操作命令

NETCONF Java 工具包 Device 对象具有向远程设备请求信息和执行操作任务的方法。在适当时,方法将过载,以采用大量不同格式。

执行 RPC

要执行远程过程调用 (RPC),请对 executeRPC() 对象调用 Device 方法。 executeRPC() 该方法已过载,接受对象、对象 String net.juniper.netconf.XMLorg.w3c.dom.Document 对象作为参数。RPC 由 NETCONF 服务器处理,该服务器将 RPC 回复作为 XML 对象返回。

方法语法为:

以下代码片段使用字符串Junos执行 Junos XML API get-chassis-inventory RPC。 get-chassis-inventory RPC 等同于 Junos OS 命令行界面 show chassis hardware (CLI)。

执行操作模式命令

要执行操作模式命令,向运行 Junos OS 的设备上请求信息或在设备上执行操作任务,请对对象 runCliCommand() 调用 Device 方法。 runCliCommand() 此方法将一Junos OS操作模式命令发送到远程设备的 NETCONF 服务器。参数是表示将在命令中输入的操作模式命令的Junos OS CLI。RPC 由 NETCONF 服务器处理,然后返回 RPC 回复。从Junos OS 11.4 版开始,返回字符串与在命令中所看到的 ASCII 格式Junos OS CLI。对于运行早期版本的 Junos OS,返回字符串包含Junos XML 标记元素。

方法语法为:

以下代码片段将 CLI 操作模式命令发送到运行以下命令的 show chassis hardware 设备的 NETCONF Junos OS:

示例:用于执行操作请求 RPC 的 NETCONF Java 应用程序

此 NETCONF Java 工具包程序执行 RPC 从设备获取操作信息,然后打印至标准输出。此示例用作创建和执行基本 NETCONF Java 工具包程序的指令示例。

要求

  • NETCONF Java 工具包安装在配置管理服务器上。

  • 客户端应用程序可以登录 NETCONF 服务器所在的设备。

  • NETCONF 服务器所在的设备上启用了 SSH 上的 NETCONF 服务。

概述

您可以使用 NETCONF Java 工具包从远程设备请求操作信息。以下示例说明了如何创建 NETCONF Java 工具包程序,以在运行 Junos 的设备上从 Junos XML API 执行操作Junos OS。该示例还介绍如何编译代码、执行程序以及验证结果。

配置

创建 Java 程序

逐步过程

要构建包含操作请求代码的 Java 程序文件:

  1. 为文件指定一个描述性名称。

    文件名必须与类名称相同。此示例将文件和类命名为 GetChassisInventory

  2. 包括相应的导入语句、类声明和 Java 方法的代码 main()

  3. main() 中,创建 Device 对象并调用 connect() 方法。

    这会在 SSHv2 上与 NETCONF 服务器创建默认 NETCONF 会话。您必须使用特定设备的连接和身份验证参数更新代码。

    建立对象 Device 后,您可以在设备上执行 NETCONF 操作。有关与 NETCONF 操作对应的可用方法的完整列表,请参阅 NETCONF Java 工具包 Javadocs。

  4. 调用 executeRPC() 方法,将操作 request RPC 命令作为参数。

    此示例使用 Junos XML API get-chassis-inventory RPC。在 XML 中返回的回复存储在变量 rpc_reply 中。

  5. 添加代码,对 RPC 回复采取措施。

    以下代码转换 NETCONF 服务器对字符串的回复,并打印至屏幕:

  6. 通过呼叫设备对象上的方法关闭 close() 设备和释放资源。

结果

完整计划包括:

编译和运行 Java 程序

逐步过程

您需要一个 Java 编译器来编译源代码和创建可执行程序。

要编译代码,在配置管理服务器上运行程序:

  1. 编译 GetChassisInventory.java 文件。

  2. 执行 GetChassisInventory 计划。

验证

验证程序执行

目的

验证 GetChassisInventory 程序是否正常运行。

行动

如果程序成功执行,则建立连接,并创建与指定设备的 NETCONF 会话。程序将 RPC 发送到 NETCONF 服务器,服务器会使用标记元素中随附的请求的操作信息 get-chassis-inventory <rpc-reply> 做出响应。程序会打印标准回复。下面是示例 RPC 回复,其中省略了一些输出,简洁性。

故障 排除

NETCONF 异常故障排除

问题

NETCONF 例外,您看到以下错误消息:

NETCONF over SSH 的 NETCONF 可能未在 NETCONF 服务器所在的设备上启用,也可能在不同的端口上启用。

解决 方案

确保您在 NETCONF 服务器所在的设备上在 SSH 上启用了 NETCONF。由于示例程序在参数中未指定特定端口号,因此 Device NETCONF 会话在默认 NETCONF-over-SSH 端口 830 上建立。要验证运行 SSH 的设备的默认端口上是否启用了 SSH 上的 NETCONF Junos OS,请在远程设备上输入以下操作模式命令:

如果缺少配置层次结构,在配置模式下发出以下语句以在默认端口上的 netconf SSH 上启用 NETCONF:

如果配置层次结构指定了非默认端口的端口,在对象构造参数中包括 netconf Device 新端口号。例如,为端口 12345 上的 SSH 上的 NETCONF 配置了以下设备:

要纠正连接问题,在参数中包括新端口 Device 号。

示例:用于执行命令的 NETCONF Java CLI应用程序

此 NETCONF Java 工具包程序演示了此方法,此方法将指定的 Junos OS 操作模式命令发送到 NETCONF 服务器,向运行 Junos OS 的设备上请求信息或 runCLICommand() 执行操作Junos OS。

要求

  • 路由、交换或运行安全Junos OS。

  • NETCONF Java 工具包安装在配置管理服务器上。

  • 客户端应用程序可以登录 NETCONF 服务器所在的设备。

  • NETCONF 服务器所在的设备上启用了 SSH 上的 NETCONF 服务。

概述

NETCONF Java 工具包类包含方法,此方法Junos OS CLI操作模式命令并将其转换为 XML 中的等效 Device runCliCommand() RPC,然后由 NETCONF 服务器处理。 runCLICommand() 此方法作为参数,表示在命令中输入的操作模式命令Junos OS CLI。

以下示例在运行 Junos OS show chassis hardware 的设备上执行 命令。方法的返回值是一个字符串。从Junos OS 11.4 版开始,返回字符串与在命令中所看到的 ASCII 格式Junos OS CLI。对于运行早期版本的 Junos OS,返回字符串包含一Junos XML 标记元素。

配置

创建 Java 程序

逐步过程

要构建 Java 程序文件:

  1. 为文件指定一个描述性名称。

    文件名必须与类名称相同。此示例将文件和类命名为 ExecuteCLICommand

  2. 将代码添加到文件中并更新环境特定变量,例如远程主机 IP 地址、用户名、密码和 <rpc-reply> 标记元素。

    ExecuteCLICommand.java程序的完整 Java 代码在这里展示。

编译和运行 Java 程序

逐步过程

您需要一个 Java 编译器来编译源代码和创建可执行程序。

要编译代码,在配置管理服务器上运行程序:

  1. 编译 ExecuteCLICommand.java 文件。

  2. 执行 ExecuteCLICommand 程序。

验证

验证程序执行

目的

验证 ExecuteCLICommand 程序是否正确运行。

行动

如果程序成功执行,则建立连接并创建与指定设备的 NETCONF 会话。程序会将 Junos OS CLI 操作模式命令 show chassis hardware 转换为 RPC,并将 RPC 发送到 NETCONF 服务器。服务器响应标记元素中随附的所请求操作信息 程序将解析 <rpc-reply> RPC 回复并打印生成的机箱清单。以下样本输出来自 瞻博网络 m7i 路由器。

在运行 Junos OS 11.4 或更高版本的设备上,输出采用 ASCII 格式的文本,与应用程序的输出CLI。

在运行 11.3 Junos OS 版本上运行的设备上,输出包含Junos XML 标记元素。

示例:用于打印组件温度的 NETCONF Java 应用程序

此 NETCONF Java 工具包程序将运行该组件的设备上组件的名称和Junos OS。

要求

  • 路由、交换或运行安全Junos OS。

  • NETCONF Java 工具包安装在配置管理服务器上。

  • 客户端应用程序可以登录 NETCONF 服务器所在的设备。

  • NETCONF 服务器所在的设备上启用了 SSH 上的 NETCONF 服务。

概述

以下示例将执行 Junos XML API RPC,这相当于运行 Junos OS get-environment-information show chassis environment 的设备的操作模式Junos OS。程序将解析 RPC 回复,而对于列出温度的所有组件,程序将打印组件名称和相应的温度。

RPC 请求的 get-environment-information RPC 回复格式为:

要解析回复,程序将使用 findNodes() 该方法返回对象 org.w3c.dom.Node 列表。对于每个 <environment-item> 节点,程序获取子节点列表。如果子节点列表中存在温度元素,程序将打印此环境项目的名称和温度。

配置

创建 Java 程序

逐步过程

要构建 Java 程序文件:

  1. 为文件指定一个描述性名称。

    文件名必须与类名称相同。此示例将该文件和类命名为 ShowTemps

  2. 将代码添加到文件中并更新环境特定变量,例如远程主机 IP 地址、用户名、密码和 <rpc-reply> 标记元素。

    ShowTemps.java程序的完整 Java 代码在这里展示。

编译和运行 Java 程序

逐步过程

您需要一个 Java 编译器来编译源代码和创建可执行程序。

要编译代码,在配置管理服务器上运行程序:

  1. 编译 ShowTemps.java 文件。

  2. 执行 ShowTemps 程序。

验证

验证结果

目的

验证 ShowTemps 程序是否正确运行。

行动

如果程序成功执行,则建立连接,并创建与指定设备的 NETCONF 会话。然后,程序执行 Junos XML API RPC、解析 RPC 回复,以及打印包含子节点 get-environment-information 的所有环境项目 <temperature>

以下示例输出来自 m7i 瞻博网络: