rsyslog
упрощает эту задачу, поскольку вы можете сопоставлять аспекты любого приходящего сообщения.
Включите такой фрагмент (в моем случае я поместил файл *. Conf
в /etc/rsyslog.d/
):
if $programname == 'sshd' then {
if $msg contains 'Invalid user' then { # adjust to your needs
*.* -/var/log/sshd-fails.log
}
stop # discard all other messages from sshd
}
Можно найти документацию здесь .
Вам нужна опция extendedglob
для (#b)
.
Также 05 + 1
дает 6
, а не 06
.
Вы можете сделать (с extendedglob
иhistsubstpattern
)
^(#b)E(<->)^E${(l:2::0:)$((match[1]+1))}
или:
echo ${_//(#b)E(<->)/${(l:2::0:)$((match[1]+1))}
<->
является формой оператора сопоставления <x-y>
положительных десятичных чисел, в котором обе границы опущены, поэтому соответствует любая не-пустая последовательность десятичных цифр. То же, что и [0-9]##
(, но для ##
требуется расширенный -глобус, а для <x-y>
нет ).(l:2::0:)
(обратите внимание, что это строчная буква L, а не цифра 1
)— это левый -флаг расширения параметра заполнения, здесь с 0
s, длиной 2
.