-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathscans_listbystate.py
More file actions
69 lines (48 loc) · 2.51 KB
/
Copy pathscans_listbystate.py
File metadata and controls
69 lines (48 loc) · 2.51 KB
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
import requests
import json
import argparse
file = open("config.json", "r")
data = json.load(file)
file.close()
USER_ID = data['USER_ID']
API_TOKEN = data['API_TOKEN']
API_ROOT = data['API_ROOT']
AUTH = (USER_ID, API_TOKEN)
def scans_listbystate():
endpoint_url = API_ROOT % "scans/listbystate"
parser = argparse.ArgumentParser(description='Gets the list of scans by state.')
parser.add_argument('-s', '-state', type=str, choices=['Queued', 'Scanning', 'Archiving', 'Complete', 'Failed', 'Cancelled', 'Delayed', 'Pausing', 'Paused', 'Resuming'], help='The state of ScanTask.', required=True)
parser.add_argument('-uc', '-urlcrit', type=str, help='Enter the search criteria that contains the Target URL of scan')
parser.add_argument('-sd', '-startd', type=str, help='The start date is used for scan StateChanged field and it is less than or equal to StateChanged field. If scanTask field set as Queued, the start date is used for scan Initiated field.Format: MM/dd/yyyy 00:00:00')
parser.add_argument('-ed', '-endd', type=str, help='The end date is used for scan StateChanged field and it is greater than or equal to StateChanged field. If scanTask field set as Queued, the end date is used for scan Initiated field.Format: MM/dd/yyyy 23:59:59')
args = parser.parse_args()
parameters = {
'scanTaskState': args.s,
'targetUrlCriteria': args.uc,
'page': 1,
'pageSize': 200,
'startDate': args.sd,
'endDate': args.ed
}
response = requests.get(endpoint_url, params=parameters, auth=AUTH)
if (response.status_code == 200):
json_response = response.json()
json_list = json_response['List']
with open('Scans_ListByState.json', 'w') as outfile:
json.dump(json_list, outfile, indent=4)
while json_response['HasNextPage'] is True:
parameters['page'] += 1
response = requests.get(endpoint_url, params=parameters, auth=AUTH)
json_response = response.json()
json_list += json_response['List']
with open('Scans_ListByState.json', 'w') as outfile:
json.dump(json_list, outfile, indent=4)
print("Response: %s - %s" % (response.status_code, response.reason))
print("The scan list is saved into the 'Scans_ListByState.json' file.")
else:
print("Response: %s - %s" % (response.status_code, response.reason))
print(response.text)
def main():
scans_listbystate()
if __name__ == '__main__':
main()