Анализ системных журналов Cisco с помощью регулярных выражений

#regex #splunk

#регулярное выражение #splunk

Вопрос:

У меня есть три типа журналов, которые я хотел бы проанализировать:

Сообщение №1: Ввод имени пользователя (random@somewhere.org ) с длиной (253), созданной для мобильных устройств aa: aa: aa:aa:aa:aa

Ожидаемые совпадения:

  • random@somewhere.org
  • aa: aa:aa:aa:aa:aa

Сообщение # 2: удалена запись имени пользователя (hello) для мобильных устройств aa: aa: aa:aa:aa:aa:aa

Ожидаемые совпадения:

  • здравствуйте
  • aa: aa:aa:aa:aa:aa

Сообщение № 3 Гостевой пользователь, вошедший в систему с учетной записью пользователя (randomnonexistentuser) с MAC-адресом aa: aa: aa:aa:aa:aa:aa, IP-адрес 127.0.0.1.

Ожидаемые совпадения:

  • randomnonexistentuser
  • aa: aa:aa:aa:aa:aa
  • 127.0.0.1

Пока у меня есть это регулярное выражение для идентификации MAC-адресов (помеченных как мобильные в двух из трех примеров): https://regex101.com/r/qFE95M/14

У меня также есть это регулярное выражение…

 (?P<IP_address>[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3})
  

…чтобы найти IP-адрес. Однако я не уверен, как сделать только эту именованную группу необязательной и связать ее с частью MAC-адреса.

Наконец, у меня есть это регулярное выражение…

 ^[^(n]*((?P<user_account>[^)] ))
  

… чтобы найти имена пользователей (могут быть адреса электронной почты, отдельные слова и т.д.). Но опять же, я не уверен, как связать это с двумя другими именованными группами.

Как мне согласовать эти три соответствия вместе, чтобы он нашел их в трех сообщениях выше?

Комментарии:

1. Если порядок этих трех сведений всегда будет одинаковым, то вы можете использовать одно регулярное выражение, где вы можете сделать каждую часть необязательной, в противном случае будет лучше использовать отдельное регулярное выражение для поиска каждой из этих сведений.

2. это хорошая идея — спасибо!

Ответ №1:

что-то вроде этого должно предоставить вам все в именованной группе: https://regex101.com/r/qFE95M/15

Комментарии:

1. спасибо — это определенно работает. есть ли у вас какие-либо предложения, чтобы сделать его менее зависимым от слов, предшествующих каждому элементу?

2. что ж, если вы можете дать мне еще несколько примеров данных, я могу сделать регулярное выражение более надежным. Проблема с именем пользователя в скобках заключается в том, что в строке может быть больше скобок. А что, если кто-то войдет в систему с именем пользователя 253? Итак, если вы можете предоставить мне больше данных, я могу сузить регулярное выражение, чтобы оно соответствовало вашим потребностям.