Issue with Meraki Python Script -Air Marshall

Solved
RandowWill
New here

Issue with Meraki Python Script -Air Marshall

I have the script below, use to work, stopped working I've been banging my head on it trying to figure it out or is there a different /better way to get this info. Any help you could be would be much appreciated.

 

import meraki
import json
import requests
import time
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import encoders
from datetime import datetime, timezone

#Put your API key here
apikey =
orgid =

def getNetworks(apikey):
url = "https://api.meraki.com/api/v0/organizations/11111/networks"

payload = ""
headers = {
'X-Cisco-Meraki-API-Key': apikey,
'cache-control': "no-cache",
'Postman-Token': ""
}

response = requests.request("GET", url, data=payload, headers=headers)

return response

def getMarshall(network, apikey):
url = "https://api.meraki.com/api/v0/networks/" + network + "/airMarshal"

querystring = {"timespan":"3600"}

payload = ""
headers = {
'X-Cisco-Meraki-API-Key': apikey,
'cache-control': "no-cache",
'Postman-Token': ""
}

response = requests.request("GET", url, data=payload, headers=headers, params=querystring)

return response

def mail():
time = datetime.now().strftime("%m%d%y")
filename = "airmarshallReport_" + time + ".csv"
subject = "Meraki Airmarshall Report"
recipients = ["test@test.com"]

msg = MIMEMultipart()
msg["Subject"] = subject
msg["From"] = "airmarshall@test.com"
msg["To"] = ", ".join(recipients)

part = MIMEBase("application", "octet-stream")
part.set_payload(open(filename, "rb").read())
encoders.encode_base64(part)

part.add_header("Content-Disposition", "attachment; filename=\"" + filename + "\"")

msg.attach(part)

server = smtplib.SMTP("mail.test.com")
server.sendmail("airmarshall@test.com", recipients, msg.as_string())

response = getNetworks(apikey)
networks = response.json()
index1 = 0
index2 = 0
time = datetime.now().strftime("%m%d%y")

with open("airmarshallReport_" + time + ".csv", "w+") as f:
f.write("network,ssid,bssid,contained,devices,channels,firstseen,lastseen,wiredmacs,wiredlastseen\n")
for line in networks:
try:
x = getMarshall(networks[index1]["id"],apikey)
y = x.json()
index = 0
for i in y:
f.write('"' + str(networks[index1]["name"]) + '"' + "," + '"' + str(y[index]["ssid"]) + '"' + "," + '"' + str(y[index]["bssids"][0]["bssid"]) + '"' + "," + '"' + str(y[index]["bssids"][0]["contained"]) + '"' + ",")
try:
for i in y[index]["bssids"][0]["detectedBy"]:
f.write('"' + str(i["device"]) + " RSSI - " + str(i["rssi"]) + " ")
index2 += 1
f.write('"' + ",")
except:
f.write('"' + "none\"," )
try:
f.write('"' + str(y[index]["channels"][0]) + '"' + ",")
except:
f.write('"' + "none\",")
try:
f.write('"' + str(datetime.fromtimestamp(int(y[index]["firstSeen"]))) + '"' + "," + '"' + str(datetime.fromtimestamp(int(y[index]["lastSeen"]))) + '"' + "," + '"' + str(y[index]["wiredMacs"]) + '"' + "," + '"' + str(datetime.fromtimestamp(int(y[index]["wiredLastSeen"]))) + '"' + "\n")
except:
f.write("\"none\",\"none\",\"none\",\"none\"\n")
index += 1
except:
f.write('"' + str(networks[index1]["name"]) + '"' + "," + "\"none\"\n")
index1 += 1

mail()

1 Accepted Solution
RandowWill
New here

My bad i figured it out sorry. It's Monday i had the wrong API key ugh...

View solution in original post

2 Replies 2
RandowWill
New here

My bad i figured it out sorry. It's Monday i had the wrong API key ugh...

NolanHerring
Kind of a big deal

Glad to hear you found the issue  😃

 

44444.jpg

Nolan Herring | nolanwifi.com
TwitterLinkedIn
Get notified when there are additional replies to this discussion.