当前位置: 首页 > news >正文

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

最近在学习计算机网络,想着跟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.dtcms.com/a/364339.html

相关文章:

  • 迅为RK3568开发板体验OpenHarmony—烧写镜像-安装驱动
  • 技术框架之脚手架实现
  • Trae x Vizro:低代码构建专业数据可视化仪表板的高效方案
  • HTML `<datalist>`:原生下拉搜索框,无需 JS 也能实现联想功能
  • kvm 虚拟机如何安装 qemu-guest-agent
  • C++ 面试高频考点 力扣 162. 寻找峰值 二分查找 题解 每日一题
  • C# Activator.GetObject 原理与示例:理解.NET Remoting远程调用
  • 前端学习 10-2 :验证中的SV
  • 时序数据库选型指南:为何Apache IoTDB成为工业物联网首选
  • 东土智建 | 让塔吊更聪明的“四大绝技”工地安全效率双升级
  • 亚马逊流量突围:如何用智能化关键词运营找到更多高转化机会?
  • InnoDB存储引擎-事务
  • 企业网络安全建设三阶段实战指南
  • 海康摄像头开发---JSON数据与图片分离
  • VPS云服务器高可用架构部署方案-企业级实施指南
  • “互联网 +”时代商业生态变革:以开源 AI 智能名片链动 2+1 模式 S2B2C 商城小程序为例
  • 深度学习入门:从神经网络基础到 BP 算法全解析
  • 2004-2023年各省生活垃圾无害化处理率数据(无缺失)
  • (11)用于无GPS导航的制图师SLAM(二)
  • 开源 C++ QT Widget 开发(十一)进程间通信--Windows 窗口通信
  • 远程的 develop 比你本地的 develop 更新,Git 拒绝直接覆盖
  • Python爬虫实战: 纵横中文网小说爬取方案与代码实现
  • NLP插曲番外 · 猫猫狐狐问答夜话
  • AI+教育:用BERT构建个性化错题推荐系统
  • Chapter1—设计模式基础
  • More Effective C++ 条款25:将构造函数和非成员函数虚拟化
  • 外网获取瀚高.NET驱动dll方法和使用案例
  • WSL + VSCode + Git + Node.js 开发环境配置文档
  • uni-app与Vue3,实现3D圆柱形旋转画廊效果
  • 人工智能学习:什么是RNN模型