ncclient

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

Github stars Tracking Chart

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>

Main metrics

Overview
Name With Ownernylas/nylas-mail
Primary LanguageJavaScript
Program languagePython (Language Count: 9)
PlatformLinux, Mac, Cross-platform, Windows
License:MIT License
所有者活动
Created At2014-10-16 18:29:12
Pushed At2022-11-24 08:20:57
Last Commit At2018-06-03 15:26:00
Release Count108
Last Release Name2.0.31 (Posted on )
First Release Name0.3.23 (Posted on )
用户参与
Stargazers Count24.8k
Watchers Count456
Fork Count1.4k
Commits Count6.1k
Has Issues Enabled
Issues Count3423
Issue Open Count978
Pull Requests Count139
Pull Requests Open Count25
Pull Requests Close Count91
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private