Ich werde Ihnen zeigen, wie Sie das Ausführungsergebnis von Splunk mit Python verarbeiten.
Verwenden Sie die folgende Methode, um das Ausführungsergebnis von Splunk on Python zu erhalten.
python
splunk.Intersplunk.getOrganizedResults(input_str = None)
Diese Methode gibt das Ergebnis der Suchanweisung unmittelbar vor der Ausführung in Form einer Wörterbuchliste zurück. Zum Beispiel im Fall des in der folgenden Abbildung gezeigten Ausführungsergebnisses
Das von der Methode zurückgegebene Formular lautet wie folgt. Der Feldname ist der Schlüssel zum Wörterbuch.
python
[{'_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'}]
Verwenden Sie im Gegensatz dazu die folgende Methode, um Daten von Python an Splunk zu übergeben.
python
splunk.Intersplunk.outputResults(results, messages = None, fields = None, mvdelim = '\n', outputfile = sys.stdout)
Das erforderliche Argument "Ergebnisse" ist eine Liste von Wörterbüchern, genau wie die von "getOrganizedResults" zurückgegebenen "Ergebnisse". Sie können auch in eine Datei schreiben, indem Sie im Argument "Ausgabedatei" ein Dateiobjekt angeben.
Wenn das Feld "MAC" des von Splunk empfangenen Ergebnisses "11: 22: 33: 44: 55: 66" lautet, setzen Sie im Feld "Entscheidung" "bekannt" und wenn nicht "unbekannt". Speichern Sie dann das Ergebnis in einer CSV-Datei und erstellen Sie einen benutzerdefinierten Suchbefehl, um es in Splunk anzuzeigen.
Darüber hinaus wird im Folgenden erläutert, wie Sie einen benutzerdefinierten Suchbefehl mit Python in Splunk erstellen. Wenn Sie ihn nicht kennen, lesen Sie ihn bitte. So erstellen Sie einen benutzerdefinierten Suchbefehl (Splunk)
Verwenden Sie das folgende WLAN-AP-Protokoll als Beispielprotokoll. (Die MAC-Adresse wird nach STA aufgeführt.)
python
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!
Der Python-Code sieht folgendermaßen aus:
check_mac_address.py
import splunk.Intersplunk
#Erhalten Sie Splunk-Suchergebnisse
results, dummyresults, settings = splunk.Intersplunk.getOrganizedResults()
#Beurteilen Sie anhand der MAC-Adresse
for result in results:
if result['MAC'] == '11:22:33:44:55:66':
result['decision'] = 'known'
else:
result['decision'] = 'unknown'
#Speichern Sie das Verarbeitungsergebnis als CSV-Datei
splunk.Intersplunk.outputResults(results, outputfile = open("result.csv","w"))
#Zeigen Sie das Verarbeitungsergebnis auf Splunk an
splunk.Intersplunk.outputResults(results)
Übergeben Sie in der folgenden Suchanweisung das Verarbeitungsergebnis von Splunk an die erstellte benutzerdefinierte Suche.
python
index=ap_idx
|rex field=_raw "STA\((?<MAC>.*)\)"
|table _time MAC
|run check_mac_address
Es wird wie unten gezeigt auf Splunk angezeigt und das Ergebnis wird als "result.csv" im selben Verzeichnis wie das Skript gespeichert.