es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Patrón Grok con campos opcionales al final de la línea.

Quiero “comprender” estas dos líneas:

usg210 CEF:0|ZyXEL|USG210|4.65(AAPI.1)|0|Control de Acceso|5|devID=bccf4fxxxxxx src=192.168.1.228 dst=255.255.255.255 spt=7303 dpt=7303 msg=Coincide con la regla predeterminada, SE DESCARTA proto=17 app=others

usg210 CEF:0|ZyXEL|USG210||0|Sitios Web Bloqueados|9|devID=bccf4fxxxxxx src=192.168.1.228 dst=23.57.22.128 spt=50938 dpt=443 msg=gameplay.intel.com : Juegos, Rule_id=5, SSI=N (Filtro de Dominio HTTPS)

Patrón:

|(?:.*)|%{DATA:class}|%{WORD:loglevel}|devID=%{WORD:mac} src=%{IPV4:ipsrc} dst=%{IPV4:ipdst} spt=%{WORD:spt} dpt=%{WORD:dpt} msg=%{GREEDYDATA:msg}( proto=%{WORD:proto} app=%{WORD:app})?

Los campos ‘proto’ y ‘app’ son opcionales, pero mi depurador (msg) se ve así: “Coincide con la regla predeterminada, SE DESCARTA proto=17 app=others” y proto y app están vacíos.

¿Alguien puede explicar cómo llenar los campos si los datos están presentes y cómo hacerlos opcionales si no están presentes?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para hacer que los campos ‘proto’ y ‘app’ sean opcionales si no están presentes, puedes ponerlos entre paréntesis seguidos de un signo de interrogación. Esto los hará opcionales como grupo.

    Para extraer los datos del mensaje del depurador, puedes agregar un grupo sin captura (indicado por ?:) antes de los campos opcionales, y luego utilizar el patrón GREEDYDATA para capturar el resto del mensaje.

    Aquí tienes un patrón actualizado que debería funcionar:

    \|(?:.*)\|%{DATA:class}\|%{WORD:loglevel}\|devID=%{WORD:mac} src=%{IPV4:ipsrc} dst=%{IPV4:ipdst} spt=%{WORD:spt} dpt=%{WORD:dpt} msg=(?:.*proto=%{WORD:proto} app=%{WORD:app})?(%{GREEDYDATA:msg})?
    

    Este patrón captura el mensaje completo en el campo ‘msg’, pero hace que los campos ‘proto’ y ‘app’ sean opcionales. Si están presentes, se extraerán como campos separados.

Comments are closed.