Splunk 실행 결과를 Python을 사용하여 처리하고 파일에 저장

6496 단어 Splunk파이썬
파이썬을 사용하여 Splunk 실행 결과를 처리하는 방법을 소개합니다.

Splunk 실행 결과 받기



파이썬에서 Splunk 실행 결과를 받으려면 다음 방법을 사용하십시오.
  splunk.Intersplunk.getOrganizedResults(input_str = None)

이 메소드는 실행 직전의 검색문의 결과를 사전의 리스트 형식으로 해 돌려줍니다. 예를 들어, 아래 그림의 실행 결과라면,


메소드가 돌려주는 형태는 이하가 됩니다. 필드명이 사전의 키가 되는 것입니다.
[{'_time':'2017-09-01 05:05:14', 'MAC':'66:22:33:44:55:66'}
 {'_time':'2017-09-01 05:13:16', 'MAC':'11:22:33:44:55:66'}
 {'_time':'2017-09-01 05:13:19', 'MAC':'11:22:33:44:55:66'}]

Python에서 처리 결과를 Splunk에 전달 (표시)하고 파일로 내보내기



위와는 반대로 Python에서 Splunk로 데이터를 전달하려면 다음 방법을 사용하십시오.
splunk.Intersplunk.outputResults(results, messages = None, fields = None, mvdelim = '\n', outputfile = sys.stdout)

필요한 인수의 "results"는 "getOrganizedResults"가 반환하는 "results"와 마찬가지로 사전 목록입니다. 또, 인수 "outputfile"에 파일 오브젝트를 지정하는 것으로, 파일에의 기입도 가능합니다.

사용 예



사용 예로 Splunk에서받은 결과의 "MAC"필드가 "11:22:33:44:55:66"이면 "decision"필드에 "known"을, 다른 경우는 "unknown"을 설정합니다. 그런 다음 결과를 CSV 파일에 저장하고 Splunk에 표시하도록 사용자 지정 검색 명령을 만듭니다.

덧붙여 Splunk에서의 Python을 이용한 커스텀 검색 커멘드의 만드는 방법은 이하에서 소개하고 있으므로, 모르는 분은 참조해 주시면 좋겠습니다.
맞춤 검색 명령을 만드는 방법(Splunk)

로그의 샘플로서 다음의 무선 LAN AP의 로그를 사용합니다.
(STA 뒤에 MAC 주소가 기재되어 있습니다.)
2017/09/01 09:13:51  LAN  WLAN(STA_DEAUTH): STA(11:22:33:44:55:66) is deauthed!
2017/09/01 09:13:34  LAN  WLAN(RSN_CONNECT): STA(11:22:33:44:55:66) is associated!
2017/09/01 09:04:29  LAN  WLAN(STA_DEAUTH): STA(11:22:33:44:55:66) is deauthed!
2017/09/01 09:04:23  LAN  WLAN(RSN_CONNECT): STA(11:22:33:44:55:66) is associated!
2017/09/01 08:34:09  LAN  WLAN(STA_DEAUTH): STA(11:22:33:44:55:66) is deauthed!
2017/09/01 08:34:01  LAN  WLAN(RSN_CONNECT): STA(11:22:33:44:55:66) is associated!
2017/09/01 08:03:48  LAN  WLAN(STA_DEAUTH): STA(11:22:33:44:55:66) is deauthed!
2017/09/01 08:03:42  LAN  WLAN(RSN_CONNECT): STA(11:22:33:44:55:66) is associated!
2017/09/01 07:36:51  LAN  WLAN(STA_DEAUTH): STA(33:22:33:44:55:66) is deauthed!
2017/09/01 07:36:35  LAN  WLAN(RSN_CONNECT): STA(33:22:33:44:55:66) is associated!
2017/09/01 07:34:18  LAN  WLAN(STA_DEAUTH): STA(11:22:33:44:55:66) is deauthed!
2017/09/01 07:34:10  LAN  WLAN(RSN_CONNECT): STA(11:22:33:44:55:66) is associated!

파이썬 코드는 다음과 같습니다.

check_mac_address.py
import splunk.Intersplunk

#Splunkのサーチの結果を受け取る
results, dummyresults, settings = splunk.Intersplunk.getOrganizedResults()

#MACアドレスを見て判定する
for result in results:
    if result['MAC'] == '11:22:33:44:55:66':
        result['decision'] = 'known'
    else:
        result['decision'] = 'unknown'

#処理結果をCSVファイルで保存する
splunk.Intersplunk.outputResults(results, outputfile = open("result.csv","w"))

#処理結果をSplunk上で表示する
splunk.Intersplunk.outputResults(results)

아래의 검색 문장에서 Splunk의 처리 결과를 작성한 커스텀 검색에 건네줍니다.
index=ap_idx
|rex field=_raw "STA\((?<MAC>.*)\)"
|table _time MAC
|run check_mac_address

아래 그림과 같이 Splunk 상에 표시, 또한 스크립트와 같은 디렉토리에 "result.csv"라는 이름으로 결과가 저장됩니다.

좋은 웹페이지 즐겨찾기