api_utils
1.0.0
存取API的範例程式
這裡有兩個程序,一個是 Python 的,另一個是 Perl 的,用於幫助執行和透過 API 存取資料。
為了使這些程式正常運行,它們需要一個名為 ~/.shadowserver.api 的檔案存在並包含您的 API 金鑰和機密。舉個例子:
[api]
key = <<API-KEY>>
secret = <<SECRET>>
uri = https://transform.shadowserver.org/api2/
如果出現這樣的錯誤,則表示查詢正在遍歷大量數據,並且應該增加程式中的逾時:
$ ./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
其他詳細資訊可以在 https://github.com/The-Shadowserver-Foundation/api_utils/wiki 中找到。
該程式利用報告 API 來維護檔案系統樹,並提供在下載新報告進行處理時發送通知的選項。
隊列選項:
用法: report-manager.py /path/to/config.ini [ days ]
可選的“days”參數是下載報告之前的天數。預設值為 2。
設定檔範例:
[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
[reports] 部分是必需的,並且必須包含「directory」鍵。
設定:
如果在 [reports] 部分中配置了“通知程式”,則需要具有符合名稱的附加部分。
設定:
通知條目是一個 JSON 對象,其中包含時間戳、報告日期、報告類型和 uri:
{
"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"
}
每小時檢查一次新下載的 crontab 範例:
15 * * * * /opt/shadowserver/report-manager.py /opt/shadowserver/reports.ini