1. 参考资料

工具包GIT地址 : https://github.com/Juniper/netconf-java

使用教程 : https://www.juniper.net/documentation/cn/zh/software/junos/netconf-java-toolkit/topics/task/netconf-java-toolkit-program-creating-and-executing.html

2. 下载&编译工具包

# 1. 下载git地址中的工具包到本地, 用IDEA打开处理
- 此处为v2.1.1版本
- https://github.com/Juniper/netconf-java/releases# 2. 添加maven配置, 打包处理, 配置如下
- 将如下配置 到maven 的plugin中 解决不能将依赖打进来的问题
- 生成的jar包保存 `netconf-java-2.1.1.6-SNAPSHOT-jar-with-dependencies.jar`
<!-- Maven Assembly Plugin -->
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-assembly-plugin</artifactId><version>2.4.1</version><configuration><!-- get all project dependencies --><descriptorRefs><descriptorRef>jar-with-dependencies</descriptorRef></descriptorRefs></configuration><executions><execution><id>make-assembly</id><!-- bind to the packaging phase --><phase>package</phase><goals><goal>single</goal></goals></execution></executions>
</plugin>

3. 添加jar包到自己的类路径

# 在自己的项目中将该打包好的jar包右键选择 As a library

4. 编写工具类 NetconfUtils

# 编写该工具类
- NetconfUtils
import net.juniper.netconf.Device;
import net.juniper.netconf.NetconfException;
import net.juniper.netconf.XML;public class NetconfUtils {private static final String HOSTNAME = "10.10.10.10";private static final String USERNAME = "admin";private static final String PASSWORD = "123456";private static final int NETCONF_PORT = 830;/*** 要发送的xml报文 例如:* <get>* <filter type="subtree">* <users xmlns="http://netconfcentral.org/ns/user">* <user>* <name>admin</name>* </user>* </users>* </filter>* </get>** @param xmlContent* @return*/public static XML send(String xmlContent) throws NetconfException {Device device = null;XML xmlReply = null;try {device = Device.builder().hostName(HOSTNAME).userName(USERNAME).password(PASSWORD).port(NETCONF_PORT).strictHostKeyChecking(false).hostKeysFileName(null).build();device.connect();xmlReply = device.executeRPC(xmlContent);device.close();} catch (Exception e) {e.printStackTrace();throw new NetconfException("报文发送失败");} finally {if (null != device) {device.close();}}return xmlReply;}public static XML send(String deviceHOSTNAME, String deviceUSERNAME, String devicePASSWORD, int deviceNETCONFPORT, String xmlContent) throws NetconfException {Device device = null;XML xmlReply = null;try {device = Device.builder().hostName(deviceHOSTNAME).userName(deviceUSERNAME).password(devicePASSWORD).port(deviceNETCONFPORT).strictHostKeyChecking(false).hostKeysFileName(null).build();device.connect();xmlReply = device.executeRPC(xmlContent);device.close();} catch (Exception e) {e.printStackTrace();throw new NetconfException("报文发送失败");} finally {if (null != device) {device.close();}}return xmlReply;}}

5. 使用Test

使用之前打开对应设备的netconf功能

@Slf4j
public class TestMain {/*** 非启动Spring框架时取消slf4J的日志显示*/static {LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();List<Logger> loggerList = loggerContext.getLoggerList();loggerList.forEach(logger -> {logger.setLevel(Level.ERROR);});}@Testpublic void test() throws NetconfException {XML send = NetconfUtils.send("<get>\n" +"<filter type=\"subtree\">\n" +"<users xmlns=\"http://netconfcentral.org/ns/user\">\n" +"<user>\n" +"<name>admin</name>\n" +"</user>\n" +"</users>\n" +"</filter>\n" +"</get>");System.out.println(send);}}

结果

<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0" last-modified="2022-04-28T14:54:59Z" message-id="2"><data><users xmlns="http://netconfcentral.org/ns/user"><user><name>admin</name><password>$1$ROky/q82$GKYA8rTVFVyYjLb8Sh27E1</password><description/><group-id>Super</group-id></user></users></data>
</rpc-reply>

Java NetConf 使用相关推荐

  1. linux 修改java版本_Linux 有问必答:如何在 Linux 中改变默认的 Java 版本

    提问:当我尝试在Linux中运行一个Java程序时,我遇到了一个错误.看上去像程序编译所使用的Java版本与我本地的不同.我该如何在Linux上切换默认的Java版本? 当Java程序编译时,编译环境 ...

  2. Json格式的netconf转成NormalizedNode

    背景: 之前发过一篇文章 将NetConf转成NormalizedNode对象及NormalizedNode对象转回NetConf(序列化与反序列化) 请参考该文章的背景 该文章的不足之处在于 无论j ...

  3. 将NetConf转成NormalizedNode对象及NormalizedNode对象转回NetConf(序列化与反序列化)

    背景 我们可以在管理设备的时候可以通过netconf来管理,yangtools给我们提供了一个很好地工具.可以将netconf加载到NormalizedNode对象当中.这样我们就能够通过操控Norm ...

  4. 使用yangtools将yang文件转化成java

    背景 yang文件实例化之后是netconf的xml文件. java实例化之后之后java实例 yang可以转化成java文件. 该转化基于OpenDaylight Controller:MD-SAL ...

  5. NETCONF YANG语言文件语法格式

    NETCONF简介:https://blog.csdn.net/Rong_Toa/article/details/104297006 Table of Contents 一.Modules与Submo ...

  6. python-华三防火墙netconf编写移动策略

    import requests import re ##因华三防火墙restful不支持移动策略,故单独用netconf编写移动策略 # 头部信息,带上host即可 headers = {" ...

  7. JAVA的sdn控制器,软件定义网络基础---SDN控制平面

    一:SDN控制平面 一个或多个SDN控制器组成,是网络的大脑.  对底层网络交换设备进行集中管理,状态监测.转发决策以及处理和调 度数据平面的流量:  通过北向接口向上层应用开放多个层次的可编程能 ...

  8. linux 切换java_Linux中切换java的版本

    提问:当我尝试在Linux中运行一个Java程序时,我遇到了一个错误.看上去像程序编译所使用的Java版本与我本地的不同.我该如何在Linux上切换默认的Java版本? 当Java程序编译时,编译环境 ...

  9. Netconf配置及其RPC和Notification下发流程解析

    Netconf配置及其RPC和Notification下发流程解析 最近两个月一直在捣鼓netconf,现在搞得小有成效,因此总结一番,以便和广大网友进行深入探讨. 我们是基于libnetconf开源 ...

最新文章

  1. RNNTLoss使用这个可以吗
  2. 三星T5 SSD制作ubuntu18.04随身携带即插即用与win10共享文件真爽~(简单粗暴安装大法一步到位)
  3. boost::search_n相关的测试程序
  4. 服务器怎样共享文件夹共享文件夹,服务器怎样共享文件夹共享文件夹
  5. graphpad如何加标注_咱也是有挖掘机加长臂的人了
  6. 高等数学下-赵立军-北京大学出版社-题解-练习11.3
  7. 交换机的硬件故障问题总结
  8. Firefox删除DNS缓存——修改hosts后,无需关闭
  9. 目标检测——评价指标的学习笔记
  10. 部署集群linux Oracle VM VirtualBox vagrant
  11. Algorithm:数学建模大赛(CUMCM/NPMCM)之建模历年题目类型、数据分析及官方评阅要点之详细攻略
  12. 刘莹等:干旱对灌溉和雨养农田生态系统生产力的影响对比分析 【关于底图的考虑】
  13. dns劫持以及利用Linux在20ms内只返回50次ping无法链接的漏洞
  14. 免Root–获取WIFI密码
  15. SpringBoot整合thymeleaf和Shiro项目绑定JS接口安全域名问题
  16. 数理基础(概率论)------离散型和连续型分布期望方差公式
  17. 三八节买什么数码好物?三八女神节实用不吃灰的数码好物推荐
  18. 简易操作系统OS方案规划
  19. 微信公众号【程序员杂货铺】
  20. cannot delete inactive domain with nvram

热门文章

  1. vostro3070装win7_戴尔Vostro 3671装win7系统图文教程(USB完美可用)
  2. 新问题新方法 旧方法新问题
  3. android1.5怎么样,依然采用Android 1.5系统_手机_手机Android频道-中关村在线
  4. 解决proteus:555定时器报错,无法使用的问题。
  5. uva 590 dp
  6. 如何设置Android中控件的颜色透明度
  7. 想成为高级java工程师必须学习的三个技术!
  8. RC522读M1卡原理图及调试
  9. 前端大作业-Boostrap实现静态登录和后台页面
  10. 高效解决 springBoot 集成 Redis 出现的 Unable to connect to Redis 问题