четверг, 8 сентября 2016 г.

Splunk. PowerShell. Использование REST API

Привет, читатель!


Хочу немного дополнить информацией предыдущий пост - Splunk. Использование REST API. В прошлый раз для создания запроса в Splunk и получения списка событий мы использовали Python, а в этот раз нас выручит PowerShell.  



Итак, задача как и в прошлый раз: получить сессионный ключ, создать запрос, получить результаты выполнения запроса. Пошаговое объяснение было в первой части, а сейчас только код на powershell:


[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}

$postParams = @{
                username = "admin";
                password = "changeme";
               }


 #1. Получаем токен
 
 $token = (Invoke-WebRequest -Uri 'https://localhost:8089/services/auth/login?output_mode=json' -Body $postParams -Method POST).content | ConvertFrom-Json
 Write-Host "SessionKey ---> " $token.sessionKey


 #2. Получаем SID  

 $search_query = "search sourcetype = fail2ban earliest=-4h latest=now() | top 5 srcip"
 $textS = [System.Uri]::EscapeUriString($search_query)
 $textS = "search="+$textS
 $search_sid = (Invoke-WebRequest -uri 'https://localhost:8089/services/search/jobs/?output_mode=json' -Headers @{"Authorization" = "Splunk " + $token.sessionKey} -Body $textS -Method POST).content | ConvertFrom-Json
 Write-Host "Search ID ---> " $search_sid.sid
 
 
 #3. Статус выполнения поиска

 $SID = $search_sid.sid
 $uriStat = 'https://localhost:8089/services/search/jobs/' + $SID + '/?output_mode=json'
 
 $done = 0
 while ($done -ne 1) {
    $status_search = (Invoke-WebRequest -uri $uriStat -Headers @{"Authorization" = "Splunk " + $token.sessionKey} -Method GET).content | ConvertFrom-Json
    if ($status_search.entry.content.isDone -eq 1) {
            $done = 1
     }

    }
Write-Host 'Search status ---> ' $status_search.entry.content.isDone


 #4. Результаты запроса

$uriRes = 'https://localhost:8089/services/search/jobs/' + $SID + '/results?output_mode=json'
$res = (Invoke-WebRequest -uri $uriRes -Headers @{"Authorization" = "Splunk " + $token.sessionKey} -Method GET).content | ConvertFrom-Json
Write-Host "**************************************************************************"
$res.results


После выполнения вы увидите:








Комментариев нет:

Отправить комментарий