#java #json #splunk #splunk-query
#java #json #splunk #splunk-запрос
Вопрос:
Я извлекаю данные из Splunk с помощью rest API через рабочий порт 8980, в графическом интерфейсе я вижу 770 событий, когда я извлекаю данные, у меня меньше 100.
вот мой код на Java для извлечения данных:
public JSONObject Post_request() throws IOException, ParseException {
String Query = "search " OS_Vuln_Query;
Job job = session.make_Request().getJobs().create(Query);
while (!job.isDone()) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
JobResultsArgs resultsArgs = new JobResultsArgs();
resultsArgs.setOutputMode(JobResultsArgs.OutputMode.JSON);
InputStream results = job.getResults(resultsArgs);
BufferedReader br = new BufferedReader(new InputStreamReader(results));
StringBuilder sb = new StringBuilder();
String line;
while ((line = br.readLine()) != null)
{
sb.append(line);
}
JSONParser parser = new JSONParser();
JSONObject json = (JSONObject) parser.parse(sb.toString());
String vulns_as_string = json.get("results").toString();
JSONArray vulns_to_json = (JSONArray) parser.parse(vulns_as_string);
if (vulns_to_json.size()>0)
{
System.out.print("Splunk return results");
for (int v = 0; v < vulns_to_json.size(); v )
{
String vuln_as_string = vulns_to_json.get(v).toString();
Vulnerability vulnerability = new Gson().fromJson(vuln_as_string, Vulnerability.class);
data_Parsed = true;
vulnerability.ports_to_List();
list_of_OS_Vulnerability.add(vulnerability);
}
return json;
}
System.out.print("Splunk return empty results");
return null;
}
Я делаю запрос к Splunk из другого класса — он возвращает сервис, который я использовал для передачи запросов в splunk
Ответ №1:
Я понял это из документации Splunk, на самом деле это было не в начале. resultsargs, если не установлено значение 0, вернет только первые 100 результатов. чтобы исправить это, просто установите setcount в resultsArgs равным 0:
resultsArgs.setCount(0); // to return all results