Size: a a a

2020 February 25

D

Dmitry in E.L.K.
и понимаю что мой потоковый бот не такая уж и плохая идея была)
источник

АК

Александр Крыжановский in E.L.K.
"количество повторений" - как считать планируется?
источник

АК

Александр Крыжановский in E.L.K.
а т оу меня кажется есть готовое выражение на авк
источник

АК

Александр Крыжановский in E.L.K.
примерно на таком же наборе полей лога нжинкс применяется
источник

АК

Александр Крыжановский in E.L.K.
количество повторений считает вроде правильно
источник

АК

Александр Крыжановский in E.L.K.
awk -F#011 '$3!~/регулярка по исключению локальніх айпишников/ && $6!~/(.*урлкоторыйнеинтересует1.*|.*другойурлкоторыйнеинтересует.*)/ && $7~/(401|403)/ {array[$3]++} END {for(i in array) if(array[i] > 20) print array[i], i }' /opt/syslog/nginx.log | sort -r -n > /opt/ipserrs.txt

if [ -s ipserrs.txt ]
then
for line in $( awk '{ print $2 }' ips.txt )
do awk -v var="$line" -F#011 'BEGIN { OFS = "#" } $3 ~ var && $7~/(401|403)/ { print $3, $6, $7, $14 }' /opt/syslog/nginx.log | sort -u >> final.txt
done
fi

в моем лог формате третье поле - remote_addr
источник

АК

Александр Крыжановский in E.L.K.
if(array[i] > 20) можно убрать.
у меня это условие, что если менее 20 ошибок - чтобы не срабатывал
источник

АК

Александр Крыжановский in E.L.K.
внутри ipserrs.txt
<айпишник> <количество для этого айпишника строк выполняющих условия из первого выражения>
источник

АК

Александр Крыжановский in E.L.K.
ну а второе выражение внутри ифа аналог греп
источник

АК

Александр Крыжановский in E.L.K.
но только по единственному полю
источник

D

Dmitry in E.L.K.
Александр Крыжановский
"количество повторений" - как считать планируется?
а вот тут я встал в ступор
источник

D

Dmitry in E.L.K.
в идеале я хотел чтобы это было одно сообщение каждое 5 минут по комбинации что я скинул выше, но для меня это пока сложно
источник

АК

Александр Крыжановский in E.L.K.
ну, если использовать велосипеды и костыли...
источник

АК

Александр Крыжановский in E.L.K.
получаем за 5 минут все значения
источник

АК

Александр Крыжановский in E.L.K.
с помощью jq извлекаем в текст
источник

АК

Александр Крыжановский in E.L.K.
sort > file 1
sort -u > file 2
источник

АК

Александр Крыжановский in E.L.K.
потом для каждой строки из файла 2 с помощью grep -с считаем количество ее вхождени в файле 1
источник

АК

Александр Крыжановский in E.L.K.
всё
источник

АК

Александр Крыжановский in E.L.K.
но, медленно
источник

АК

Александр Крыжановский in E.L.K.
если раскурить на авк - будет очень быстрее
источник