""" Change password for guest ssid (WPA passkey) Updated python script from dany_ posted on 24-Oct-2018 Script updated to use newer versions of AOS8. Modified by Gorazd Kikelj, 11-Jul-2023 parameters: userName - user with write permissions for conductor/gateway passWord - user's password deviceIP - IP address og conductor/gateway essid - ssid where password will be changed ssid_prof - ssid profile name config_path - path to the MD or MM password_file = path to password file """ import requests import json import logging logger = logging.getLogger("ssid_change") logging.basicConfig( filename="ssid_change.log", filemode="a", format="%(asctime)s : %(levelname)s : %(module)s %(lineno)d : %(message)s", level=logging.INFO, ) userName = "controller_username" passWord = "password" deviceIP = "x.x.x.x" essid = "" ssid_prof = "" config_path = "/mm/mynode" # -- configuration path /md or /md/host or /md/folder/host or /mm/mynode for standalone GW password_file = "PWD.txt" values = {"username": userName, "password": passWord} baseURL = "https://" + deviceIP + ":4343/v1" loginURL = "https://" + deviceIP + ":4343/v1/api/login" logoutURL = "https://" + deviceIP + ":4343/v1/api/logout" configURL = ( "https://" + deviceIP + f":4343/v1/configuration/object/ssid_prof?config_path={config_path}" ) wrmemURL = ( "https://" + deviceIP + f":4343/v1/configuration/object/write_memory?config_path={config_path}" ) """ Login to the gateway or conductor """ s = requests.Session() login = s.post(loginURL, data=values, verify=False, timeout=2) """ Update Password on SSID """ l = json.loads(login.content) cookie = l["_global_result"]["UIDARUBA"] token = l["_global_result"]["X-CSRF-Token"] file = open(password_file, "r") pwd = file.read() file.close() headers = {"Content-type": "application/json", "X-CSRF-Token": f"{token}"} payload = { "profile-name": ssid_prof, "essid": {"essid": essid}, "wpa_passphrase": {"wpa-passphrase": pwd}, } data_josn = json.dumps(payload) Create_PW = s.post(configURL, data=data_josn, headers=headers) item = Create_PW.json() logger.info( f"Set password for SSID {essid} to {pwd} status {Create_PW.status_code} Body: {item['ssid_prof']['wpa_passphrase']}" ) """ Commit Changes """ wm_call = s.post(wrmemURL, headers=headers) logger.info(f"Write Memory status {wm_call.status_code}") """ Logout """ logout = s.post(logoutURL, verify=False, data=values, timeout=2) logger.info(f"Logout Status: {logout.status_code}")