NETCONF-Befehle fassen die Werkzeuge zusammen, mit denen Administratoren Netzwerkgeräte per NETCONF konfigurieren. NETCONF selbst ist das Konfigurationsprotokoll über SSH (Port 830), das seine Daten als XML-RPCs austauscht. Statt zeilenbasierter Cisco-/Juniper-Kommandos arbeiten die Befehle gegen strukturierte YANG-Datenmodelle.

netconf-console

Das Python-Paket netconf-console (Nachfolger netconf-console2) ist der Standard-Client für die Kommandozeile. Einzelne RPCs übergibt man direkt als Argument:

pip install netconf-console2
netconf-console2 --host=switch.example.com -u admin -p 'secret' --port 830 get-config
netconf-console2 --host=switch.example.com -u admin -p 'secret' edit-config fragment.xml --db candidate

Mit der Option -i startet der Client einen interaktiven Konsolen-Modus. Dort stehen die NETCONF-Operationen als Kommandos bereit: get-config, edit-config, lock, unlock, commit und rpc für beliebige eigene Aufrufe. Die Konfiguration läuft typischerweise über die candidate-Datastore, wird validiert und per commit aktiv.

Python mit ncclient

Für Skripte ist die Bibliothek ncclient der Standard. Sie öffnet eine NETCONF-Session und kapselt die RPCs als Methoden:

from ncclient import manager
m = manager.connect(host='switch.example.com', port=830,
                    username='admin', password='secret', hostkey_verify=False)
print(m.get_config(source='running'))
m.edit_config(target='candidate', config=open('change.xml').read())
m.commit()

Ansible-Module wie netconf_config und netconf_get nutzen dieselbe Bibliothek, und das Browser-Tool yang-explorer erlaubt das Ausprobieren gegen Test-Server.

Wer Konfiguration lieber über HTTP spricht, nutzt RESTCONF-Befehle; wer Echtzeit-Daten streamen will, gNMI-Befehle.

Verwandte Grundlagen: NETCONF, YANG, RESTCONF, Automatisierung.