![Синтаксис файла rsyslog conf несколько фильтров](https://rvso.com/image/762152/%D0%A1%D0%B8%D0%BD%D1%82%D0%B0%D0%BA%D1%81%D0%B8%D1%81%20%D1%84%D0%B0%D0%B9%D0%BB%D0%B0%20rsyslog%20conf%20%D0%BD%D0%B5%D1%81%D0%BA%D0%BE%D0%BB%D1%8C%D0%BA%D0%BE%20%D1%84%D0%B8%D0%BB%D1%8C%D1%82%D1%80%D0%BE%D0%B2.png)
Я настраиваю rsyslog в системе Red Hat 8. У меня работает первая часть, которая фильтрует на основе исходного IP-адреса и записывает логи в определенный файл, например так:
if $fromhost-ip startswith '10.1.2.45' then /var/log/test_all.log
& ~
Что я хотел бы сделать, хотя не могу понять правильный синтаксис, так это проверить наличиеIP-адрес хостаиauthprivобъект и записать его в файл.
Я знаю, что мне нужно это выражение перед тем, которое я перечислил выше, но я не могу заставить его работать. Я также пробовал local7
(логи загрузки), и это тоже не сработало. Следующие два примера — это синтаксисы, которые я пробовал, но они не сработали:
Пример 1:
if $fromhost-ip startswith '10.1.2.45' and $syslogfacility-text == 'local7' then /var/log/test_boot.log
& stop
if $fromhost-ip startswith '10.1.2.45' and $syslogfacility-text == 'local10' then /var/log/test_secure.log
& stop
if $fromhost-ip startswith '10.1.2.45' then /var/log/test_all.log
& stop
Пример 2:
if $fromhost-ip startswith '10.1.2.45' and $syslogfacility-text == 'authpriv.*' then /var/log/test_secure.log
& stop
if $fromhost-ip startswith '10.1.2.45' then /var/log/test_all.log
& stop
решение1
Решение найдено здесь: Синтаксис конфигурации rsyslog
if $fromhost-ip startswith '10.1.2.45' then {
authpriv.* -/var/log/test_secure.log
-/var/log/test_all.log
& stop
}