Hello Forum
I have written the following code in Python to get the number of active connections per network. However when I run it nothing happens
Python 3.12.6 (tags/v3.12.6:a4a2d2b, Sep 6 2024, 20:11:23) [MSC v.1940 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
import csv
import meraki
import requests
# Define your Meraki API key and organization ID
API_KEY = 'TOPSECRET'
ORG_ID = '00000'
# Base URL for Meraki Dashboard API
BASE_URL = 'https://api.meraki.com/api/v1'
# Headers for API calls
HEADERS = {
'X-Cisco-Meraki-API-Key': API_KEY,
'Content-Type': 'application/json'
}
def get_networks(org_id):
"""
Fetch the list of networks in the organization.
"""
url = f'{BASE_URL}/organizations/{org_id}/networks'
response = requests.get(url, headers=HEADERS)
response.raise_for_status()
return response.json()
def get_active_connections_count(network_id):
"""
Fetch active client count for a specific network.
"""
url = f'{BASE_URL}/networks/{network_id}/clients'
params = {
'timespan': 86400, # Last 24 hours
}
response = requests.get(url, headers=HEADERS, params=params)
response.raise_for_status()
clients = response.json()
return len(clients) # Each client in the list represents an active connection
def export_to_csv(data, filename='active_connections_per_network.csv'):
"""
Export data to a CSV file.
"""
with open(filename, mode='w', newline='') as file:
writer = csv.writer(file)
writer.writerow(['Network ID', 'Network Name', 'Active Connection Count'])
for row in data:
writer.writerow([row['network_id'], row['network_name'], row['active_connections']])
def main():
try:
# Step 1: Get all networks in the organization
networks = get_networks(ORG_ID)
# Step 2: Gather the counts
connection_data = []
for network in networks:
network_id = network['id']
network_name = network['name']
active_connections = get_active_connections_count(network_id)
connection_data.append({
'network_id': network_id,
'network_name': network_name,
'active_connections': active_connections
})
# Step 3: Export the results to a CSV file
export_to_csv(connection_data)
print("Exported active connection counts to active_connections_per_network.csv")
except requests.exceptions.RequestException as e:
print(f"An error occurred: {e}")
if __name__ == '__main__':
main()