写在前面

最近搞了几份日志做分析

看看哪些个ip访问比较频繁,确认是不是正常访问,不是的话,就封了它

AI写个脚本实现下

用法

使用示例

使用示例

简单来说,输入python 脚本文件名.py 日志文件路径 就行了

前面是频次,后面是ip

抓取结果

抓取结果

代码实现

import re import sys import os from collections import Counter def count_ip_frequency(log_content): # 使用正则表达式匹配IP地址 ip_pattern = r'^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})' ips = re.findall(ip_pattern, log_content, re.MULTILINE) # 统计每个IP的出现次数 ip_counts = Counter(ips) # 按频次从高到低排序 sorted_ips = sorted(ip_counts.items(), key=lambda x: x[1], reverse=True) return sorted_ips def main(): # 检查命令行参数 if len(sys.argv) != 2: script_name = os.path.basename(sys.argv[0]) print(f"使用方法: python {script_name} < 日志文件路径 >") sys.exit(1) log_file = sys.argv[1] # 获取命令行传入的文件路径 try: with open(log_file, "r", encoding="utf-8") as f: log_content = f.read() # 统计IP频次 ip_stats = count_ip_frequency(log_content) # 打印结果 for ip, count in ip_stats: print(f"【{count}{ip}") except FileNotFoundError: print(f"错误:找不到文件 {log_file}") except Exception as e: print(f"处理日志时发生错误:{e}") if __name__ == "__main__": main()

从高到低或者从低到高,就是修改15行的那个True或者false


欢迎关注拓行公众号,分享各种技术博客文章

拓行——奋勇进取,开拓未来,砥砺前行

最后修改:2025 年 07 月 01 日
如果您对各种技术博客文章感兴趣,欢迎关注拓行公众号,分享各种专业技术知识~