Contexte :

Script qui permet de collecter des informations sur une machine sur laquelle un service Splunk est installé (Core ou Forwarder).
Cette collecte utilise des commandes CLI Splunk, API Splunk ou CLI système.

Script :

Récupération :

Aller à l’URL : Github Splunk ShowMe .

Utilisation :

Aide :

$ ./splunk_showme.sh -h

Usage : splunk_showme.sh [-e] [-i] [-h] [-D] [-v] [-o <output file>]

   -e : Execute script
   -i : Display commands informations
   -h : Help
   -D : Debug script
   -o : Write output in a file
   -v : Display version

Note :
Splunk URL based on : https://docs.splunk.com/Documentation/Splunk/latest/RESTREF/RESTintrospect
Splunk CLI based on : https://docs.splunk.com/Documentation/Splunk/latest/Admin/CLIadmincommands (list, show and display without arg)

Information :

Enumération de toutes les commandes :

$ ./splunk_showme.sh -i
0 - Display Splunk Version - SPLUNKCLI - splunk version
1 - Display Splunk monitor - SPLUNKCLI - splunk list monitor
2 - Display Splunk GUID - CLI - /bin/cat /opt/splunk/etc/instance.cfg
3 - Display Splunk servername - SPLUNKCLI - splunk show servername
4 - Display Splunk default-hostname - SPLUNKCLI - splunk show default-hostname
5 - Display Splunk minfreemb (Free space in Mb to SPLUNKHOME) - SPLUNKCLI - splunk show minfreemb
6 - Display Splunk boot-start - SPLUNKCLI - splunk display boot-start
7 - Display Splunkd port - SPLUNKCLI - splunk show splunkd-port
8 - Display Splunk web port - SPLUNKCLI - splunk show web-port
9 - Display Splunk kvstore port - SPLUNKCLI - splunk show kvstore-port
10 - Display Splunk cluster-bundle-status - SPLUNKCLI - splunk show cluster-bundle-status
11 - Display Splunk datastore-dir - SPLUNKCLI - splunk show datastore-dir
......
90 - Display kernel informations - CLI - /bin/uname -a
91 - Display short disk information - CLI - /bin/df -Th
92 - EXECUTE ALL COMMANDS - ALL - 
93 - EXIT SCRIPT - QUIT -

Execution :

$ ./splunk_showme.sh -e
0 - Display Splunk Version
1 - Display Splunk monitor
2 - Display Splunk GUID
3 - Display Splunk servername
....
91 - Display short disk information
92 - EXECUTE ALL COMMANDS
93 - EXIT SCRIPT



Command number to execute ? 17
Splunk user : admin
Splunk password : 


Command choice : Display Splunkd status
  Command execution : splunk status splunkd
  Output :

splunkd is running (PID: 1332).
splunk helpers are running (PIDs: 1336 1350 1506 1562).

Possibilité de lancer toutes les commandes, dans la version 0.1 via le choix 92.
En ajoutant l’option -o outputfile.log permet de sauvegarder dans un fichier la sortie des commandes (sans les entrées claviers).

Ajout de commandes :

Il y a 3 types de commandes :

  • SPLUNKCLI : commande Splunk : $SPLUNK_HOME/bin/splunk …
  • SPLUNKURL : API local Splunk : https://127.0.0.1:8089/…
  • CLI : Commande système/OS

Syntaxe du bloque à ajouter :

  • indice 0 : Description courte de la commande
  • indice 1 : Commande ou URL
  • indice 2 : Type de commande : CLI/SPLUNKCLI/SPLUNKURL
  • indice 3 : Demande d’authentication : 0=No 1=Yes

SPLUNKCLI :

Bloque à ajouter :

arr[0,"${index}"]="Display Splunk ......."
arr[1,"${index}"]="splunk ....."
arr[2,"${index}"]="SPLUNKCLI"
arr[3,"${index}"]="1"
let "index++"

Indice 1, chemin par défaut : $SPLUNK_HOME/bin/.
Note : commande sans argument.

SPLUNKURL :

Bloque à ajouter :

arr[0,"${index}"]="Get desc......"
arr[1,"${index}"]="/URI/PATH"
arr[2,"${index}"]="SPLUNKURL"
arr[3,"${index}"]="1"
let "index++"

Indice 1, ajout de l’URI (aprés https://127.0.0.1:8089/).

CLI :

Bloque à ajouter :

arr[0,"${index}"]="Command informations"
arr[1,"${index}"]="BINARY_PATH with option"
arr[2,"${index}"]="CLI"
arr[3,"${index}"]="0"
let "index++"

Commande sans authentication.

Annexes :

Doc officielle Splunk - REST Introspec
Doc officielle Splunk - Splunk cli commands