问题标签 [ietf-netconf]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
7441 浏览

java - Java NETCONF 库?

有谁知道是否有一个 Java 库可以通过 NETCONF 管理配置?

0 投票
2 回答
2663 浏览

java - 从 YANG 数据模型生成 XML RPC NETCONF 请求的标准方法是什么

我正在尝试找到一种更好的方法来生成 XML RPC 请求以发送到其中带有 NETCONF 标记的设备。

我们知道请求应该是什么样子,所以我正在做的是,对 XML-RPC 请求 XML 进行硬编码,其中包含占位符。以后可以用实际输入替换这些占位符。

例如:

在此示例中,@device_mac 将在发送请求时被替换。但是有些我觉得我在硬编码请求 XML。有没有更好的方法来生成请求 XML?

Netconf 数据将使用 YANG/YIN 文件建模。有没有办法可以利用这些文件至少生成 NETCONF 请求部分?

0 投票
2 回答
2148 浏览

python - 连接 netconf 时抛出意外的会话关闭错误

我正在使用 ncclient 连接到 netconf。但是,当我尝试通过 python 连接时

抛出“ncclient.transport.errors.SessionCloseError:意外的会话关闭”错误。我正在使用的代码片段如下

对此的任何帮助都非常受欢迎。我可以使用公钥连接到远程服务器,因此我没有在连接中提供密码

在 netconf 服务器日志中,我可以看到拒绝访问错误。(即使我尝试使用用户名和密码,我也遇到了同样的问题)

0 投票
1 回答
1231 浏览

python - 如何在运行时覆盖包中的内容?

[编辑:我正在运行 Python 2.7.3]

我是一名网络工程师,我一直在破解ncclient(网站上的版本很旧,是我一直在使用的版本),以使其与 Brocade 的 NETCONF 实现一起工作。为了让它与我们的 Brocade 设备一起工作,我必须进行一些调整,但我必须分叉出包装并对源本身进行调整。这对我来说并不“干净”,所以我决定尝试“以正确的方式”做它并覆盖包中存在的一些东西*;具体三件事:

  1. 一个名为 build() 的“静态方法”,属于 HelloHandler 类,它本身是 SessionListener 的子类
  2. RPC 类的“._id”属性(最初的实现使用 uuid,而 Brocade 盒子不太喜欢这个,所以在我最初的调整中,我只是把它改成了一个永远不会改变的静态值)。
  3. 对构建 XML 过滤器属性的 util 函数的小调整

到目前为止,我在文件中有这段代码brcd_ncclient.py

然后在我的文件中netconftest.py我有:

每当我运行我的netconftest.py文件时,我都会收到超时错误,因为在日志文件中ncclient.log我可以看到我的子类定义(即更改 XML 以进行 hello 交换的那个 - staticmethod build)被忽略并且 Brocade 框不知道如何解释原始 ncclientHelloHandler.build()方法正在生成的 XML**。我还可以在生成的日志文件中看到,我尝试覆盖的其他内容也被忽略了,例如消息 ID(静态值为 1)以及 XML 过滤器。

所以,我在这里有点不知所措。我确实从我的研究中找到了这个博客文章/模块,它似乎完全符合我的要求,但我真的希望能够通过手工而不是使用有人已经编写的模块作为不必自己解决这个问题的借口。

*有人可以向我解释这是否是“猴子补丁”并且实际上很糟糕吗?我在研究中看到猴子修补是不可取的,但是这个答案这个答案让我很困惑。对我来说,我想要覆盖这些位将使我不必维护我自己的 ncclient 的整个分支。

**为了提供更多上下文,ncclient.transport.session.HelloHandler.build()默认情况下生成的这个 XML,Brocade 框似乎不喜欢:

我的重写build()方法的目的是将上面的 XML 转换成这个(Brocade 确实喜欢:

0 投票
1 回答
659 浏览

ruby - 从 Ansible Juniper NetConf 模块了解 Netconf::OpenError

我正在使用 Ansible 将配置推送到一些瞻博网络设备上。为了开始,我正在尝试从此处的官方演示中调整事实收集剧本。 我已修改主机文件以使用我的实际瞻博网络设备之一。Ansible 似乎知道所有模块库的位置,但由于某种原因,它抛出了一个似乎没有文档的错误:Netconf::OpenError

除了在我自己的主机上使用主机文件之外,我还在 tasks/nc_check.yml 中更改了端口 22 而不是端口 830。这是因为(据我所知),我可以进入交换机的只有 SSH(端口 22)

瞻博网络模块都是用 Ruby 编写的。以下是我安装的所有依赖项的版本:

下面是运行演示提供的相同剧本的输出。我的问题是:

  1. 似乎是什么导致了 Netconf::OpenError 错误?
  2. 我应该期望在瞻博网络交换机上为 Netconf 使用不同的端口吗?我会在瞻博网络配置中查看什么以了解要使用的端口?(EX4200 和 EX4500)

    ansible-playbook junos/get_junos_facts.yml -i hosts -vvv

    PLAY [显示 Junos Facts,确保使用 -v] * ** * ** * ** * ** * ***

    任务:[检查设备的 NETCONF 可达性] * ** * ** * ** * ** * *** <10.113.7.002> EXEC ['/bin/sh', '-c', 'mkdir -p $HOME/.ansible/tmp/ansible-1384993979.41-2345029032433 && chmod a+rx $HOME/.ansible/tmp/ansible -1384993979.41-2345029032433 && echo $HOME/.ansible/tmp/ansible-1384993979.41-2345029032433'] <10.113.7.002> REMOTE_MODULE wait_for host="10.113.7.002" port=22 timeout="002" <10.13. /10.13 tmp/tmpwhWU6X TO /home/gateway/.ansible/tmp/ansible-1384993979.41-2345029032433/wait_for <10.113.7.002> EXEC ['/bin/sh', '-c', '/usr/bin/python /home/网关/.ansible/tmp/ansible-1384993979.41-2345029032433/wait_for;rm -rf /home/gateway/.ansible/tmp/ansible-1384993979.41-2345029032433/ >/dev/null 2>&1'] ok: [10.113.7.002] => {"changed": false, "elapsed": 0 , “物品”:

    任务:[联系目标以获取Junos事实] * ** * ** * ** * ** * **** <10.113.7.002> EXEC ['/bin/sh', '-c', 'mkdir -p $HOME/.ansible/tmp/ansible-1384993979.48-89494360697375 && chmod a+rx $HOME/.ansible/tmp/ansible -1384993979.48-8949494360697375 && echo $ home/.ansible/tmp/ansible-138499397979.48-8949494949494360697375'] gateway/.ansible/tmp/ansible-1384993979.48-89494360697375/junos_get_facts <10.113.7.002> PUT /tmp/tmp28DLzs TO /home/gateway/.ansible/tmp/ansible-1384993979.48-89494360697375/arguments <10002>EC.1 /bin/sh', '-c', '/usr/local/bin/ruby /home/gateway/.ansible/tmp/ansible-1384993979.48-89494360697375/junos_get_facts /home/gateway/.ansible/tmp/ansible-1384993979.48 -89494360697375/参数;rm -rf /home/gateway/.ansible/tmp/ansible-1384993979.48-89494360697375/ >/dev/null 2>&1'] 失败:[10.113.7.002] => {"failed": true, "parsed": false无效的输出是:/var/lib/gems/1.9.1/gems/netconf-0.3.1/lib/net/netconf/transport.rb:49:inopen': Netconf::OpenError (Netconf::OpenError) from /var/lib/gems/1.9.1/gems/netconf-0.3.1/lib/net/netconf/transport.rb:28:in初始化'从 /var/lib/gems/1.9.1/gems/netconf-0.3.1/lib/net/netconf/ssh.rb:21:in initialize' from /home/gateway/.ansible/tmp/ansible-1384993979.48-89494360697375/junos_get_facts:46:innew' 来自 /home/gateway/.ansible/tmp/ansible- 1384993979.48-89494360697375/junos_get_facts:46:in `'

    致命:所有主机都已失败——正在中止

    PLAY RECAP * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * * 重试,使用:--limit @/主页/网关/get_junos_facts.retry

    10.113.7.002 :正常=1 更改=0 无法访问=0 失败=1

0 投票
2 回答
747 浏览

net-snmp - Netconf + Yangcli + get + filter

我刚开始使用 Netconf 服务器,我想用它玩。我将OpenYuma安装为 netconf 服务器,对于客户端,我将使用提供的yangcli作为第一种方法。

我的问题是我不能在 get 命令中使用过滤,因为在教程和文档中没有任何可用的示例,只使用了以前编写的(外部)xml 文件,这些文档中没有显示。

我知道有两种类型的过滤:subtreexpath。我不在乎,应该使用哪个,我只想正确使用其中一个。

如果我输入yangcli 我会得到很多数据。在这种情况下,我只想获取带有所有叶子的memInfo部分。

请补充/更正我的命令!!!

yangcli>get filter=('xpath','memInfo') ???

此命令不会抛出任何错误,但只会接收到空数据对象。谢谢

0 投票
1 回答
1308 浏览

python - 遇到 NETCONF python 库的 xml 无效属性名称

我正在使用高级 python 库ncclient来编辑 NETCONF 设备的配置,但我遇到了这个错误:

我怀疑这与 xml 命名空间问题有关,因为 lxml 库抱怨属性名称

我正在做的就是创建与设备的连接然后关闭它

这是一个堆栈跟踪:

0 投票
2 回答
202 浏览

netty - netty.io 是否支持 netconf 协议?

我正在尝试创建一个 netconf 客户端。我已经在项目中使用了 netty.io jar。我想知道 netty.io 是否支持 netconf 或者有什么计划吗?有什么方法可以使用 netty.io 编写 neconf 客户端吗?

我编写了简单的 ssh java 程序,但它没有连接到特定端口上的 netconf。所以我正在考虑使用 netty.io 库来做到这一点。

0 投票
1 回答
1708 浏览

.net - NETCONF .net/c# 实现

有人熟悉 NETCONF 网络管理协议的 C#/.Net 实现吗?

我试图查看NetConfWiki,但找不到任何 .net 实现。

0 投票
0 回答
244 浏览

arm - 为 beaglebone (ARM) 编译 NETCONF

我需要从https://github.com/CESNET/libnetconf为 beaglebone 编译 libnetconf。但是配置脚本给出错误并退出。日志的最后一部分是

配置运行如下

libpthreads 存在。我错过了什么?