首页 > 编程语言 >使用 Python 操作 Splunk

使用 Python 操作 Splunk

时间:2024-07-20 23:07:32浏览次数:12  
标签:Python Splunk results client result splunklib 操作

使用 Python 操作 Splunk

目录

1 参考文档

2 安装 Python Splunk-SDK

当出现如下提示时,需要安装Splunk-SDK:

ModuleNotFoundError: No module named 'splunklib'

# 解决方式
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple splunk-sdk
# 若依然提示相同问题,需要再安装 splunklib
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple splunklib

3 连接 splunk

  • 使用splunklib.client 模块连接 Splunk.

  • 脚本如下:

    import splunklib.client as client
    
    HOST = "localhost"
    PORT = 8089
    USERNAME = "admin"
    PASSWORD = "yourpassword"
    
    # 创建服务实例并登录
    service = client.connect(
        host=HOST,
        port=PORT,
        username=USERNAME,
        password=PASSWORD)
    
    # 在console中打印安装的apps以确认连接成功
    for app in service.apps:
        print app.name
    

以上认证方式只在Enterprise Splunk 和Enterprise Free Splunk中有效。Free Splunk版本不带认证,需要配置如下:

HOST = "localhost"
PORT = 8089
USERNAME = "admin"
PASSWORD = ""

4 配置查询

  • Splunk用4种查询方式。此处我只创建一个快速查询 One-Shot search . 即不检查查询语句是否完整便开始搜索,最后等待响应结果。
  • 脚本如下:
#!/usr/bin/python3
import splunklib.client as client
import splunklib.results as results

HOST = "127.0.0.1"
PORT = 8089
USERNAME = "admin"
PASSWORD = ""

# 创建服务实例并登录
service = client.connect(
    host=HOST,
    port=PORT,
    username=USERNAME,
    password=PASSWORD)

# 设置查询语句
# 查询5分钟前到此刻的数据
kwargs_oneshot = {"earliest_time": "-5m@m", "latest_time": "now"}
# 设置查询语句
searchquery_oneshot = 'search index="index_netsec" (host="192.168.1.2" "Web-security@SYS" NOT (AttackName="信息泄露" OR AttackName= "检测curl网络爬虫")) OR (host="192.168.1.3" "192.168.1.4") | stats count by src_ip'
# 运行并保存结果
# 运行并保存运行结果,以Json格式输出数据
oneshotsearch_results = service.jobs.oneshot(searchquery_oneshot, **kwargs_oneshot, output_mode='json')
# 使用JSONResultsReader方法获取数据
reader = results.JSONResultsReader(oneshotsearch_results)
 # Get the results and display them using the     for result in reader:
    if isinstance(result, results.Message):
    	# 调试数据使用会话形式展示
        print(f'{result.type}: {result.message}')
    elif isinstance(result, dict):
        # Normal events are returned as dicts
        iplist.append('ip {}/32'.format(result['src_ip'].strip()))
print(iplist)

5 参考

标签:Python,Splunk,results,client,result,splunklib,操作
From: https://www.cnblogs.com/f-carey/p/18313938

相关文章

  • Java 语言及其常用集合类的操作,以及反射机制与注解
    目录一、Java语言概述二、Java集合框架ArrayList操作示例:HashMap操作示例:三、反射机制1.反射的示例五、总结Java是一种广泛使用的高级编程语言,因其平台独立性、简洁性及丰富的API而备受开发者青睐。一、Java语言概述 Java语言由JamesGosling等人......
  • Python:如何通过请求帖子对评论进行投票?
    我对评论进行投票的代码无法正常工作。它返回一个http500错误。我有一个使用用户登录的Python程序,它应该自动对评论进行投票。我的代码如下:frombs4importBeautifulSoupimportrequestslogin_url="https://xxxxxxxxxxx/auth/login"login_url_post="http......
  • python_day7(补1)
    数据类型​ 之前为列表类型​ 插入一个元组的介绍 之后还有字典,三者区别为括号方式()[]{}元组类型(tuple)使用:先定义一个元组数据​ vegetable_tuple='(tomato','corn','cucumber','carrot','corn','pumpkin)'与列表类型格式很像,不过只能取不能改,需要特......
  • 在 python 中写入 %appdata% 时出现奇怪的行为
    我试图将一些数据写入%appdata%。一切似乎都像Script1的输出中所示的那样工作。正在创建新目录并保存文件,并且也成功检索数据。但尝试查看文件资源管理器中的数据时,该文件夹不存在!CMD也找不到文件和目录。后来我手动创建了文件,检查了一下,发生了什么。CMD现在可以找到该文......
  • 使用 selenium 在 python 中打开 chrome 中的链接
    通过此链接https://bancadatistatisticaoas.inail.it/analytics/saw.dll?Dashboard&PortalPath=%2Fshared%2FBDS%2F_portal%2FINF_Definiti_Industria_e_Servizi我需要单击“FCostruzioni”,然后单击F41COSTRUZIONIED埃迪菲西。这是我的代码,但它不起作用。我做错了......
  • 七大排序算法的Python实现
    七大排序算法的Python实现1.冒泡排序(BubbleSort)算法思想冒泡排序通过重复交换相邻的未按顺序排列的元素来排序数组。每次迭代都将最大的元素“冒泡”到数组的末尾。复杂度分析时间复杂度:O(n^2)空间复杂度:O(1)defbubble_sort(arr):n=len(arr)for......
  • python反序列化
    之前hgame中遇到python反序列化,这次正好借分享会来尽可能详细学习一下python反序列化基础知识什么是序列化?反序列化?在很多时候为了方便对象传输,我们往往会把一些内容转化成更方便存储、传输的形式。我们把“对象->字符串”的翻译过程称为“序列化”;相应地,把“字符串->对......
  • 我在 python 项目中不断收到“无法识别图像文件中的数据”错误
    我正在尝试向我的TK窗口添加一个图标,但我不断收到一条错误消息:Traceback(mostrecentcalllast):File"C:\Users\roger\source\repos\PythonApplication\PythonApplication.py",line7,in<module>windowIcon=tk.PhotoImage(file="C:/Users/roger/Downloa......
  • Python学习笔记41:游戏篇之外星人入侵(二)
    前言在上一篇文章,我们已经创建好了项目目录,在今天,我们主要编写入口模块的功能。mainmain.py模块是我们游戏程序的入口,所有我们需要在模块中编写游戏主启动以及主页面相关的代码。当前我们的main模块是这样的,这是我们创建项目时默认生成一些代码,接下来我们就要进行我们......
  • Python学习笔记39:进阶篇(二十八)pygame的使用之按键映射及按键失效问题解决
    前言基础模块的知识通过这么长时间的学习已经有所了解,更加深入的话需要通过完成各种项目,在这个过程中逐渐学习,成长。我们的下一步目标是完成pythoncrashcourse中的外星人入侵项目,这是一个2D游戏项目。在这之前,我们先简单学习一下pygame模块。私信我发送消息python资料,......