日志分析与安全数据上传脚本

最近在学习计算机网络,想着跟python结合做一些事情。

这段代码是一个自动化脚本,它主要有三个功能:

  1. 分析日志: 它从你指定的日志文件中读取内容,并筛选出所有包含特定关键字的行。

  2. 网络交互: 它将筛选出的数据打包成 JSON 格式,并通过 HTTP 请求发送到一个指定的 API 地址。

  3. 文件管理: 它在完成分析后,会自动将原始的日志文件备份到一个新创建的文件夹中。

这个脚本将所有这些功能整合在一起,实现了从数据处理到网络通信再到文件管理的一系列自动化操作。

1.代码

import os
import sys
import json
import shutil
import subprocess
import requests
import redef analyze_and_upload(log_file_path, keyword):"""分析日志文件并上传匹配结果到API。参数:log_file_path: 日志文件路径 (str)keyword: 要搜索的关键字 (str)"""# 1. 检查文件路径是否存在if not os.path.exists(log_file_path):print(f"错误: 文件 '{log_file_path}' 不存在。")sys.exit(1)matched_logs = []try:# 2. 读取文件并使用正则表达式过滤with open(log_file_path, 'r', encoding='utf-8') as f:for line in f:if re.search(keyword, line, re.IGNORECASE):matched_logs.append(line.strip())total_matches = len(matched_logs)print(f"在文件中找到了 {total_matches} 行包含关键字 '{keyword}' 的日志。")if total_matches == 0:print("没有匹配的日志,无需上传。")returnexcept Exception as e:print(f"读取文件时发生错误: {e}")sys.exit(1)# 3. 准备数据并上传upload_data = {'keyword': keyword,'total_matches': total_matches,'matched_logs': matched_logs}upload_url = 'https://webhook.site/xxx'headers = {'Content-Type': 'application/json'}try:# 使用requests库进行POST请求response = requests.post(upload_url, data=json.dumps(upload_data), headers=headers, timeout=10)# 检查响应状态码if response.status_code == 200:print("数据上传成功。")#print("API响应:", response.json())else:print(f"数据上传失败,状态码: {response.status_code}")print("响应内容:", response.text)except requests.exceptions.RequestException as e:print(f"请求API时发生错误: {e}")# 如果你正在调试,可以在这里打印更详细的错误# print(f"请求API时发生错误: {e.__class__.__name__} - {e}")# 4. 备份文件try:backup_dir = 'log_backups'if not os.path.exists(backup_dir):os.makedirs(backup_dir)backup_file_path = os.path.join(backup_dir, os.path.basename(log_file_path) + '.bak')shutil.copy(log_file_path, backup_file_path)print(f"日志文件已成功备份到 '{backup_file_path}'。")except Exception as e:print(f"备份文件时发生错误: {e}")if __name__ == '__main__':# 获取命令行参数# 例如:python log_analyzer.py my_log.txt ERRORif len(sys.argv) != 3:print("用法: python log_analyzer.py <日志文件路径> <关键字>")sys.exit(1)log_file = sys.argv[1]search_keyword = sys.argv[2]# 调用主函数analyze_and_upload(log_file, search_keyword)

2.注

上传的url可以选用个人网站或者访问webhook.site,它会生成一个url供测试使用

注释掉response.json()的原因是,访问自己的 Webhook URL 时,它会返回一个 HTML 页面,其中包含了所有发送到该 URL 的请求的列表。这个 HTML 页面不是 JSON 格式,所以response.json()无法解析它。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/95341.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/95341.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【论文阅读】Sparse4D v3:Advancing End-to-End 3D Detection and Tracking

标题&#xff1a;Sparse4D v3&#xff1a;Advancing End-to-End 3D Detection and Tracking 作者&#xff1a;Xuewu Lin, Zixiang Pei, Tianwei Lin, Lichao Huang, Zhizhong Su motivation 作者觉得做自动驾驶&#xff0c;还需要跟踪。于是更深入的把3D-检测&跟踪用sparse…

基于 DNA 的原核生物与微小真核生物分类学:分子革命下的范式重构​

李升伟 李昱均 茅 矛&#xff08;特趣生物科技公司&#xff0c;email: 1298261062qq.com&#xff09;传统微生物分类学长期依赖形态特征和生理生化特性&#xff0c;这在原核生物和微小真核生物研究中面临巨大挑战。原核生物形态简单且表型可塑性强&#xff0c;微小真核生物…

【FastDDS】Layer DDS之Domain (01-overview)

Fast DDS 域&#xff08;Domain&#xff09;模块详解 一、域&#xff08;Domain&#xff09;概述 域代表一个独立的通信平面&#xff0c;能在共享通用通信基础设施的实体&#xff08;Entities&#xff09;之间建立逻辑隔离。从概念层面来看&#xff0c;域可视为一个虚拟网络&am…

http和https区别是什么

区别主要有以下四点&#xff1a;HTTP 是超文本传输协议&#xff0c;信息是明文传输&#xff0c;存在安全风险的问题。HTTPS 则解决 HTTP 不安全的缺陷&#xff0c;在 TCP 和 HTTP 网络层之间加入了 SSL/TLS 安全协议&#xff0c;使得报文能够加密传输。HTTP 连接建立相对简单&a…

推荐算法发展历史

推荐算法的发展历史是一部从简单规则到复杂智能&#xff0c;从宏观群体推荐到微观个性化精准推荐的 演进史。它大致可以分为以下几个阶段&#xff1a;推荐算法的发展历史是一部从简单规则到复杂智能&#xff0c;从宏观群体推荐到微观个性化精准推荐的演进史。它大致可以分为以下…

企业DevOps的安全与合规关键:三大主流DevOps平台能力对比

在数字化转型的浪潮中&#xff0c;DevOps平台已成为企业加速软件交付、提升协作效率的核心引擎。然而&#xff0c;随着应用范围的扩大&#xff0c;安全漏洞与合规风险也随之凸显。如何平衡速度与安全&#xff0c;实现高效且合规的DevOps流程&#xff0c;已成为企业亟需解决的关…

pgroll:简化PostgreSQL零停机迁移

pgroll&#xff1a;PostgreSQL零停机迁移的新思路作为后端开发者&#xff0c;我们都遇到过数据库变更的难题。想象一下&#xff0c;你需要在电商大促期间修改用户表结构——传统的ALTER TABLE可能导致锁表&#xff0c;用户下单流程中断&#xff0c;每分钟都是真金白银的损失。p…

JVM1.8与1.9的区别是什么?

一、核心机制变化 类加载器调整 JDK 1.8&#xff1a;使用三种类加载器&#xff1a; 启动类加载器&#xff08;Bootstrap&#xff09;&#xff1a;加载核心类库&#xff08;如 rt.jar&#xff09;。扩展类加载器&#xff08;ExtClassLoader&#xff09;&#xff1a;加载 JAVA_HO…

CentOS交换区处理

文章目录前言创建交换文件&#xff08;推荐&#xff09;清理旧交换区前言 很多刚开始使用 CentOS 的用户都会遇到。1GB 的交换分区在现代应用环境下确实偏小&#xff0c;很容易在内存压力大时导致系统性能下降甚至应用程序被强制终止。 关于交换分区的大小&#xff0c;没有一…

JavaScript原型与原型链:对象的家族传承系统

文章目录JavaScript原型与原型链&#xff1a;对象的"家族传承"系统 &#x1f468;&#x1f469;&#x1f467;&#x1f466;引言&#xff1a;为什么需要原型&#xff1f;原型系统三大核心概念概念关系图核心概念表一、原型基础&#xff1a;对象如何"继承"属…

数据库语法差异对比

特性MySQLMSSQLOraclepostgresql单行注释--、#&#xff08;少&#xff09;------多行注释/* *//* *//* *//* */字符串连接<code>CONCAT(str1,str2)</code>、<code>CONCAT_WS(separator, str1, str2)</code>、CONCAT&#xff08;str1,str2&#xff09;(…

GIS大学课程表都长啥样?几个地信专业的大学一周课程表

前几天&#xff0c;有个准大一的同学问&#xff1a;地信大学课程安排都是啥样的&#xff1f;简单的地理学、遥感学课程之类的对准大一的同学们来说太抽象了&#xff0c;有没有更具体一点的&#xff1f;他在新生群里问本校的学长&#xff0c;得到的课表不是这样的&#xff1a;就…

leetcode 3027. 人员站位的方案数 II 中等

给你一个 n x 2 的二维数组 points &#xff0c;它表示二维平面上的一些点坐标&#xff0c;其中 points[i] [xi, yi] 。 我们定义 x 轴的正方向为 右 &#xff08;x 轴递增的方向&#xff09;&#xff0c;x 轴的负方向为 左 &#xff08;x 轴递减的方向&#xff09;。类似的…

oracle 从一张表更新到另外一张表的方法(MERGE)

之前更新表格经常用 update aaa set (aaa.q,aaa.w) (select bbb.q,bbb.w from bbb where bbb.eaaa.e)的方法 后面学习了一个新的方法&#xff0c;MERGE法&#xff0c;这种写法更适合&#xff0c;因为对于空的值可以自定义定义其值&#xff0c;这样写存储过程的时候就不需要频繁…

Huggingface终于没忍住,OpenCSG坚持开源开放

在全球人工智能竞争进入白热化的当下&#xff0c;开源与闭源之路的选择正在成为决定未来格局的关键。当全球最大的AI开源平台Hugging Face终于承认"开源是赢得AI竞赛的关键"&#xff0c;并呼吁美国重新重视开源赛道时&#xff0c;OpenCSG&#xff08;开放传神&#x…

计算机网络模型总概述

//网络通讯 --- 不同主机之间的通信(进程间通信) 一、概述 目前使用的计算机网络模型主要分为两个&#xff1a;OSI七层模型和TCP/IP模型 相比OSI七层模型 &#xff0c;TCP/IP模型更简洁&#xff0c;更实用&#xff0c;因此目前所使用的基本都是TCP/IP模型&#xff0c;已成为…

HTTPS -> HTTP 引起的 307 状态码与HSTS

1.应用场景 主要用于了解HSTS, 以及如何合理设置, 如正式服和测试服, 开发环境; 摘要&#xff1a;当HTTPS网站返回307状态码临时重定向到HTTP时&#xff0c;会带来安全风险&#xff08;如中间人攻击和混合内容问题&#xff09;。 HSTS机制通过强制HTTPS通信可解决此问题&#…

PortSwigger靶场之DOM XSS in document.write sink using source location.search通关秘籍

一、靶场描述这个靶场在搜索查询的跟踪功能中&#xff0c;包含一个基于DOM的跨站脚本&#xff08;DOM-based XSS&#xff09;漏洞。该漏洞的产生是因为网站使用了一个名为 document.write 的 JavaScript 函数&#xff0c;这个函数会把数据直接写入到页面中。而写入的数据来源于…

深度学习篇---Pytorch常用优化器

优化器介绍&#xff1a;在 PyTorch 中&#xff0c;优化器&#xff08;Optimizer&#xff09;的作用是根据模型参数的梯度来更新参数&#xff0c;以最小化损失函数。下面用通俗易懂的方式介绍几种常用的优化器&#xff1a;1. SGD&#xff08;随机梯度下降&#xff09;最基础的优…

0903 C++类的运算符重载、静态成员与继承

Part 1.梳理思维导图一.运算符重载1.运算符重载的作用使原本只能对基本数据类型生效的运算符&#xff0c;在重载后&#xff0c;满足可以对构造类型数据生效。2.关系运算符重载a.关系运算符种类> > < < !b.分析参数表达式…