-
Notifications
You must be signed in to change notification settings - Fork 13
/
site_conf_psk_import_csv.py
113 lines (93 loc) · 2.98 KB
/
site_conf_psk_import_csv.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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
'''
Written by Thomas Munzer (tmunzer@juniper.net)
Github repository: https://github.com/tmunzer/Mist_library/
This script will import PSKs from a CSV file to one or multiple sites.
Usage:
python3 site_conf_psk_import_csv.py path_to_the_csv_file.csv
CSV file format:
pskName1,pskValue1,Wlan1
pskName2,pskValue2,Wlan2
'''
#### IMPORTS #####
import sys
import csv
import logging
MISTAPI_MIN_VERSION = "0.44.1"
try:
import mistapi
from mistapi.__logger import console
except:
print("""
Critical:
\"mistapi\" package is missing. Please use the pip command to install it.
# Linux/macOS
python3 -m pip install mistapi
# Windows
py -m pip install mistapi
""")
sys.exit(2)
#### PARAMETERS #####
LOG_FILE = "./sites_scripts.log"
ENV_FILE = "./.env"
#### LOGS ####
LOGGER = logging.getLogger(__name__)
#### FUNCTIONS #####
def import_psk(apisession, site_id, psks):
print("")
print("".center(80, "-"))
print(f"Starting PSKs import for site {site_id}".center(80, "-"))
print("")
for psk in psks:
print(f'PSK {psk["username"]}')
body = {
"username":psk["username"],
"passphrase":psk["passphrase"],
"ssid":psk["ssid"]
}
result = mistapi.api.v1.sites.psks.createSitePsk(apisession, site_id, body=body).data
mistapi.cli.pretty_print(result)
def read_csv(csv_file):
print("")
print("".center(80, "-"))
print(f"Opening CSV file {csv_file}".center(80, "-"))
print("")
psks = []
try:
with open(sys.argv[1], 'r') as my_file:
ppsk_file = csv.reader(my_file, delimiter=',')
ppsk_file = [[c.replace("\ufeff", "") for c in row] for row in ppsk_file]
for row in ppsk_file:
username = row[0]
passphrase = row[1]
ssid = row[2]
psks.append({"username": username,"passphrase": passphrase,"ssid": ssid})
return psks
except:
print("Error while opening the CSV file... Aborting")
def list_psks(apisession, site_id):
print("")
print("".center(80, "-"))
print(f"List of current PSKs for site {site_id}".center(80, "-"))
print("")
response = mistapi.api.v1.sites.psks.listSitePsks(apisession, site_id)
psks = mistapi.get_all(apisession, response)
mistapi.cli.pretty_print(psks)
def start(apisession):
site_ids = mistapi.cli.select_site(apisession, allow_many=True)
print("")
print("".center(80, "-"))
print(site_ids)
psks = read_csv(sys.argv[1])
for site_id in site_ids:
import_psk(apisession, site_id, psks)
for site_id in site_ids:
list_psks(apisession, site_id)
#### SCRIPT ENTRYPOINT #####
if __name__ == "__main__":
#### LOGS ####
logging.basicConfig(filename=LOG_FILE, filemode='w')
LOGGER.setLevel(logging.DEBUG)
### START ###
APISESSION = mistapi.APISession(env_file=ENV_FILE)
APISESSION.login()
start(APISESSION)