import requests import json import os requests.packages.urllib3.disable_warnings() from cmlApiCalls import CML as cml server = "cml.server.com" username = "admin" password = "CMLpassword123" lab = "53b3fe" user = os.getlogin() auth = cml.auth(server, username, password) allNodes = cml.getAllNodes(auth, server, lab) # print(allNodes) N = True n_id = 0 port = 9000 try: os.mkdir(rf"C:/Users/{user}/AppData/Roaming/VanDyke/Config/Sessions/CML-{lab}") except: print("directory already exists... continue...") while n_id < 100: node_id = f"n{n_id}" response = cml.getNodesByID(auth, server, lab, node_id) # print(response) if response == "end of list": print("Node " + node_id + " does not exist, will check all nodes from n0 to n99.") n_id = n_id + 1 elif response.get("node_definition") == "external_connector": # dont count external_connector as usable n_id = n_id + 1 else: # get label node_label = response.get("label") # turn port number into hex # strip "0x2233" and make it only 4 charators hexport = hex(port).split('x')[-1] print("creating: " + node_label) with open("config.ini", "r") as config: temp = config.read() temp = temp.replace("REPLACE", "0000" + hexport) location = rf"C:/Users/{user}/AppData/Roaming/VanDyke/Config/Sessions/CML-{lab}/{port}-{node_label}.ini" with open( location, "w") as config2write: config2write.write(temp) if response.get("node_definition") == "wan_emulator": # add by 1 if wan_emulator port = port + 1 else: port = port + 2 n_id = n_id + 1