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