Hi, Automated WPA2-PSK be achieved by API. Edit the following python script as highlighted in red referring to the details. Get the details " import meraki import requests import random import string import smtplib import ssl from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart api_key = "your_api_key" # enter your meraki api key here network_id = "your_network_id" # enter the network id of the network you want to change here ssid_number = "ssid_number"# enter the number of the ssid you want to change here 0 - 14 password_length = 15 # enter the desired length of the new PSK min 8 max 63 character_types = string.ascii_lowercase + string.ascii_uppercase + string.digits # remove or change according to needs gmail_password = "App_password_generated" # enter the generated gmail app password here sender_email = "sender@gmail.com" # sending gmail address receiver_email = "reciver@gmail.com" # receiving address(es) def random_string(stringlength=password_length): return ''.join(random.choice(character_types) for i in range(stringlength)) def set_new_psk(new_psk, ssid=ssid_number): url = "https://api.meraki.com/api/v0/networks/"+network_id+"/ssids/"+str(ssid) #remove the spaces the I inserted to get around a community bug payload = "{\r\n \"psk\": \""+str(new_psk)+"\"\r\n}" headers = { 'Accept': "*/*", 'Content-Type': "application/json", 'cache-control': "no-cache", 'X-Cisco-Meraki-API-Key': api_key } response = requests.request("PUT", url, data=payload, headers=headers) print(str(response.status_code) + " - " + response.text) return(response.status_code) def send_password_email(new_psk_param): message = MIMEMultipart("alternative") message["Subject"] = "New Wi-Fi PSK" message["From"] = sender_email message["To"] = receiver_email # Create the plain-text and HTML version of your message text = """\ Hi, We've changed the Wi-Fi password to: {new_psk} Kind regards, pskscript""".format(new_psk=new_psk_param) html = """\ <html> <body> <div>Hi,<br> <br> We've changed the Wi-Fi password to: <br> #content to be recived <h1>{new_psk}</h1> Kind regards,<br> pskscript </div> </body> </html> """.format(new_psk=new_psk_param) # Turn these into plain/html MIMEText objects part1 = MIMEText(text, "plain") part2 = MIMEText(html, "html") # Add HTML/plain-text parts to MIMEMultipart message # The email client will try to render the last part first message.attach(part1) message.attach(part2) # Create secure connection with server and send email context = ssl.create_default_context() with smtplib.SMTP_SSL("smtp.gmail.com", 465, context=context) as server: server.login(sender_email, gmail_password) server.sendmail( sender_email, receiver_email, message.as_string() ) new_psk = random_string(password_length) if set_new_psk(new_psk) == 200: send_password_email(new_psk) “ Schedule Python script to run weekly on some online platforms like "www.pythonanywhere.com" or you can run the script in the internal server with using crontab.
... View more