Hello, I am interested in getting the os, lastseen and address but it does not recognize the keys can you point me in the right direction.
# Import "meraki" to allow Meraki function calls
from meraki import meraki
# Import "datetime" to get current date and time
import datetime
# ///////// Start Definition of Script Constants ////////////////
# api_key = Unique API key generated on a per Meraki User basis
# org_id = Unique organization ID of organization you want to query
api_key =
org_id =
# Get the current list of networks from your Organization
current_networks = meraki.getnetworklist(api_key, org_id)
# Establish when "now" is, used to create the file name for output
now = datetime.datetime.now()
# Create/Name the output file with year, month, day and hour minutes
filename = now.strftime("%Y-%m-%d %H.%M") + ".txt"
# Open the file for output
f = open(filename,"w+")
# "i" will be used to increment through each "network" in the Organization
i = 0
f.write("Network Name")
f.write(',')
f.write("Device Model")
f.write(',')
f.write("Device Name")
f.write(',')
f.write("Device serial")
f.write(',')
f.write("Client Description")
f.write(",")
f.write("Client Mac")
f.write(',')
f.write("Client IP")
f.write(',')
f.write("Client vlan")
f.write(',')
f.write("Client seen")
f.write(',')
f.write("Client os")
f.write(',')
f.write("Client switchport")
f.write(',')
f.write("Client address")
f.write("\n")
for i in range(len(current_networks)):
# Output to console the Name and ID of the current network
print(current_networks[i]['name'])
print(current_networks[i]['id'])
curr_net_id = current_networks[i]['id']
curr_net_devices = meraki.getnetworkdevices(api_key,curr_net_id)
# Write to the output file the 'name' of the network and add a comma
#f.write(current_networks[i]['name'])
#f.write(',')
# Checks for Meraki devices on this network, if there are no devices output to file "No Devices Present"
if len(curr_net_devices) == 0:
f.write("No devices Present")
f.write("\n")
# "j" will be used to increment through each "device" on this network
j = 0
for j in range(len(curr_net_devices)):
# Output to console the serial number of the device
print (curr_net_devices[j]['serial'])
curr_clients = meraki.getclients(api_key,curr_net_devices[j]['serial'])
# Checks for clients attached to this device, if no clients present output the name, model and serial of the
# device as well as the message "No Clients"
if len(curr_clients) == 0:
# Output to console "No Clients" message
print ("No clients")
# Output to file "name", "model", "serial" of the device as well as "No Clients" message
f.write(current_networks[i]['name'])
f.write(',')
f.write(curr_net_devices[j]['model'])
f.write(',')
f.write("No Device Name")
f.write(',')
f.write(curr_net_devices[j]['serial'])
f.write(',')
f.write("No Description")
f.write(",")
f.write("No Clients")
f.write(',')
f.write("No ip")
f.write(',')
f.write("No vlan")
f.write(',')
f.write("Not seen")
f.write(',')
f.write("No os")
f.write(',')
f.write("No switchport")
f.write(',')
f.write("No Address")
f.write("\n")
# "k" will be used to increment the number of clients on each device
k = 0
for k in range(len(curr_clients)):
# Output to console "description" and "mac" of the client
print (curr_clients[k]['description'],',',curr_clients[k]['mac'])
# Output to file "name", "model", "serial" of the device as well as the "description" and "mac"
# of the client
f.write(current_networks[i]['name'])
f.write(',')
f.write(curr_net_devices[j]['model'])
f.write(',')
f.write(str(curr_net_devices[j]['name']))
f.write(',')
f.write(curr_net_devices[j]['serial'])
f.write(',')
f.write(str(curr_clients[k]['description']))
f.write(',')
f.write(curr_clients[k]['mac'])
f.write(',')
try:
f.write(curr_clients[k]['ip'])
except:
f.write("No ip info")
f.write(',')
try:
f.write(str(curr_clients[k]['vlan']))
except:
f.write("No vlan info")
f.write(',')
try:
f.write(curr_clients[k]['lastSeen'])
except:
f.write("No lastseen info")
f.write(',')
try:
f.write(curr_clients[k]['os'])
except:
f.write("No OS info")
f.write(',')
try:
f.write(curr_clients[k]['switchport'])
except:
f.write("No switchport info")
f.write(',')
try:
f.write(curr_clients[k]['address'])
except:
f.write("No address info")
f.write("\n")
# Increment "k" to move onto next client on current device
k = k + 1
# Increment "j" to move onto next device on current Network
j = j + 1
# Increment "i" to move onto next network in Organization
i = i + 1
#remove two lines use only for testing
f.close()
exit()
# Close the output file
f.close()