cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Switchport Status call

Highlighted
Here to help

Switchport Status call

So I am working on an API call to disable ports that have not sent/received traffic for the last 15days.  Got everything working correctly with my test environment, went to prod and noticed I'm pulling a lot of useless info.  So i figured out that the call works the way I think it should ONLY on single switches, if the switch is in the stack it pulls "fake" information.

 

First function is from my_meraki module that i use to store all functions.

 

Second is the actual call, I have the dangerous part commented out because currently if the switch is in a stack it will disable all ports as it pulls 0 for the usage.  If not in a stack works perfectly.  Not sure if this is an intended function or if i screwed something up or....  idk just at a loss.

 

# Get Switchport Status
def switchportstat(apikey, serial):
global json_swportstat
url = "https://api.meraki.com/api/v0/devices/"+serial+"/switchPortStatuses?timespan=1296000"
payload = {}
headers = {'X-Cisco-Meraki-API-Key': apikey,'Content-Type': "application/json",'cache-control': "no-cache"}
r = requests.get(url, headers=headers, data=payload)
json_swportstat = r.json()
#personal function list
import my_meraki

#Old meraki SDK from github
from meraki import meraki

current_devices = meraki.getnetworkdevices(API_KEY, netid, ORG_ID)
device_serial = [device['serial'] for device in current_devices]
device_model = [device['model'] for device in current_devices]
for serial, model in zip(device_serial, device_model):
if model in 'MS225-48FP':
my_meraki.switchportstat(API_KEY, serial)
for line in my_meraki.json_swportstat:
portid = line.get('portId')
strportid = str(portid)
portidlist = list(strportid)
portidcomb = [''.join(portidlist)]
usage = line.get('usageInKb')
total = usage.get('total')
strtotal = str(total)
totallist = list(strtotal)
totalcomb = [''.join(totallist)]
full = zip(portidcomb, totalcomb)
for port, use in full:
print(serial, port, use)
#if use is '0' and port not in ('49', '50', '51', '52', '53', '54'):
#print('disabling: ',port)

 

2 REPLIES 2
Highlighted
Kind of a big deal

Re: Switchport Status call

Are you running a recent firmware on your MS stack?

Highlighted
Here to help

Re: Switchport Status call

Yep, 11.29

Welcome to the Meraki Community!
To start contributing, simply sign in with your Cisco account. If you don't yet have a Cisco account, you can sign up.