【问题标题】:Extract filename and common name from Apache Log with Python使用 Python 从 Apache Log 中提取文件名和公用名
【发布时间】:2018-03-06 14:54:29
【问题描述】:

我正在尝试解析 apache 日志文件,希望通过 python 从 access.log 文件中提取 AD 公用名和文件名。

我的access.log文件如下:

[01/Jan/1901:12:00:01] 12.34.56.78 TLS Protocol EncryptionMethod "GET/.../filename.zip HTTP/1.1" "CN=Smith John A,......"

我要提取的是以下格式:Smith John A, filename.zip

我尝试使用来自 Github 的几个自定义 python apache 日志解析器,但没有任何运气。

有什么想法可以实现这个目标吗?

谢谢。

【问题讨论】:

    标签: python apache parsing logging


    【解决方案1】:

    非常基础。

    import re
    with open('access.log') as log:
        for line in log.readlines():
            results = [_.group() for _ in re.finditer(r'"([^"]*)"', line)]
            if len(results) == 2:
                print (results)
            else:
                print (line)
                print ("**** can't parse")
                continue
            m = re.search(r'GET\/.*?([a-z._]+) ', line, re.I)
            count = 0
            if m:
                filename = m.groups(0)[0]
                count += 1
            else:
                filename = ''
            m = re.search(r'CN=([^,]+),', line, re.I)
            if m:
                name = m.groups(0)[0]
                count += 1
            else:
                name = ''
            print (name, filename)
            if count != 2:
                print ("***can't parse filename or name")
    

    未经测试!

    该单行文件的结果:

    ['"GET/.../filename.zip HTTP/1.1"', '"CN=Smith John A,......"']
    Smith John A filename.zip
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-02
      • 1970-01-01
      • 2021-03-23
      • 1970-01-01
      • 2021-09-19
      • 1970-01-01
      • 2018-10-24
      • 2016-09-13
      相关资源
      最近更新 更多