-
Notifications
You must be signed in to change notification settings - Fork 0
/
alert_settings_example.py
43 lines (37 loc) · 1.8 KB
/
alert_settings_example.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# Generic modules
import requests
import time
import json
import meraki as m
# Global variables
apikey = 'PLACE-API-KEY-HERE'
orgId = 'PLACE-ORG-ID-HERE'
alert_template = {'defaultDestinations':{'emails':['foo@bar.com'],'allAdmins':True},'alerts':[{'type':'settingsChanged','enabled':True,'alertDestinations':{'emails':[],'allAdmins':True,'snmp':False},'filters"''':{}}]}
# First grab a list of the device in the inventory
networks = m.getnetworklist(apikey, orgId, suppressprint=True)
def update_alert_settings(networkId, alert_settings):
headers = {
'x-cisco-meraki-api-key': format(str(apikey)),
'Content-Type': 'application/json'
}
putdata = json.dumps(alert_settings)
puturl = '{0}/networks/{1}/alertSettings'.format(str(m.base_url), str(networkId))
dashboard = requests.put(puturl, data=putdata, headers=headers)
if dashboard.status_code == 200:
return True
else:
return False
for network in networks: # Going to loop through the inventory
settings = m.getalertsettings(apikey,
network['id'],
suppressprint=True) # Grab device settings for each Network
for i in settings['alerts']:
if i['type'] == 'settingsChanged':
print('INFO: Settings changed is set to: {} for network {}'.format(str(i['enabled']), str(network['name'])))
if i['enabled'] is False:
push = update_alert_settings(network['id'], alert_template)
if push == True:
print('INFO: Settings were pushed successfully')
else:
print('WARN: Settings did not push successfully')
time.sleep(0.3) # Sleep for ~300ms to avoid rate-limit