-
Notifications
You must be signed in to change notification settings - Fork 0
/
useful_skills.py
55 lines (46 loc) · 1.79 KB
/
useful_skills.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
import os
import sys
import myparamiko as m
### For RESTCONF
import requests
import json
# Function to retrieve the list of interfaces on a device
def get_configured_interfaces(url_base,headers,username,password):
url = url_base + "/data/ietf-interfaces:interfaces"
# this statement performs a GET on the specified url
response = requests.get(url,
auth=(username, password),
headers=headers,
verify=False
)
return response.json()["ietf-interfaces:interfaces"]["interface"]
def apply_custom_config(router):
#routers = m.get_list_from_file('routers.txt')
#for router in routers:
ssh_client = m.connect(**router)
shell = m.get_shell(ssh_client)
with open("cmd.txt") as file:
for command in file:
#print (command)
m.send_command(shell, command.rstrip())
m.time.sleep(0.1)
m.close(ssh_client)
if __name__ == "__main__":
import routers
# Router Info
device_address = routers.router['host']
device_username = routers.router['username']
device_password = routers.router['password']
# RESTCONF Setup
port = '443'
url_base = "https://{h}/restconf".format(h=device_address)
headers = {'Content-Type': 'application/yang-data+json',
'Accept': 'application/yang-data+json'}
intf_list = get_configured_interfaces(url_base, headers,device_username,device_password)
for intf in intf_list:
print("Name:{}" .format(intf["name"]))
try:
print("IP Address:{}\{}\n".format(intf["ietf-ip:ipv4"]["address"][0]["ip"],
intf["ietf-ip:ipv4"]["address"][0]["netmask"]))
except KeyError:
print("IP Address: UNCONFIGURED\n")