Создать поисковый запрос в Splunk через API (python код) - PullRequest
0 голосов
/ 19 июня 2020

Я пытаюсь выполнить поисковый запрос в splunk через API. Я нашел справочный код на https://docs.splunk.com/Documentation/Splunk/8.0.4/RESTTUT/RESTsearches. Я пробовал запустить код на ноутбуке jupyter.

Но выдает ошибку «Соединение отказано».

Код:

    from __future__ import print_function
    from future import standard_library
    standard_library.install_aliases()
    import urllib.request, urllib.parse, urllib.error
    import httplib2
    from xml.dom import minidom

    baseurl = 'https://localhost:8089'
    userName = 'username'
    password = 'password'

    searchQuery = '| inputcsv foo.csv | where sourcetype=access_common | head 5'

    # Authenticate with server.
    # Disable SSL cert validation. Splunk certs are self-signed.
    serverContent = httplib2.Http(disable_ssl_certificate_validation=True).request(baseurl +                         '/services/auth/login','POST', headers={}, body=urllib.parse.urlencode({'username':userName,         'password':password}))[1]

    sessionKey = minidom.parseString(serverContent).getElementsByTagName('sessionKey')        [0].childNodes[0].nodeValue

    # Remove leading and trailing whitespace from the search
    searchQuery = searchQuery.strip()

    # If the query doesn't already start with the 'search' operator or another
    # generating command (e.g. "| inputcsv"), then prepend "search " to it.
    if not (searchQuery.startswith('search') or searchQuery.startswith("|")):
searchQuery = 'search ' + searchQuery

            print(searchQuery)

    # Run the search.
    # Again, disable SSL cert validation.
    print(httplib2.Http(disable_ssl_certificate_validation=True).request(baseurl +         '/services/search/jobs','POST',
        headers={'Authorization': 'Splunk %s' % sessionKey},body=urllib.parse.urlencode({'search': searchQuery}))[1]) '''

Ошибка:

    ConnectionRefusedError: [Errno 111] Connection refused

Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 23 июня 2020

ConnectionRefusedError: [Errno 111] Connection refused выдается, когда ваш сценарий не может создать TCP-соединение с сервером. Можете ли вы подтвердить, используя telnet, что сервер работает и разрешает соединения через порт 8089. Это не похоже на HTTP или проблему с разрешением, ошибка связана с чем-то более низким в стеке.

...