Фильтр на основе выражения 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

Он не работает! (хотя содержит работает)

начинается с неверно или это использование неверно?

Версия:

# 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
0
задан 9 October 2019 в 10:20
1 ответ

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

$msg startswith ' Did not'  and 
0
ответ дан 23 November 2019 в 04:16

Теги

Похожие вопросы