Beispielprogramme für den Zugriff auf die API
Hier sind zwei Programme, eines in Python und eines in Perl, die bei der Ausführung und dem Zugriff auf die Daten über die APIs helfen.
Damit eines dieser Programme funktioniert, erwarten sie, dass eine Datei namens ~/.shadowserver.api vorhanden ist und Ihren API-Schlüssel und Ihr Geheimnis enthält. Als Beispiel:
[api]
key = <<API-KEY>>
secret = <<SECRET>>
uri = https://transform.shadowserver.org/api2/
Wenn ein Fehler wie dieser auftritt, bedeutet das, dass die Abfrage viele Daten durchläuft und das Timeout im Programm erhöht werden sollte:
$ ./call-api.py reports/query '{"report":"united-states", "date":"2020-10-27", "query":{"city":"ashburn"}, "limit":3}' pretty
API Exception: The read operation timed out
Weitere Details finden Sie unter https://github.com/The-Shadowserver-Foundation/api_utils/wiki.
Dieses Programm nutzt die Berichts-API, um einen Dateisystembaum mit der Option zu verwalten, Benachrichtigungen zu senden, wenn neue Berichte zur Verarbeitung heruntergeladen werden.
Warteschlangenoptionen:
Verwendung: report-manager.py /path/to/config.ini [ days ]
Das optionale Argument „Tage“ ist die Anzahl der vorherigen Tage, für die Berichte heruntergeladen werden sollen. Der Standardwert ist 2.
Beispielkonfigurationsdatei:
[reports]
directory = /var/tmp/reports
min_disk_free = 512
notifier = none
url_prefix = http://myserver/reports/
[stomp]
server = 127.0.0.1
port = 61613
user = guest
password = guest
queue = /queue/mytest
[redis]
server = 127.0.0.1
port = 6379
;password = guest
queue = mytest
[kafka]
server = 127.0.0.1
port = 9092
queue = mytest
Der Abschnitt [reports] ist erforderlich und muss den Schlüssel „directory“ enthalten.
Einstellungen:
Wenn im Abschnitt [Berichte] ein „Notifier“ konfiguriert ist, ist ein zusätzlicher Abschnitt mit einem passenden Namen erforderlich.
Einstellungen:
Der Benachrichtigungseintrag ist ein JSON-Objekt, das einen Zeitstempel, ein Berichtsdatum, einen Berichtstyp und eine URL enthält:
{
"timestamp" : "2022-09-01 11:32:45",
"report_date" : "2022-08-31",
"report_type" : "scan_stun",
"uri" : "http://myserver/reports/2022/08/31/2022-08-31-scan_stun_example_com-asn.csv"
}
Beispiel-Crontab, um einmal pro Stunde nach neuen Downloads zu suchen:
15 * * * * /opt/shadowserver/report-manager.py /opt/shadowserver/reports.ini