ncclient

NETCONF 客户端的 Python 库。「Python library for NETCONF clients (http://ncclient.org)」

Github星跟踪图

ncclient:NETCONF 客户端的 Python 库

ncclient 是一个 Python 库,它促进了围绕 NETCONF 协议的客户端脚本编制和应用程序开发。ncclient 是 由 Shikar Bhushan 开发。现在由Leonidas Poulopoulos (@leopoul)和Einar Nilsen-Nygaard(@einarnn)维护。

文档 http://ncclient.readthedocs.org

PyPI https://pypi.python.org/pypi/ncclient

要求:

  • Python 2.7 或 Python 3.5+
  • setuptools 0.6+
  • Paramiko 1.7+
  • lxml 3.3.0+
  • libxml2
  • libxslt

如果您使用的是 Debian/Ubuntu,请安装以下库(通过 aptitude 或 apt-get):

  • libxml2-dev
  • libxslt1-dev

安装:

[ncclient] $ sudo python setup.py install

或通过 pip:

pip install ncclient

也可以通过本地克隆中的 pip 在本地进行:

pip install -U .

示例:

[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 和 Cisco 的分支,引入了许多新概念,分别简化了 Juniper 和 Cisco 设备的管理。 最大的变化是在连接参数中引入了设备处理程序。 例如,要调用瞻博网络的函数和参数,必须使用 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)

设备处理程序易于实现,并且可以证明是面向未来的。

支持的设备处理程序

实例化与已知类型的 NETCONF 服务器的连接时:

  • Juniper:device_params = {'name':'junos'}
  • Cisco CSR:device_params = {'name':'csr'}
  • Cisco Nexus:device_params = {'name':'nexus'}
  • Cisco IOS XR:device_params = {'name':'iosxr'}
  • Cisco IOS XE:device_params = {'name':'iosxe'}
  • Huawei:device_params = {'name':'huawei'}
  • 阿尔卡特朗讯:device_params = {'name':'alu'}
  • H3C:device_params = {'name':'h3c'}
  • HP Comware:device_params = {'name':'hpcomware'}
  • 服务器或其他不在上面的内容:device_params = {'name':'default'}

对于开发人员

本地运行单元测试

要在本地运行与通过 GitHub 的 CI/CD 与 Travis 集成进行的相同测试,可以遵循以下说明:

  1. 创建一个虚拟环境,在这种情况下,使用 virtualenvwrapper:
    mkvirtualenv ncclient-testing
    
  2. 安装本地 ncclient 软件包(确保您位于虚拟环境中):
    pip install -U .
    
  3. 安装测试依赖项:
    pip install nose rednose coverage coveralls mock
    
  4. 最后,运行测试:
    nosetests test --rednose --verbosity=3
    

发布

从0.6.1开始,versioneer 已集成到 ncclient 代码库中。 通过确保从用于发布的 git 标签自动生成版本号来简化新版本的创建,该 git 标签的格式必须为 v0.1.2。 Versioneer 还允许使用 pip 在本地全新安装开发版本。 例如:

$ pip install -U .
Processing /opt/git-repos/versioneer-ncclient

[...intermediate ouput elided...]

Building wheels for collected packages: ncclient
  Running setup.py bdist_wheel for ncclient ... done
  Stored in directory: /Users/einarnn/Library/Caches/pip/wheels/fb/48/a8/5c781ebcfff7f091e18950e125c0ff638a5a2dc006610aa1e5
Successfully built ncclient
Installing collected packages: ncclient
  Found existing installation: ncclient 0.6.1
    Uninstalling ncclient-0.6.1:
      Successfully uninstalled ncclient-0.6.1
Successfully installed ncclient-0.6.0+23.g0d9ccd6.dirty

因此,发布成为一个简单的过程:

  1. 确保所有测试运行正常(最好在本地和通过 Travis 运行),并且已正确更新 README.md(是的,此文件!)。
  2. 应用适当的版本标签,例如 git 标签v0.6.1
  3. 构建包:
    python setup.py bdist sdist
    
  4. 确保安装了 twine 后,测试 twine upload 上传:
    twine upload \
        --repository-url https://test.pypi.org/legacy/ \
        -u ******* -p ******* \
        dist/ncclient-0.6.1.tar.gz
    
  5. 将 git 标签推回 origin, git push --tags
  6. 进行实际的 twine 上传:
    <code>twine upload \
        -u ******* -p ******* \
        dist/ncclient-0.6.1.tar.gz
    </code>

主要指标

概览
名称与所有者nylas/nylas-mail
主编程语言JavaScript
编程语言Python (语言数: 9)
平台Linux, Mac, Cross-platform, Windows
许可证MIT License
所有者活动
创建于2014-10-16 18:29:12
推送于2022-11-24 08:20:57
最后一次提交2018-06-03 15:26:00
发布数108
最新版本名称2.0.31 (发布于 )
第一版名称0.3.23 (发布于 )
用户参与
星数24.8k
关注者数456
派生数1.4k
提交数6.1k
已启用问题?
问题数3423
打开的问题数978
拉请求数139
打开的拉请求数25
关闭的拉请求数91
项目设置
已启用Wiki?
已存档?
是复刻?
已锁定?
是镜像?
是私有?