#!/usr/bin/python3.8
|
|
import requests
|
|
import json
|
|
import urllib3
|
|
|
|
urllib3.disable_warnings()
|
|
API_TOKEN = 'Token 30498d1f93d710e3d518bc7d3d48a5221b0e48df'
|
|
API_HOST = "https://demo.netbox.dev/"
|
|
API_APP = "api/dcim/interfaces/"
|
|
|
|
headers = {
|
|
'Authorization': API_TOKEN,
|
|
'User-Agent': 'PyScript 0.1',
|
|
'Content-Type': 'application/json',
|
|
'accept': 'application/json'
|
|
}
|
|
|
|
# device_id = (input('Input id of patchpanel:\n'))
|
|
device_id = '4'
|
|
vlan_database = {
|
|
1001: 3,
|
|
1008: 4,
|
|
1009: 5,
|
|
1010: 6,
|
|
1011: 7,
|
|
1017: 8,
|
|
1018: 9,
|
|
1019: 10,
|
|
1020: 11,
|
|
1021: 12,
|
|
1022: 13,
|
|
1023: 14,
|
|
1024: 15,
|
|
1026: 16,
|
|
1028: 17,
|
|
1029: 18,
|
|
1032: 1,
|
|
1033: 19,
|
|
1035: 20,
|
|
1036: 21,
|
|
1039: 22,
|
|
1040: 23,
|
|
1043: 24,
|
|
1063: 25,
|
|
1064: 26,
|
|
1065: 27,
|
|
1066: 28,
|
|
1067: 29,
|
|
1068: 30,
|
|
1069: 31,
|
|
1070: 32,
|
|
1071: 33,
|
|
1072: 34,
|
|
1073: 35,
|
|
1074: 36,
|
|
1075: 37,
|
|
1076: 38,
|
|
1077: 39,
|
|
1078: 40,
|
|
1080: 41,
|
|
1081: 42,
|
|
1082: 43,
|
|
1083: 44,
|
|
1084: 45,
|
|
1096: 46,
|
|
1099: 54,
|
|
1100: 55,
|
|
1112: 56,
|
|
1113: 57,
|
|
1128: 58,
|
|
1139: 2,
|
|
1224: 47,
|
|
1225: 48,
|
|
3000: 59,
|
|
3001: 60,
|
|
3002: 61,
|
|
3003: 62,
|
|
3004: 63,
|
|
3005: 64,
|
|
3006: 65,
|
|
3007: 66,
|
|
3008: 67,
|
|
3009: 68,
|
|
3010: 69,
|
|
3011: 70,
|
|
3020: 71,
|
|
1: 82,
|
|
2: 83,
|
|
1102: 78,
|
|
1144: 79,
|
|
1145: 80,
|
|
1226: 81
|
|
}
|
|
|
|
vlan_from_switch = [
|
|
{
|
|
"id": 1,
|
|
"mode": "",
|
|
"untagged_vlan": [1035],
|
|
"tagged_vlans": [
|
|
1035,
|
|
]
|
|
},
|
|
{
|
|
"id": 2,
|
|
"mode": "",
|
|
"untagged_vlan": [1035],
|
|
"tagged_vlans": [
|
|
1035,
|
|
]
|
|
},
|
|
{
|
|
"id": 3,
|
|
"mode": "",
|
|
"untagged_vlan": [1096],
|
|
"tagged_vlans": [
|
|
1096,
|
|
]
|
|
},
|
|
{
|
|
"id": 4,
|
|
"mode": "",
|
|
"untagged_vlan": [1096],
|
|
"tagged_vlans": [
|
|
1096,
|
|
]
|
|
},
|
|
{
|
|
"id": 5,
|
|
"mode": "",
|
|
"untagged_vlan": [1],
|
|
"tagged_vlans": [
|
|
1,
|
|
]
|
|
},
|
|
{
|
|
"id": 6,
|
|
"mode": "",
|
|
"untagged_vlan": [1],
|
|
"tagged_vlans": [
|
|
1,
|
|
]
|
|
},
|
|
{
|
|
"id": 7,
|
|
"mode": "",
|
|
"untagged_vlan": [1096],
|
|
"tagged_vlans": [
|
|
1096,
|
|
]
|
|
},
|
|
{
|
|
"id": 8,
|
|
"mode": "",
|
|
"untagged_vlan": [1096],
|
|
"tagged_vlans": [
|
|
1096,
|
|
]
|
|
},
|
|
{
|
|
"id": 9,
|
|
"mode": "",
|
|
"untagged_vlan": [1096],
|
|
"tagged_vlans": [
|
|
1096,
|
|
]
|
|
},
|
|
{
|
|
"id": 10,
|
|
"mode": "",
|
|
"untagged_vlan": [1096],
|
|
"tagged_vlans": [
|
|
1096,
|
|
]
|
|
},
|
|
{
|
|
"id": 11,
|
|
"mode": "",
|
|
"untagged_vlan": [1096],
|
|
"tagged_vlans": [
|
|
1096,
|
|
]
|
|
},
|
|
{
|
|
"id": 12,
|
|
"mode": "",
|
|
"untagged_vlan": [],
|
|
"tagged_vlans": [
|
|
1032,
|
|
1035,
|
|
1096,
|
|
1139,
|
|
1225,
|
|
]
|
|
},
|
|
{
|
|
"id": 13,
|
|
"mode": "",
|
|
"untagged_vlan": [1096],
|
|
"tagged_vlans": [
|
|
1096,
|
|
]
|
|
},
|
|
{
|
|
"id": 14,
|
|
"mode": "",
|
|
"untagged_vlan": [1096],
|
|
"tagged_vlans": [
|
|
1096,
|
|
]
|
|
},
|
|
{
|
|
"id": 15,
|
|
"mode": "",
|
|
"untagged_vlan": [1096],
|
|
"tagged_vlans": [
|
|
1096,
|
|
]
|
|
},
|
|
{
|
|
"id": 16,
|
|
"mode": "",
|
|
"untagged_vlan": [1075],
|
|
"tagged_vlans": [
|
|
1075,
|
|
]
|
|
},
|
|
{
|
|
"id": 17,
|
|
"mode": "",
|
|
"untagged_vlan": [1096],
|
|
"tagged_vlans": [
|
|
1096,
|
|
]
|
|
},
|
|
{
|
|
"id": 18,
|
|
"mode": "",
|
|
"untagged_vlan": [1096],
|
|
"tagged_vlans": [
|
|
1096,
|
|
]
|
|
},
|
|
{
|
|
"id": 19,
|
|
"mode": "",
|
|
"untagged_vlan": [1040],
|
|
"tagged_vlans": [
|
|
1040,
|
|
]
|
|
},
|
|
{
|
|
"id": 20,
|
|
"mode": "",
|
|
"untagged_vlan": [1096],
|
|
"tagged_vlans": [
|
|
1096,
|
|
]
|
|
},
|
|
{
|
|
"id": 21,
|
|
"mode": "",
|
|
"untagged_vlan": [1096],
|
|
"tagged_vlans": [
|
|
1096,
|
|
]
|
|
},
|
|
{
|
|
"id": 22,
|
|
"mode": "",
|
|
"untagged_vlan": [1096],
|
|
"tagged_vlans": [
|
|
1096,
|
|
]
|
|
},
|
|
{
|
|
"id": 23,
|
|
"mode": "",
|
|
"untagged_vlan": [1040],
|
|
"tagged_vlans": [
|
|
1040,
|
|
]
|
|
},
|
|
{
|
|
"id": 24,
|
|
"mode": "",
|
|
"untagged_vlan": [1096],
|
|
"tagged_vlans": [
|
|
1096,
|
|
]
|
|
},
|
|
{
|
|
"id": 25,
|
|
"mode": "",
|
|
"untagged_vlan": [1096],
|
|
"tagged_vlans": [
|
|
1032,
|
|
1096,
|
|
1099,
|
|
]
|
|
},
|
|
{
|
|
"id": 26,
|
|
"mode": "",
|
|
"untagged_vlan": [1096],
|
|
"tagged_vlans": [
|
|
1096,
|
|
]
|
|
},
|
|
{
|
|
"id": 27,
|
|
"mode": "",
|
|
"untagged_vlan": [1096],
|
|
"tagged_vlans": [
|
|
1032,
|
|
1064,
|
|
1065,
|
|
1096,
|
|
]
|
|
},
|
|
{
|
|
"id": 28,
|
|
"mode": "",
|
|
"untagged_vlan": [1096],
|
|
"tagged_vlans": [
|
|
1096,
|
|
]
|
|
},
|
|
{
|
|
"id": 29,
|
|
"mode": "",
|
|
"untagged_vlan": [1096],
|
|
"tagged_vlans": [
|
|
1096,
|
|
]
|
|
},
|
|
{
|
|
"id": 30,
|
|
"mode": "",
|
|
"untagged_vlan": [1096],
|
|
"tagged_vlans": [
|
|
1032,
|
|
1096,
|
|
1099,
|
|
]
|
|
},
|
|
{
|
|
"id": 31,
|
|
"mode": "",
|
|
"untagged_vlan": [],
|
|
"tagged_vlans": [
|
|
1099,
|
|
]
|
|
},
|
|
{
|
|
"id": 32,
|
|
"mode": "",
|
|
"untagged_vlan": [],
|
|
"tagged_vlans": [
|
|
1099,
|
|
]
|
|
},
|
|
{
|
|
"id": 33,
|
|
"mode": "",
|
|
"untagged_vlan": [1096],
|
|
"tagged_vlans": [
|
|
1096,
|
|
]
|
|
},
|
|
{
|
|
"id": 34,
|
|
"mode": "",
|
|
"untagged_vlan": [1096],
|
|
"tagged_vlans": [
|
|
1096,
|
|
]
|
|
},
|
|
{
|
|
"id": 35,
|
|
"mode": "",
|
|
"untagged_vlan": [1096],
|
|
"tagged_vlans": [
|
|
1096,
|
|
]
|
|
},
|
|
{
|
|
"id": 36,
|
|
"mode": "",
|
|
"untagged_vlan": [1096],
|
|
"tagged_vlans": [
|
|
1096,
|
|
]
|
|
},
|
|
{
|
|
"id": 37,
|
|
"mode": "",
|
|
"untagged_vlan": [1096],
|
|
"tagged_vlans": [
|
|
1096,
|
|
]
|
|
},
|
|
{
|
|
"id": 38,
|
|
"mode": "",
|
|
"untagged_vlan": [1096],
|
|
"tagged_vlans": [
|
|
1096,
|
|
]
|
|
},
|
|
{
|
|
"id": 39,
|
|
"mode": "",
|
|
"untagged_vlan": [1096],
|
|
"tagged_vlans": [
|
|
1096,
|
|
]
|
|
},
|
|
{
|
|
"id": 40,
|
|
"mode": "",
|
|
"untagged_vlan": [1064],
|
|
"tagged_vlans": [
|
|
1064,
|
|
]
|
|
},
|
|
{
|
|
"id": 41,
|
|
"mode": "",
|
|
"untagged_vlan": [1036],
|
|
"tagged_vlans": [
|
|
1036,
|
|
]
|
|
},
|
|
{
|
|
"id": 42,
|
|
"mode": "",
|
|
"untagged_vlan": [1043],
|
|
"tagged_vlans": [
|
|
1043,
|
|
]
|
|
},
|
|
{
|
|
"id": 43,
|
|
"mode": "",
|
|
"untagged_vlan": [1064],
|
|
"tagged_vlans": [
|
|
1064,
|
|
]
|
|
},
|
|
{
|
|
"id": 44,
|
|
"mode": "",
|
|
"untagged_vlan": [1064],
|
|
"tagged_vlans": [
|
|
1064,
|
|
]
|
|
},
|
|
{
|
|
"id": 45,
|
|
"mode": "",
|
|
"untagged_vlan": [1032],
|
|
"tagged_vlans": [
|
|
1021,
|
|
1032,
|
|
1035,
|
|
1064,
|
|
1075,
|
|
1076,
|
|
1096,
|
|
1099,
|
|
1139,
|
|
1225,
|
|
1226,
|
|
]
|
|
},
|
|
{
|
|
"id": 46,
|
|
"mode": "",
|
|
"untagged_vlan": [],
|
|
"tagged_vlans": [
|
|
1021,
|
|
1032,
|
|
1035,
|
|
1036,
|
|
1063,
|
|
1064,
|
|
1065,
|
|
1075,
|
|
1076,
|
|
1077,
|
|
1096,
|
|
1099,
|
|
1139,
|
|
1224,
|
|
1225,
|
|
1226,
|
|
]
|
|
},
|
|
{
|
|
"id": 47,
|
|
"mode": "",
|
|
"untagged_vlan": [1],
|
|
"tagged_vlans": [
|
|
1,
|
|
1001,
|
|
1008,
|
|
1009,
|
|
1010,
|
|
1011,
|
|
1017,
|
|
1018,
|
|
1019,
|
|
1020,
|
|
1021,
|
|
1022,
|
|
1023,
|
|
1024,
|
|
1026,
|
|
1028,
|
|
1029,
|
|
1032,
|
|
1033,
|
|
1035,
|
|
1036,
|
|
1039,
|
|
1040,
|
|
1043,
|
|
1063,
|
|
1064,
|
|
1065,
|
|
1066,
|
|
1067,
|
|
1068,
|
|
1069,
|
|
1070,
|
|
1071,
|
|
1072,
|
|
1073,
|
|
1074,
|
|
1075,
|
|
1076,
|
|
1077,
|
|
1078,
|
|
1080,
|
|
1081,
|
|
1096,
|
|
1099,
|
|
1100,
|
|
1112,
|
|
1113,
|
|
1128,
|
|
1139,
|
|
1224,
|
|
1225,
|
|
]
|
|
},
|
|
{
|
|
"id": 48,
|
|
"mode": "",
|
|
"untagged_vlan": [1],
|
|
"tagged_vlans": [
|
|
1,
|
|
1001,
|
|
1008,
|
|
1009,
|
|
1010,
|
|
1011,
|
|
1017,
|
|
1018,
|
|
1019,
|
|
1020,
|
|
1021,
|
|
1022,
|
|
1023,
|
|
1024,
|
|
1026,
|
|
1028,
|
|
1029,
|
|
1032,
|
|
1033,
|
|
1035,
|
|
1036,
|
|
1039,
|
|
1040,
|
|
1043,
|
|
1063,
|
|
1064,
|
|
1065,
|
|
1066,
|
|
1067,
|
|
1068,
|
|
1069,
|
|
1070,
|
|
1071,
|
|
1072,
|
|
1073,
|
|
1074,
|
|
1075,
|
|
1076,
|
|
1077,
|
|
1078,
|
|
1080,
|
|
1081,
|
|
1096,
|
|
1099,
|
|
1100,
|
|
1112,
|
|
1113,
|
|
1128,
|
|
1139,
|
|
1224,
|
|
1225,
|
|
1226,
|
|
]
|
|
},
|
|
{
|
|
"id": 49,
|
|
"mode": "",
|
|
"untagged_vlan": [],
|
|
"tagged_vlans": [
|
|
1001,
|
|
1008,
|
|
1009,
|
|
1010,
|
|
1011,
|
|
1017,
|
|
1018,
|
|
1019,
|
|
1020,
|
|
1021,
|
|
1022,
|
|
1023,
|
|
1024,
|
|
1026,
|
|
1028,
|
|
1029,
|
|
1032,
|
|
1033,
|
|
1035,
|
|
1036,
|
|
1039,
|
|
1040,
|
|
1043,
|
|
1063,
|
|
1064,
|
|
1065,
|
|
1066,
|
|
1067,
|
|
1068,
|
|
1069,
|
|
1070,
|
|
1071,
|
|
1072,
|
|
1073,
|
|
1074,
|
|
1075,
|
|
1076,
|
|
1077,
|
|
1078,
|
|
1080,
|
|
1081,
|
|
1096,
|
|
1099,
|
|
1100,
|
|
1112,
|
|
1113,
|
|
1128,
|
|
1139,
|
|
1224,
|
|
1225,
|
|
1226,
|
|
]
|
|
},
|
|
{
|
|
"id": 50,
|
|
"mode": "",
|
|
"untagged_vlan": [],
|
|
"tagged_vlans": [
|
|
1001,
|
|
1008,
|
|
1009,
|
|
1010,
|
|
1011,
|
|
1017,
|
|
1018,
|
|
1019,
|
|
1020,
|
|
1021,
|
|
1022,
|
|
1023,
|
|
1024,
|
|
1026,
|
|
1028,
|
|
1029,
|
|
1032,
|
|
1033,
|
|
1035,
|
|
1036,
|
|
1039,
|
|
1040,
|
|
1043,
|
|
1063,
|
|
1064,
|
|
1065,
|
|
1066,
|
|
1067,
|
|
1068,
|
|
1069,
|
|
1070,
|
|
1071,
|
|
1072,
|
|
1073,
|
|
1074,
|
|
1075,
|
|
1076,
|
|
1077,
|
|
1078,
|
|
1080,
|
|
1081,
|
|
1096,
|
|
1099,
|
|
1100,
|
|
1112,
|
|
1113,
|
|
1128,
|
|
1139,
|
|
1224,
|
|
1225,
|
|
1226,
|
|
]
|
|
},
|
|
{
|
|
"id": 51,
|
|
"mode": "",
|
|
"untagged_vlan": [1],
|
|
"tagged_vlans": [
|
|
1,
|
|
1001,
|
|
1008,
|
|
1009,
|
|
1010,
|
|
1011,
|
|
1017,
|
|
1018,
|
|
1019,
|
|
1020,
|
|
1021,
|
|
1022,
|
|
1023,
|
|
1024,
|
|
1026,
|
|
1028,
|
|
1029,
|
|
1032,
|
|
1033,
|
|
1035,
|
|
1036,
|
|
1039,
|
|
1040,
|
|
1043,
|
|
1063,
|
|
1064,
|
|
1065,
|
|
1066,
|
|
1067,
|
|
1068,
|
|
1069,
|
|
1070,
|
|
1071,
|
|
1072,
|
|
1073,
|
|
1074,
|
|
1075,
|
|
1076,
|
|
1077,
|
|
1078,
|
|
1080,
|
|
1081,
|
|
1096,
|
|
1099,
|
|
1100,
|
|
1112,
|
|
1113,
|
|
1128,
|
|
1139,
|
|
1224,
|
|
1225,
|
|
]
|
|
},
|
|
{
|
|
"id": 52,
|
|
"mode": "",
|
|
"untagged_vlan": [1],
|
|
"tagged_vlans": [
|
|
1,
|
|
1001,
|
|
1008,
|
|
1009,
|
|
1010,
|
|
1011,
|
|
1017,
|
|
1018,
|
|
1019,
|
|
1020,
|
|
1021,
|
|
1022,
|
|
1023,
|
|
1024,
|
|
1026,
|
|
1028,
|
|
1029,
|
|
1032,
|
|
1033,
|
|
1035,
|
|
1036,
|
|
1039,
|
|
1040,
|
|
1043,
|
|
1063,
|
|
1064,
|
|
1065,
|
|
1066,
|
|
1067,
|
|
1068,
|
|
1069,
|
|
1070,
|
|
1071,
|
|
1072,
|
|
1073,
|
|
1074,
|
|
1075,
|
|
1076,
|
|
1077,
|
|
1078,
|
|
1080,
|
|
1081,
|
|
1096,
|
|
1099,
|
|
1100,
|
|
1112,
|
|
1113,
|
|
1128,
|
|
1139,
|
|
1224,
|
|
1225,
|
|
]
|
|
},
|
|
]
|
|
|
|
FRONTPORT = requests.get(API_HOST + API_APP + '?device_id=' + device_id + '&limit=60', headers=headers, verify=False)
|
|
count_of_ports = (FRONTPORT.json()['count'])
|
|
|
|
|
|
# print(FRONTPORT.json())
|
|
|
|
|
|
def vid_to_id(vid):
|
|
vid_list = []
|
|
for i in vid:
|
|
vlan_id = vlan_database[i]
|
|
vid_list.append(vlan_id)
|
|
return (vid_list)
|
|
|
|
|
|
def untagged_vlans_on_port(portid):
|
|
untagged_vlans_on_port_list = (vlan_from_switch[portid]['untagged_vlan'])
|
|
return untagged_vlans_on_port_list
|
|
|
|
|
|
def tagged_vlans_on_port(portid):
|
|
tagged_vlans_on_port_list = (vlan_from_switch[portid]['tagged_vlans'])
|
|
return tagged_vlans_on_port_list
|
|
|
|
|
|
def interface_id(portid):
|
|
interface_id_on_switch = (vlan_from_switch[portid]['id'])
|
|
return interface_id_on_switch
|
|
|
|
|
|
dicts = []
|
|
|
|
ports_on_switch = len(vlan_from_switch)
|
|
|
|
for i in range(len(vlan_from_switch)):
|
|
portid = (FRONTPORT.json()['results'][i]['id'])
|
|
# portid = interface_id(i)
|
|
if untagged_vlans_on_port(i) == tagged_vlans_on_port(i):
|
|
port_mode = ('access')
|
|
dicts.append({'id': portid,
|
|
'mode': port_mode,
|
|
'untagged_vlan': vid_to_id(untagged_vlans_on_port(i))[0]})
|
|
if untagged_vlans_on_port(i) != tagged_vlans_on_port(i) and len(untagged_vlans_on_port(i)) > 0:
|
|
port_mode = ('tagged')
|
|
dicts.append({'id': portid,
|
|
'mode': port_mode,
|
|
'untagged_vlan': vid_to_id(untagged_vlans_on_port(i))[0],
|
|
'tagged_vlans': vid_to_id(tagged_vlans_on_port(i))})
|
|
if untagged_vlans_on_port(i) != tagged_vlans_on_port(i) and len(untagged_vlans_on_port(i)) == 0:
|
|
port_mode = ('tagged')
|
|
dicts.append({'id': portid,
|
|
'mode': port_mode,
|
|
'tagged_vlans': vid_to_id(tagged_vlans_on_port(i))})
|
|
|
|
|
|
|
|
print(json.dumps(dicts, indent=2))
|
|
|
|
r = requests.patch(API_HOST + API_APP, json=dicts, headers=headers, verify=False)
|
|
print(r.json)
|
|
|