用正则表达式解析iptables日志

时间:2018-08-13 17:28:32

标签: regex iptables

我在centos 7服务器上运行着下面的iptables访问日志。

Aug 13 17:16:33 app-srv01 kernel: newConnection - IN=eth0 OUT= MAC=56:00:01:a1:5c:b7:fe:00:01:a1:5c:b7:08:00 SRC=91.103.125.80 DST=45.33.223.166 LEN=52 TOS=0x00 PREC=0x00 TTL=113 ID=21200 DF PROTO=TCP SPT=55743 DPT=445 WINDOW=8192 RES=0x00 SYN URGP=0

使用此正则表达式([^ ]+)=([^ ]+),我可以解析IN字符串之后的所有内容,但是我需要Aug 13 17:16:33之类的app-srv01更多newConnection之类的初学者内容

有些人可以帮助我完成此正则表达式。

谢谢

1 个答案:

答案 0 :(得分:0)

您可以尝试从日志中获取任何条目并分成几组,例如,每个条目将是一组,依此类推。正则表达式为:

^[^ ]+|[^ ]+.您可以在这里进行测试:https://regex101.com/r/sb7dLJ/1

请记住,上面的正则表达式是pcre(php)正则表达式。我不确定确切的正则表达式是否真的可以在python中工作,因为据我所知,python regex语法是不同的。

如果要在python中使用它,则不确定为什么从一开始就需要该正则表达式。在python中,您可以使用以下代码:

Python 2.7.10 (它适用于任何python 2.7.x版本和3.x版本)

>>> logline = 'Aug 13 17:16:33 app-srv01 kernel: newConnection - IN=eth0 OUT= MAC=56:00:01:a1:5c:b7:fe:00:01:a1:5c:b7:08:00 SRC=91.103.125.80 DST=45.33.223.166 LEN=52 TOS=0x00 PREC=0x00 TTL=113 ID=21200 DF PROTO=TCP SPT=55743 DPT=445 WINDOW=8192 RES=0x00 SYN URGP=0'

>>> logline.split(' ')[0:25]

['Aug', '13', '17:16:33', 'app-srv01', 'kernel:', 'newConnection', '-', 'IN=eth0', 'OUT=', 'MAC=56:00:01:a1:5c:b7:fe:00:01:a1:5c:b7:08:00', 'SRC=91.103.125.80', 'DST=45.33.223.166', 'LEN=52', 'TOS=0x00', 'PREC=0x00', 'TTL=113', 'ID=21200', 'DF', 'PROTO=TCP', 'SPT=55743', 'DPT=445', 'WINDOW=8192', 'RES=0x00', 'SYN', 'URGP=0']
>>>

不确定这是否是您想要的...

相关问题