Thank you all final working code for anyone trying to do the same in future import meraki from getpass import getpass TARGET_NETWORK_NAME = "REDACTED_NETWORK_NAME" VLANS_TO_UPDATE = [REDACTED_VLAN_ID_1, REDACTED_VLAN_ID_2] NEW_DNS = "REDACTED_DNS_1\nREDACTED_DNS_2" def main(): API_KEY = getpass("Enter your Meraki API Key: ").strip() dashboard = meraki.DashboardAPI(api_key=API_KEY, print_console=False) org_id = dashboard.organizations.getOrganizations()[0]["id"] networks = dashboard.organizations.getOrganizationNetworks( org_id, total_pages='all' ) net = next((n for n in networks if n["name"] == TARGET_NETWORK_NAME), None) if not net: print("Network not found") return net_id = net["id"] for vlan_id in VLANS_TO_UPDATE: print(f"\nReading VLAN {vlan_id}...") vlan = dashboard.appliance.getNetworkApplianceVlan(net_id, vlan_id) print("Current DNS:", vlan.get("dnsNameservers")) confirm = input("\nProceed with DNS update? (yes/no): ").lower() if confirm not in ("yes", "y"😞 return for vlan_id in VLANS_TO_UPDATE: print(f"\nUpdating VLAN {vlan_id}...") vlan = dashboard.appliance.getNetworkApplianceVlan(net_id, vlan_id) payload = { "name": vlan["name"], "subnet": "REDACTED_SUBNET", "applianceIp": "REDACTED_APPLIANCE_IP", "dhcpHandling": vlan["dhcpHandling"], "dhcpLeaseTime": vlan["dhcpLeaseTime"], "dhcpBootOptionsEnabled": vlan["dhcpBootOptionsEnabled"], "dhcpOptions": vlan["dhcpOptions"], "dnsNameservers": NEW_DNS, } print("Payload:", payload) try: dashboard.appliance.updateNetworkApplianceVlan( net_id, vlan_id, **payload ) print(f"Updated VLAN {vlan_id}") except Exception as e: print(f"Update failed for VLAN {vlan_id}: {e}") if __name__ == "__main__": main()
... View more