| @ -0,0 +1,911 @@ | |||
| #!/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) | |||