2016-02-25 2 views
0

Я использую python для выполнения поискового запроса и возврата результатов. Подключаю со следующей строкой:Соединение Splunk Python Потеряно

service = client.connect(
    host=HOST, 
    port=PORT, 
    username=USERNAME, 
    password=PASSWORD 
) 

переменные были протестированы на работу, и он подключается к Splunk, но иногда, когда я запускаю эти строки кода:

print "Installed App Names \n" 
for app in service.apps: 
    print app.name 

Она возвращает эту ошибку :

Request Failed: Session is not logged in 

Примерно в 50% случаев код работает, и он выполняется. Является ли эта несогласованность в результатах кода для строк кода service =, фактически не подключающихся к серверу splunk? Могут ли эти соединения отключиться?

ответ

2

может принимать аргумент autologin=True, чтобы позволить связям пытаться повторно подключиться, когда аутентификация завершается с ошибкой, вместо того, чтобы немедленно поднимать эту ошибку.

+0

Так что строка кода будет выглядеть следующим образом: 'службы = client.connect ( хост = HOST, порт = PORT, имя пользователя = USERNAME, пароль = PASSWORD, автовход = True)' ? – pHorseSpec

+0

Да, это выглядит правильно. –

+0

Я пытаюсь выполнить несколько сотен запросов splunk в одном скрипте python и где-то внутри скрипта я получаю следующую ошибку: 'splunklib.binding.AuthenticationError: Autologin удалось, но была ошибка auth при следующем запросе. Что-то очень неправильно. 'Потому что это такой длинный скрипт для выполнения, и я потерял соединение за это время. В любом случае, чтобы я не потерял связь от Splunk? – pHorseSpec

0

Возможно, вы должны получить идентификатор токена и сеанса splunk, используя свой код на Python. Пожалуйста, найдите приведенный ниже код, если это может вам помочь.

import json,os,sys,requests 
BASE_URL = "https://SPLUNKLB/SPLUNK WEB URL" 

def getToken(): 
# body for token request 
payload = {'username': "",'password': ""} 
TOKEN_URL = "/services/auth/login?output_mode=json" 
# post token request 
res = requests.post(BASE_URL+TOKEN_URL, data=payload, verify=False) 
if (res.status_code == 200): 
# Get token out of response 
resJson = json.loads(res.content) 
return resJson.get('sessionKey') 
else: 
print res.status_code, res.content 
Смежные вопросы