Shawn Maddock
03/18/2024, 3:30 PMDherder
03/18/2024, 5:29 PMShawn Maddock
03/18/2024, 5:30 PMDherder
03/18/2024, 5:46 PMDherder
03/18/2024, 5:58 PMShawn Maddock
03/18/2024, 5:59 PMDherder
03/18/2024, 6:03 PMBrock Walters
03/18/2024, 6:30 PMBrock Walters
03/18/2024, 6:31 PMShawn Maddock
03/18/2024, 6:31 PMJason Roberts
03/29/2024, 5:16 PMimport json
import requests
import truststore
truststore.inject_into_ssl()
AUTH_TOKEN = ""
FLEET_URL = ""
REQUESTHEADERS = {"Authorization": f"Bearer {AUTH_TOKEN}"}
def request(method, path, **kwargs):
response = requests.request(
method, f"https://{FLEET_URL}/{path}", headers=REQUESTHEADERS, **kwargs
)
print({"Status Code": response.status_code})
if response.status_code == 403:
raise Exception("Access Denied")
if response.status_code not in [200, 201]:
print(
{
"Error": "Not 200 or 201",
"Headers": response.headers,
"Response": response.text,
"StatusCode": response.status_code,
}
)
return response
def csv_transform(software_json):
import csv
import io
# csv module can write data in io.StringIO buffer only
csv_memory = io.StringIO()
csv.writer(csv_memory).writerow(
["ID", "Name", "Version", "Source", "Generated CPE", "Host Count"]
)
for software in software_json["software"]:
csv.writer(csv_memory).writerow(
[
software["id"],
software["name"],
software["version"],
software["source"],
# software["release"],
# software["vendor"],
# software["arch"],
software["generated_cpe"],
software["hosts_count"],
]
)
return csv_memory.getvalue()
r = request(method="GET", path="/api/v1/fleet/software")
software_json = r.json()
# print(json.dumps(software_json, sort_keys=True, indent=4))
with open("software.json", "w") as outfile:
outfile.write(json.dumps(software_json, sort_keys=True, indent=4))
with open("software.csv", "w") as outfile:
outfile.write(csv_transform(software_json))