日志分析與安全數據上傳腳本

最近在學習計算機網絡,想著跟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
英文地址,請注明出處:http://en.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.分析參數表達式…