TP 5 - Netconf
TP 5 - Netconf
Se connecter au routeur
In [1]: from ncclient import manager
m = manager.connect(
host="10.10.20.48",
port=830,
username="developer",
password="C1sco12345",
hostkey_verify=False
)
print("Connected")
def get_running_config():
m = manager.connect(
host="10.10.20.48",
port=830,
username="developer",
password="C1sco12345",
hostkey_verify=False
)
netconf_reply = m.get_config(source='running')
netconf_data = xml.dom.minidom.parseString(netconf_reply.xml).toprettyxml()
print(netconf_data)
get_running_config()
-NETCONF
-RESTCONF
def get_hostname():
m = manager.connect(
host="10.10.20.48",
port=830,
username="developer",
password="C1sco12345",
hostkey_verify=False
)
netconf_reply = m.get_config(source='running')
netconf_data = xmltodict.parse(netconf_reply.xml)
print("IOS Version: {}".format(netconf_data["rpc-reply"]["data"]["native"]["version"]))
print("Hostname: {}".format(netconf_data["rpc-reply"]["data"]["native"]["hostname"]))
get_hostname()
def get_hostname_filter():
m = manager.connect(
host="10.10.20.48",
port=830,
username="developer",
password="C1sco12345",
hostkey_verify=False
)
filter = """
<filter xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<native xmlns="http://cisco.com/ns/yang/Cisco-IOS-XE-native">
<hostname></hostname>
<version></version>
</native>
</filter>
"""
get_hostname_filter()
def change_interface(user_selection):
m = manager.connect(
host="10.10.20.48",
port=830,
username="developer",
password="C1sco12345",
hostkey_verify=False
)
int_status = user_selection
config = '''
<config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces">
<interface>
<name>GigabitEthernet3</name>
<enabled>{}</enabled>
</interface>
</interfaces>
</config>
'''.format("true" if int_status == 1 else "false")
def save_running_config():
m = manager.connect(
host="10.10.20.48",
port=830,
username="developer",
password="C1sco12345",
hostkey_verify=False
)
rpc_body = '''
<cisco-ia:save-config xmlns:cisco-ia="http://cisco.com/yang/cisco-ia"/>
'''
netconf_reply = m.dispatch(ET.fromstring(rpc_body)).xml
print("Did it work? {}".format(netconf_reply))
save_running_config()