2012-09-07 2 views
0

J'ai besoin d'une regex rsyslog pour transférer tous les messages contenant le mot "FIREWALL" vers un serveur distant. Le format du journal d'origine est:regex pour que rsyslog exclue un motif

24 juillet noyau 16:33:09 de FW02: [3.456.825,472985] FIREWALL_DENY_IN: IN = OUT = eth2 MAC = ff: ff: ff: ff: ff: ff: 00: 1b: 78: e4: b3: 24: 08: 00 SRC = 10.101.103.193 DST = 10.101.103.255 LEN = 237 TOS = 0x00 PREC = 0x00 TTL = 64 ID = 0 DF PROTO = UDP SPT = 51512 DTC = 694 LEN = 217

Le format de journal requis est d'être sans les temps du noyau:

24 juillet 16:33:09 du noyau FW02: FIREWALL_DENY_IN: IN = eth2 OUT = MAC = ff: ff: ff: ff: ff: ff: 00: 1b: 78: e4: b3: 24: 08: 00 SRC = 10.101.103.193 DST = 10.101. 103,255 LEN = 237 TOS = 0x00 = 0x00 PREC TTL = 64 ID = 0 DF PROTO = UDP SPT = 51512 = 694 DTCoq LEN = 217

Mon expérience avec regex est basique. J'ai pu faire correspondre la partie que je dois exclure avec: [. * [0-9] * \ [0-9] * \]

mais c'est tout. Le regex doit être validée sur http://www.rsyslog.com/regex/

Répondre

0

Disclaimer: Je ne sais pas comment fonctionne rsyslog, mais peut-être l'expression rationnelle ci-dessous peut aider

^([^[]*).*\](.*)$

submatch 1:

"Jul 24 16:33:09 FW02 kernel: "

submatch 2:

" FIREWALL_DENY_IN: IN=eth2 OUT=MAC=ff:ff:ff:ff:ff:ff:00:1b:78:e4:b3:24:08:00 SRC=10.101.103.193 DST=10.101.103.255 LEN=237 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=UDP SPT=51512 DPT=694 LEN=217"