使用 Python 从文件内容组成 splunk 查询

Composing a splunk query from the file content using Python

我正在尝试通过从文本文件内容中获取值来编写 Splunk 查询。在这里我不想使用任何 Splunk modules/libraries。

这是我的简单代码 -

import pandas as pd
from pandas import ExcelWriter
from pandas import ExcelFile
import sys

df = pd.read_excel("I:\splunk_dashboards\FID_list.xlsx", sheetname='FID_lastweek')
sys.stdout = open("I:\splunk_dashboards\FID.txt", "w")


v = df['FID']
#print(df['FID'])

print(v)

这是检索特定列值并将其存储在文本文件中的简单代码。

下一步是形成一个 splunk 查询,结果存储在文本文件中。

例如下面是文本文件的结果 -

0                            CollectionLimitsValidation
1                               PaymentLimitsValidation
2                              AccountDetailsFacadeBean
3                              AccountDetailsFacadeBean

我在另一个文本文件中确实有如下所示的 splunk 查询 -

index=hfc_new_98764 host=QA FID=$(Value1_from_text_file) OR FID=$(value2_from _text_file) OR.... it goes on upto the final values

根据上面的模板,我需要一个如下所示的 splunk 查询 -

index=hfc_new_98764 host=QA FID=CollectionLimitsValidation OR FID=PaymentLimitsValidation OR FID=.... it goes on upto the final values

我需要帮助迭代文本文件中的值并将其存储在模板文件中。

我能够通过文件操作实现上述场景,这是我的完整代码 -

# -*- coding: utf-8 -*-
"""
Created on Wed May 30 18:24:04 2018

@author: Harish
"""

import pandas as pd
from pandas import ExcelWriter
from pandas import ExcelFile
import sys
import fileinput
#import os


#Getting the values from Excel sheet

df = pd.read_excel("I:\splunk_dashboards\FID_list.xlsx", sheetname='FID_lastweek')
sys.stdout = open("I:\splunk_dashboards\new.txt", "w")
df.FID.unique()
v = df['FID'].to_string(index=False)
pd.options.display.max_colwidth = 200
#print(df['FID'])
#print('"{}"'.format(v))
print(v)


#os.system("script_to_create_FID.py")

#left alignment script
sys.stdout = open("I:\splunk_dashboards\aligned_file.txt", "w")
with open("I:\splunk_dashboards\new.txt") as f:
    for line in f:
        s = line.lstrip()
        m = s.strip()
        print('"{}"'.format(m))
        #print(m)

#FID and OR values 
prefix = 'FID='
suffix = '  OR'

with open('I:\splunk_dashboards\aligned_file.txt', 'r') as src:
    with open('I:\splunk_dashboards\final_FID.txt', 'w') as dest:
       for line in src:
           dest.write('%s%s%s\n' % (prefix, line.rstrip('\n'), suffix))


#Added Splunk index here      
for linenum,line in enumerate( fileinput.FileInput("I:\splunk_dashboards\final_FID.txt",inplace=1) ):
    if linenum==0 :
        print 'index=hfc_new_98764 host=QA" NOT(WARN=yes)'
        print line.rstrip()
    else:
        print line.rstrip()

#Add sort function at the end
a = '| stats count As NumberOfCalls, count(eval(ERCD=0)) AS "Success" ,count(eval(ERCD!=0)) AS "Failures" by FID | sort – Failures'
with open("I:\splunk_dashboards\final_FID.txt","a") as text:    
    text.writelines(a)

第 1 步 - 使用从 excel 获取的 FID 列表创建一个新的文本文件 第 2 步 - 格式化文本文件 第 3 步 - 在查询的前面和最后附加 'FID' 和 'OR' 第 4 步 - 生成查询