-
Notifications
You must be signed in to change notification settings - Fork 0
/
getHistoricalClient.py
97 lines (83 loc) · 2.09 KB
/
getHistoricalClient.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
import requests
import json
import pprint
import psycopg2
import datetime
import urllib3
urllib3.disable_warnings()
def get_db_connection():
return psycopg2.connect(host='', user='', password='', dbname='')
def get_db_cursor(conn):
return conn.cursor()
def send_post(uri, body, cookie, session):
sz_host_api = 'https://' + '' + ':8443/wsg/api/public/v9_0'
return session.post(
url=sz_host_api + uri,
data=json.dumps(body),
headers={
'content-type': 'application/json:charset=UTF-8'
},
cookies={
'JSESSIONID': cookie
},
verify=False
)
def get_tuples_for_insertion(array, client_list):
for client in client_list:
array.append((
client['apMac'],
client['clientMac'],
client['hostname'],
client['ipAddress'],
client['modelName'],
int(client['sessionStartTime'] / 1000),
int(client['sessionEndTime'] / 1000),
client['ssid']
))
return array
pp = pprint.PrettyPrinter(indent=4)
sz_user = ''
sz_pw = ''
s = requests.Session()
r = send_post(
'/session',
{
'username': sz_user,
'password': sz_pw
},
'JSESSIONCOOKIE',
s
)
check = True
page = 1
insert_records = []
while check == True:
t = send_post(
'/query/historicalclient',
{
"extraTimeRange": {
"start": int((datetime.datetime.now() - datetime.timedelta(days=1)).timestamp() * 1000),
"end": int((datetime.datetime.now().timestamp() + 200) * 1000)
},
"sortInfo": {
"sortColumn": "sessionStartTime",
"dir": "ASC"
},
"limit": 1000,
"page": page
},
r.cookies['JSESSIONID'],
s
)
t_json = json.loads(t.text)
insert_records = get_tuples_for_insertion(insert_records, t_json['list'])
page += 1
check = t_json['hasMore']
insert_query = "INSERT INTO wireless_data.public.ruckus_sessions (apmac, clientmac, hostname, ipaddress, modelname, sessionstarttime, sessionendtime, ssid) VALUES (%s, %s, %s, %s, %s, %s, %s, %s) on conflict do nothing"
connection = get_db_connection()
cursor = get_db_cursor(connection)
cursor.executemany(insert_query, insert_records)
connection.commit()
pp.pprint(str(cursor.rowcount) + " records inserted successfully")
cursor.close()
connection.close()