NETCONF 客户端的 Python 库
项目描述
ncclient 是一个 Python 库,可促进围绕 NETCONF 协议的客户端脚本和应用程序开发。ncclient由Shikar Bhushan <http://schmizz.net>开发。它现在由Leonidas Poulopoulos (@leopoul) <http://ncclient.org> 和Einar Nilsen-Nygaard (@einarnn) 维护。
文档: http: //ncclient.readthedocs.org
Github: https ://github.com/ncclient/ncclient
要求:
Python 2.7 或 Python 3.4+
设置工具 0.6+
帕拉米科 1.7+
lxml 3.3.0+
libxml2
libxslt
如果您使用的是 Debian/Ubuntu,请安装以下库(通过 aptitude 或 apt-get):
libxml2-dev
libxslt1-dev
安装:
[ncclient] $ sudo python setup.py install
或通过点子:
pip install ncclient
例子:
[ncclient] $ python examples/juniper/*.py
用法
获取设备运行配置
使用交互式 Python 控制台 (ipython) 或在代码中集成以下内容:
from ncclient import manager with manager.connect(host=host, port=830, username=user, hostkey_verify=False) as m: c = m.get_config(source='running').data_xml with open("%s.xml" % host, 'w') as f: f.write(c)
从 0.4.1 起,ncclient 集成了瞻博网络和思科的分支,引入了许多新概念,分别简化了瞻博网络和思科设备的管理。最大的变化是在连接参数中引入了设备处理程序。例如,要调用 Juniper 的函数和参数,必须使用device_params={'name':'junos'}重写上述内容 :
from ncclient import manager with manager.connect(host=host, port=830, username=user, hostkey_verify=False, device_params={'name':'junos'}) as m: c = m.get_config(source='running').data_xml with open("%s.xml" % host, 'w') as f: f.write(c)
设备处理程序易于实施并被证明是面向未来的。
支持的设备处理程序
瞻博网络:device_params={'name':'junos'}
- 思科:
企业社会责任:device_params={'name':'csr'}
Nexus:device_params={'name':'nexus'}
IOS XR:device_params={'name':'iosxr'}
IOS XE:device_params={'name':'iosxe'}
- 华为:
device_params={'名称':'华为'}
device_params={'name':'huaweiyang'}
诺基亚 SR 操作系统:device_params={'name':'sros'}
H3C:device_params={'name':'h3c'}
HP Comware:device_params={'name':'hpcomware'}
服务器或上面没有的任何东西:device_params={'name':'default'}
变化 | 简短的
v0.6.12
修复了 Juniper ExecuteRPC 支持的意外损坏
v0.6.11
支持自定义客户端功能
重构/重构示例脚本
修正了一些小错误
次要单元测试重构
v0.6.10
NETCONF 回拨 (RFC8071) 支持
YANG 1.1动作支持
诺基亚 SR OS 设备处理程序支持
删除旧的 ALU base-r13 API 文档
增加测试覆盖率
自 0.6.9 以来,来自各种贡献者的各种错误修复和小改进(请参阅提交历史记录)
感谢所有贡献者!
v0.6.9
修复中断 API 更改
v0.6.8
由于意外破坏 API 更改而被拉取
- 各种小更新和错误修复,但值得注意的是:
支持 XPath 查询的命名空间前缀
编辑配置参数验证
支持多个 RPC 错误
获取支持的设备类型的 API
支持具有多个顶级标签的子树过滤器
感谢所有贡献者!
v0.6.7
自 0.6.6 以来来自各种贡献者的各种错误修复(请参阅提交历史记录)
v0.6.6
如果在方法调用中未指定,则从配置文件中读取 ssh 超时
毒物支持
巨大的 XML 树解析器支持
添加可选的绑定地址以进行连接
v0.6.5
更新了 0.6.5 版本的 README
v0.6.4
将 selectors2 固定到 Python 版本 <= 3.4
修复配置示例以实际使用 nc 命名空间
修复:使用 ssh_config 文件时正确设置 paramiko 的端口
测试:添加测试以检查 ProxyCommand 使用正确的端口
更新 py3 的提交
增强对阿尔卡特朗讯的支持
Juniper RPC:允许在 CompareConfiguration 中指定格式
NETCONF 1.1 帧的解析不再解码每个字节块
修复 create_subscription 中的过滤器
根据能力 URI 中公布的支持模式验证“with-defaults”模式
v0.6.3
修复使用 PyPi 注册的主页链接
SSH 主机密钥检查
更新了 junos.py 以解决 RestrictedUser 错误
关闭 SSH 会话时关闭通道
调用 self.parse() 以确保在签入 ok() 之前检测到错误(如果有)
v0.6.2
迁移到用户选择器而不是选择器,允许更大规模的操作
改进的 netconf:base:1.1 解析
会话关闭时优雅退出
v0.6.0
修复使用新的 Python 3.7 关键字 async
重新启用 Python 3.7
v0.5.4
自 0.5.3 以来的小改动汇总
由于 async 关键字问题而禁用 Python 3.7
v0.5.3
添加通知支持
添加对 ecdsa 密钥的支持
各种错误修复
v0.5.2
添加对 Python 3 的支持
提高 Junos ioproc 性能
性能改进
更新的测试用例
许多错误和性能修复
v0.4.7
添加对 netconf 1.1 的支持
v0.4.6
修复多个 RPC 错误生成
添加对取消提交和持久参数的支持
添加更多示例
v0.4.5
添加华为设备支持
为 hpcomware v7 设备添加 cli 命令支持
添加H3C支持,支持H3C CLI、Action、Get_bulk、Save、Rollback等。
添加阿尔卡特朗讯支持
重写多个错误处理
添加工作服支持,在 README.md 中带有防护罩
多个时将严重性级别设置为更高
简化日志记录和多错误报告
保留错误的堆栈跟踪
仅检查 hostkey_verify 上的已知主机
添加检查设备发回 null error_text
修复 RPC.raise_mode
指定 hostkey_verify=False 不应 load_known_hosts
检查 rpc-error 元素上的正确字段
v0.4.3
Nexus exec_command 操作
允许在 Cisco Nexus 中指定多个 cmd 元素
为嵌套的 rpc 错误更新 rpc
防止线程中的竞争条件
防止在会话关闭时挂起
v0.4.2
通过 ~/.ssh/config 解析支持 paramiko ProxyCommand
添加特定于瞻博网络的提交操作
添加华为设备支持
测试/特拉维斯支持
对瞻博网络设备的 ioproc 传输支持
更新 Cisco CSR 设备处理程序
许多次要和主要修复
v0.4.1
如果找到自定义处理程序,则在回复之间切换
添加瞻博网络、思科和默认设备处理程序
在设备参数中允许首选 SSH 子系统名称
允许迭代多个 SSH 子系统名称。
致谢
v0.6.11:@musicinmybrain、@sstancu、@earies
v0.6.10:@vnitinv、@omaxx、@einarnn、@musicinmybrain、@tonynii、@sstancu、Martin Volf、@fredgan、@avisom、Viktor Velichkin、@ogenstad、@earies
v0.6.9: [Fred Gan]( https://github.com/fredgan )
v0.6.8:[Fred Gan]( https://github.com/fredgan )、@vnitinv、@kbijakowski、@iwanb、@badguy99、@liuyong、Andrew Mallory、William Lvory
v0.6.7:@vnitinv、@chaitu-tk、@sidhujasminder、@crutcha、@markgoddard、@ganeshrn、@songxl、@doesitblend、@psikala、@xuxiaowei0512、@muffizone
v0.6.6:@sstancu、@hemna、@ishayansheikh
v0.6.4:@davidhankins、@mzagozen、@knobix、@markafarrell、@psikala、@moepman、@apt-itude、@yuekyang
v0.6.3:@rdkls、@Anthony25、@rsmekala、@vnitinv、@siming85
v0.6.2:@einarnn、@glennmatthews、@bryan-stripe、@nickylba
v0.6.0:埃纳尔尼尔森-尼加德
v0.5.4:各种
v0.5.2: Nitin Kumar , Kristian Larsson , palashgupta , Jonathan Provost , Jainpriyal , sharang , pseguel , nnakamot , Алексей Пастухов , Christian Giese , Peipei Guo , Time Warner Cable Openstack Team
v0.4.7:Einar Nilsen-Nygaard、Vaibhav Bajpai、Norio Nakamoto
v0.4.6: Nitin Kumar , Carl Moberg , Stavros Kroustouris
v0.4.2:katharh、Francis Luong (Franco)、Vincent Bernat、 Juergen Brendel、Quentin Loos、Ray Solomon、Sebastian Wiesinger、Ebben Aries