Skip to content

Commit cd88766

Browse files
committed
Add script to export targets to CSV with more information
1 parent 3fbceb3 commit cd88766

1 file changed

Lines changed: 42 additions & 0 deletions

File tree

targets_csv.py

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
#!/usr/bin/env python
2+
3+
import csv
4+
import requests
5+
from urllib.parse import urljoin
6+
7+
def main():
8+
token = input("API Token:")
9+
csv_filename = input("CSV path to filename (default: ./targets.csv):")
10+
if csv_filename == "":
11+
csv_filename = "./targets.csv"
12+
13+
headers = {"Authorization": "JWT {}".format(token)}
14+
15+
api_base_url = "https://api.probely.com"
16+
targets_endpoint = urljoin(
17+
api_base_url, "targets/?include=compliance&length=10000"
18+
)
19+
20+
response = requests.get(targets_endpoint, headers=headers)
21+
results = response.json()["results"]
22+
23+
with open(csv_filename, "w") as csv_file:
24+
csv_writer = csv.writer(
25+
csv_file, delimiter=",", quotechar='"', quoting=csv.QUOTE_ALL
26+
)
27+
for result in results:
28+
labels = result["labels"] if result.get("labels") else []
29+
labels_name = [label["name"] for label in labels]
30+
last_scan = result["last_scan"] if result.get("last_scan") else {}
31+
row = [
32+
result["id"],
33+
result["site"]["name"],
34+
result["site"]["url"],
35+
last_scan.get("status", ""),
36+
last_scan.get("completed", ""),
37+
*labels_name
38+
]
39+
csv_writer.writerow(row)
40+
41+
if __name__ == '__main__':
42+
main()

0 commit comments

Comments
 (0)