У меня есть этот журнал:
Jan 26 01:05:47 server54 kernel: [41s58.6w4335] INPUT:DROP: IN=eth4 OUT= MAC=d3:ss:43:23:23:43 SRC=1.1.1.1 DST=127.0.0.0 LEN=40 TOS=0x00 PREC=0x00 TTL=254 ID=65259 PROTO=TCP SPT=53252 DPT=22 WINDOW=14600 RES=0x00 RST URGP=0
И я хочу настроить результаты так, чтобы они отображали только часть SRC и DST со временем, показывая сначала что-то вроде этого:
Jan 26 01:05:47 SRC=1.1.1.1 DST=127.0.0.0
Я дошел до:
tail -f -n 2 /var/log/kern.log | grep 'INPUT'
Но если я добавлю второй grep, это не сработает! и я хочу видеть результат в реальном времени, поэтому хвост должен быть там.
Принятый ответ правильный, но если вы хотите сделать его более интересным, вы можете сделать это:
red=$(tput bold;tput setaf 1)
yellow=$(tput bold;tput setaf 3)
green=$(tput bold;tput setaf 2)
magenta=$(tput bold;tput setaf 5)
normal=$(tput sgr0)
tail -f -n 30 /var/log/kern.log | grep "DROP"|sed -E "s/^([0-9a-zA-Z: ]+)([0-9]{2}:[0-9]{2}:[0-9]{2}).*(SRC=)([0-9.:]+).*$/$yellow\1$red \2$green \3$magenta\4/g"
Это раскрасит вывод, и не забудьте использовать двойная цитата вместо того одиночная цитата.
Попробуйте, если это сработает:
sed -E 's/^([0-9a-zA-Z: ]*[0-9]{2}:[0-9]{2}:[0-9]{2}).*(SRC=[0-9.:]+).*(DST=[0-9.:]+).*$/\1 \2 \3/g'
Это оставляет меня с Jan 26 01:05:47 SRC=1.1.1.1 DST=127.0.0.0
Объяснение регулярного выражения:
^
начало строки
(
начать группу захвата \ 1
[0-9a-zA-Z: ]*
ноль или более букв / двоеточие / пробел
[0-9]{2}:[0-9]{2}:[0-9]{2}
дата (nn: nn: nn)
)
конец группы захвата \ 1
.*
все персонажи
(
начать группу захвата \ 2
SRC=[0-9.:]+
SRC = за которым следует одно или несколько чисел / двоеточие / точка
)
конец группы захвата \ 2
.*
любой персонаж
(
начать группу захвата \ 3
DST=[0-9.:]+
DST = за которым следует одно или несколько чисел / двоеточие / точка
)
конец группы захвата \ 3
.*
любой персонаж
$
конец линии
Тогда мы просто используем sed
с участием -E
(расширенное регулярное выражение) для замены каждой строки в файле тремя группами захвата (\ 1 \ 2 \ 3)
Вероятно, для этого есть более короткое регулярное выражение.