Назад | Перейти на главную страницу

Фильтр на основе выражения rsyslog - 'начинается с' не работает

Я пытаюсь отфильтровать некоторые sshd такие журналы в отдельный файл:

 sshd[14913]: Did not receive identification string from 10.16.0.2

Я пробовал следующее, и это сработало:

if $programname == 'sshd' and
   $syslogfacility-text == 'security' and
   $syslogseverity == '6' then -/var/log/sshinfo.log
& stop

Но это также соответствует входу / выходу пользователя, поэтому я попытался добавить сообщение-совпадение фильтр:

if $programname == 'sshd' and
   $msg startswith 'Did not'  and    # <---
   $syslogseverity == '6' then -/var/log/sshinfo.log
& stop

Не работает! (хотя contains работает)

Является startswith сломан, или это неправильное использование?

Версия:

# rsyslogd -v
rsyslogd 7.4.4, compiled with:
    FEATURE_REGEXP:             Yes
    FEATURE_LARGEFILE:          No
    GSSAPI Kerberos 5 support:      Yes
    FEATURE_DEBUG (debug build, slow code): No
    32bit Atomic operations supported:  Yes
    64bit Atomic operations supported:  Yes
    Runtime Instrumentation (slow code):    No
    uuid support:               Yes

Вам следует использовать шаблон с чем-то вроде msg is -->%msg% чтобы увидеть, как начинается часть сообщения, но обычно она начинается с пробела, поэтому просто попробуйте

$msg startswith ' Did not'  and