Fast, flexible, sync/async, Python 3.7+ NETCONF client built on scrapli


Keywords
arista, automation, cisco, eos, iosxe, iosxr, juniper, junos, netconf, network, nxos, ssh, telnet
License
Other
Install
pip install scrapli-netconf==2024.1.30

Documentation

Supported Versions PyPI version Weekly Build Code Style License: MIT

scrapli_netconf


Documentation: https://scrapli.github.io/scrapli_netconf

Source Code: https://github.com/scrapli/scrapli_netconf

Examples: https://github.com/scrapli/scrapli_netconf/tree/master/examples


scrapli_netconf is a NETCONF driver built on top of scrapli, giving you all the scrapli behaviour you know and love, but for NETCONF connections.

Key Features:

  • Easy: Just like scrapli, scrapli_netconf is easy to get going with, and looks and feels just like "normal" scrapli -- check out the documentation and example links above, and you'll be connecting to devices in no time.
  • Fast: Do you like to go fast? Of course you do! scrapli_netconf supports all of the ssh transports that scrapli core supports; check out the ssh2 transport if you've got the need for speed!
  • Great Developer Experience: scrapli_netconf has great editor support thanks to being fully typed; that plus thorough docs make developing with scrapli a breeze.
  • Well Tested: Perhaps out of paranoia, but regardless of the reason, scrapli_netconf has lots of tests! Unit tests cover the basics, regularly ran functional tests connect to virtual routers to ensure that everything works IRL!
  • Concurrency on Easy Mode: Nornir's scrapli plugin gives you all the normal benefits of scrapli plus all the great features of Nornir.

Requirements

MacOS or *nix1, Python 3.7+

scrapli_netconf's only requirements are scrapli, of course, and lxml.

1 Although many parts of scrapli do run on Windows, Windows is not officially supported

Installation

pip install scrapli_netconf

See the docs for other installation methods/details.

A Simple Example

from scrapli_netconf.driver import NetconfDriver

my_device = {
    "host": "172.18.0.13",
    "auth_username": "scrapli",
    "auth_password": "scrapli",
    "auth_strict_key": False,
    "port": 830
}

conn = NetconfDriver(**my_device)
conn.open()
response = conn.get_config(source="running")
print(response.result)