Traitez le résultat de l'exécution de Splunk en utilisant Python et enregistrez-le dans un fichier

Je vais vous montrer comment traiter le résultat de l'exécution de Splunk en utilisant Python.

Recevoir le résultat de l'exécution de Splunk

Utilisez la méthode suivante pour recevoir le résultat de l'exécution de Splunk sur Python.

python


  splunk.Intersplunk.getOrganizedResults(input_str = None)

Cette méthode renvoie le résultat de l'instruction de recherche juste avant l'exécution sous la forme d'une liste de dictionnaires. Par exemple, dans le cas du résultat d'exécution indiqué dans la figure ci-dessous スクリーンショット 2017-09-18 15.01.36.png

Le formulaire retourné par la méthode est le suivant. Le nom du champ est la clé du dictionnaire.

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'}]

Passer (afficher) le résultat du traitement en Python à Splunk et l'écrire dans un fichier

Contrairement à ce qui précède, utilisez la méthode suivante pour transmettre des données de Python à Splunk.

python


splunk.Intersplunk.outputResults(results, messages = None, fields = None, mvdelim = '\n', outputfile = sys.stdout)

L'argument requis «résultats» est une liste de dictionnaires, tout comme les «résultats» renvoyés par «getOrganizedResults». Vous pouvez également écrire dans un fichier en spécifiant un objet fichier dans l'argument "outputfile".

Exemple d'utilisation

A titre d'exemple d'utilisation, si le champ "MAC" du résultat reçu de Splunk est "11: 22: 33: 44: 55: 66", mettez "connu" dans le champ "décision", sinon mettez "inconnu". Ensuite, enregistrez le résultat dans un fichier CSV et créez une commande de recherche personnalisée pour l'afficher dans Splunk.

De plus, comment créer une commande de recherche personnalisée à l'aide de Python dans Splunk est présenté ci-dessous, donc si vous ne le connaissez pas, veuillez vous y référer. Comment créer une commande de recherche personnalisée (Splunk)

Utilisez le journal AP LAN sans fil suivant comme exemple de journal. (L'adresse MAC est répertoriée après STA.)

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!

Le code Python ressemble à ceci:

check_mac_address.py


import splunk.Intersplunk

#Recevoir les résultats de la recherche Splunk
results, dummyresults, settings = splunk.Intersplunk.getOrganizedResults()

#Jugez en regardant l'adresse MAC
for result in results:
    if result['MAC'] == '11:22:33:44:55:66':
        result['decision'] = 'known'
    else:
        result['decision'] = 'unknown'

#Enregistrez le résultat du traitement sous forme de fichier CSV
splunk.Intersplunk.outputResults(results, outputfile = open("result.csv","w"))

#Afficher le résultat du traitement sur Splunk
splunk.Intersplunk.outputResults(results)

Dans l'instruction de recherche suivante, transmettez le résultat du traitement de Splunk à la recherche personnalisée créée.

python


index=ap_idx
|rex field=_raw "STA\((?<MAC>.*)\)"
|table _time MAC
|run check_mac_address

Il sera affiché sur Splunk comme indiqué ci-dessous, et le résultat sera enregistré sous "result.csv" dans le même répertoire que le script. スクリーンショット 2017-09-18 21.10.43.png

Recommended Posts

Traitez le résultat de l'exécution de Splunk en utilisant Python et enregistrez-le dans un fichier
Essayez de créer un fichier compressé en utilisant Python et zlib
[Python] Vous pouvez enregistrer un objet dans un fichier en utilisant le module pickle.
Enregistrez le modèle pystan et les résultats dans un fichier pickle
J'ai essayé de faire un processus d'exécution périodique avec Selenium et Python
Exporter les résultats de la recherche de publication dans un fichier à l'aide de l'API Mattermost
Comment diviser et enregistrer un DataFrame
De Python à l'utilisation de MeCab (et CaboCha)
[Python] Comment récupérer un fichier html local et le générer au format CSV à l'aide de Beautiful Soup
Comment diviser et traiter une trame de données à l'aide de la fonction groupby
J'ai créé un exemple pour accéder à Salesforce en utilisant Python et Bottle
Je souhaite créer une application Web en utilisant React et Python flask
Python - Obtenez le taux de bitcoin BTC / JPY à partir de bitflyer à intervalles réguliers et enregistrez-le dans un fichier
Comment lire un fichier CSV avec Python 2/3
Créer un fichier GIF en utilisant Pillow en Python
[Python] Fractionner un gros fichier Flask en utilisant Blueprint
Comment créer un fichier JSON en Python
Créer une carte Web en utilisant Python et GDAL
J'ai essayé de lire un fichier CSV en utilisant Python
Enregistrer l'objet dans un fichier avec pickle
Exporter la version Python3 OpenCV KeyPoint dans un fichier
Exécutez des fichiers Python à partir de HTML en utilisant Django
Créez un fichier MIDI en Python en utilisant pretty_midi
Je veux écrire dans un fichier avec Python
J'ai essayé de faire un processus périodique avec CentOS7, Selenium, Python et Chrome
Essayez d'obtenir une page Web et un fichier JSON en utilisant la bibliothèque Requests de Python
[Python] Combiner des listes contenant des nombres en chaînes et les écrire dans un fichier de sortie
Enregistrez le tableau numpy dans un fichier wav à l'aide du module wave
[Python] Smasher a essayé de faire du processus de chargement de la vidéo une fonction à l'aide d'un générateur
Comment lire les fichiers de numéros de série en boucle, les traiter et les représenter graphiquement
Comment configurer un environnement Python à l'aide de pyenv
Création d'un module pour surveiller les mises à jour des fichiers et des URL
[Python3] Connexion à Oracle Database et exécution de SQL [cx_Oracle]
J'ai effectué un processus de connexion / déconnexion en utilisant Python's Bottle.
(Python) Essayez de développer une application Web en utilisant Django
Un mémorandum pour exécuter un script python dans un fichier bat
Démoniser un processus Python
Je veux échantillonner au hasard un fichier avec Python
Connectez realsense D435 à un PC sur lequel Ubuntu 16.04 est installé et enregistrez la vidéo de profondeur avec python
Une histoire sur un débutant Python essayant d'obtenir des résultats de recherche Google à l'aide de l'API
Implémentation d'un générateur en utilisant Python> link> yield et next ()> yield
Comment créer un package Python à l'aide de VS Code
Comment enregistrer une table récupérée par python en csv
[Mac] Un moyen très simple d'exécuter des commandes système en Python et de générer les résultats
Script Python qui crée un fichier JSON à partir d'un fichier CSV
Enregistrer des listes, des dictionnaires et des taples dans des fichiers externes python
Comment exécuter une commande à l'aide d'un sous-processus en Python
Sortie d'un vidage binaire en binaire et retour dans un fichier binaire
[Python] Démarrez un fichier de commandes à partir de Python et passez des variables.
Comment créer un environnement d'exécution virtuelle pour Python à l'aide de Visual Studio Code et de pipenv sur une machine Windows (également le notebook Jupyter)
[C / C ++] Passez la valeur calculée en C / C ++ à une fonction python pour exécuter le processus et utilisez cette valeur en C / C ++.
Python --Lisez des données à partir d'un fichier de données numériques pour trouver des matrices, des valeurs propres et des vecteurs propres distribués co-distribués
Une histoire qui facilite l'estimation de la surface habitable à l'aide d'Elasticsearch et de Python
Je souhaite créer une source sonore de karaoké en séparant les instruments et les voix en utilisant Python
Je veux faire un changeur de voix en utilisant Python et SPTK en référence à un site célèbre
Essayez de le faire avec GUI, PyQt en Python