[英]Regex to match IPTables src and dst mac address
我想使用rsyslog解析iptables日志。 除mac地址外,一切正常。
日志如下所示:
May 24 23:24:14 firewall kernel: [1199323.036594] FORWARD: IN=eth1 OUT=eth0 MAC=74:d4:35:18:3d:f0:9c:c7:a6:f1:5a:0f:08:00 SRC=1.2.3.4 DST=192.168.1.3 LEN=125 TOS=0x00 PREC=0x00 TTL=59 ID=20570 DF PROTO=TCP SPT=443 DPT=50485 WINDOW=60368 RES=0x00 ACK PSH URGP=0
“ Mac = ...”包含目標mac(前六個),源mac(下一個6)和其他兩個塊。
我想將其拆分為源和目標Mac。 此正則表達式與第一個mac匹配:
(([0-9A-Fa-f][0-9A-Fa-f][-:]){5}[0-9A-Fa-f][0-9A-Fa-f])
但是我怎么只能匹配第二台Mac? 最后兩個塊可以忽略...
將您已經編寫的正則表達式加倍,但在中間插入冒號即可
([0-9A-Fa-f][0-9A-Fa-f][-:]){5}[0-9A-Fa-f][0-9A-Fa-f])[-:](([0-9A-Fa-f][0-9A-Fa-f][-:]){5}[0-9A-Fa-f][0-9A-Fa-f])
從此提取第三個捕獲組以獲取第二個MAC地址。
捕獲組按其開括號的順序編號。 因此,第一組給出第一個MAC地址。 第二和第四組是重復的十六進制數字和分隔符。
如果僅第二個MAC地址應匹配,則將重復表達式更改為使用不包含括號的括號(?:
和)
並省略第一對括號以給出:
(?:[0-9A-Fa-f][0-9A-Fa-f][-:]){5}[0-9A-Fa-f][0-9A-Fa-f][-:]((?:[0-9A-Fa-f][0-9A-Fa-f][-:]){5}[0-9A-Fa-f][0-9A-Fa-f])
這些正則表達式已使用Notepad ++ 6.3.2測試
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.