Chapter 5. Example Script
#!/usr/bin/env python import sys import requests from datetime import datetime, timedelta API_HOST = 'https://access.redhat.com/hydra/rest/securitydata' PROXIES = {} # uncomment lines below to specify proxy server # HTTPS_PROXY = "http://yourproxy.example.com:8000" # PROXIES = { "https" : HTTPS_PROXY } def get_data(query): full_query = API_HOST + query r = requests.get(full_query, proxies=PROXIES) if r.status_code != 200: print('ERROR: Invalid request; returned {} for the following ' 'query:\n{}'.format(r.status_code, full_query)) sys.exit(1) if not r.json(): print('No data returned with the following query:') print(full_query) sys.exit(0) return r.json() # Get a list of issues and their impacts for RHSA-2022:1988 endpoint = '/cve.json' params = 'advisory=RHSA-2022:1988' data = get_data(endpoint + '?' + params) for cve in data: print(cve['CVE'], cve['severity']) print('-----') # Get a list of kernel advisories for the last 30 days and display the # packages that they provided. endpoint = '/csaf.json' date = datetime.now() - timedelta(days=30) params = 'package=kernel&after=' + str(date.date()) data = get_data(endpoint + '?' + params) kernel_advisories = [] for advisory in data: print(advisory['RHSA'], advisory['severity'], advisory['released_on']) print('-', '\n- '.join(advisory['released_packages'])) kernel_advisories.append(advisory['RHSA']) print('-----') # From the list of advisories saved in the previous example (as # `kernel_advisories`), get a list of affected products for each advisory. endpoint = '/csaf/' for advisory in kernel_advisories: data = get_data(endpoint + advisory + '.json') print(advisory) for product_branch in data['product_tree']['branches']: for inner_branch in product_branch['branches'][0]['branches']: print('-', inner_branch['name'])