A NETCONF client for Python 3.8+.
from netconf_client.connect import connect_ssh
from netconf_client.ncclient import Manager
session = connect_ssh(host="localhost", port=830, username="admin", password="password")
mgr = Manager(session, timeout=120)
mgr.edit_config(config="""<config> ... </config>""")
print(mgr.get(filter="""<filter> ... </filter>""").data_xml)
More complete documentation can be found in the User Guide
Compared to ncclient,
netconf_client
has several advantages:
- It's simpler (at the time of writing: 789 LoC vs 2889 LoC)
- lxml can be bypassed, which can work around issues where lxml breaks namespaces of e.g. identityrefs
- Support for TLS sessions
And a few disadvantages:
- Support for non-RFC-compliant devices isn't really included in
netconf_client
netconf_client
does a lot less error checking and assumes you're sending valid messages to the server (however this can be useful for testing edge-case behavior of a server)