簡體   English   中英

正則表達式以匹配IPTables src和dst mac地址

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM