-
Notifications
You must be signed in to change notification settings - Fork 0
/
Netconf-WithFilter-connMger.py
56 lines (49 loc) · 1.95 KB
/
Netconf-WithFilter-connMger.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
from ncclient import manager
from pprint import pprint
from pprint import pformat
import xmltodict
import xml.dom.minidom
router = {
'host': '10.199.199.250',
'port': '830',
'username': 'admin',
'password': 'cisco'
}
netconf_filter = """
<filter xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces">
<interface>
<name>GigabitEthernet1</name>
</interface>
</interfaces>
<interfaces-state xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces">
<interface>
<name>GigabitEthernet1</name>
</interface>
</interfaces-state>
</filter> """
with manager.connect(host=router['host'], port=router['port'], username=router['username'], password=router['password'], device_params={'name': 'iosxe'}, hostkey_verify=False) as m:
for capability in m.server_capabilities:
print('*' * 50)
print(capability)
print('*** I AM CONNECTED ***')
interface_netconf = m.get(netconf_filter)
print('*** Getting runnung config ***')
interface_python = xmltodict.parse(interface_netconf.xml)["rpc-reply"]["data"]
# print the dictionary by uncommenting line below
pprint(interface_python)
intname = str(interface_python['interfaces']['interface']['name'])
# prittyinterface = str(intname)
print(intname)
config = interface_python["interfaces"]["interface"]
op_state = interface_python["interfaces-state"]["interface"]
print("-------------*** INFORMATION COLLECTTION -> START ***-------------")
print(f"NAME: {config['name']}")
print(f"DESCRIPTION: {config['description']}")
print(f"IP address : {config['ipv4']['address']['ip']}")
print(f"Netmask : {config['ipv4']['address']['netmask']}")
print(f"ENABLED: {config['enabled']}")
print(f"PACKETS in: {op_state['statistics']['in-unicast-pkts']}")
print(f"Operational status : {op_state['admin-status']}")
print(f"Admin status: {op_state['admin-status']}")
print("-------------*** INFORMATION COLLECTTION -> END ***-------------")