Сплиттер логов
This commit is contained in:
parent
17ebb1d483
commit
857dceeb43
@ -16,3 +16,6 @@
|
|||||||
|
|
||||||
## Nginx / Apache
|
## Nginx / Apache
|
||||||
* [Ограничение доступа по User-Agent (на примере GPTBot)](nginx/nginx-ban-user-agent.md)
|
* [Ограничение доступа по User-Agent (на примере GPTBot)](nginx/nginx-ban-user-agent.md)
|
||||||
|
|
||||||
|
## Разное
|
||||||
|
* [Сплиттер для разделения логов](misc/splitter-for-logs.md)
|
34
misc/splitter-for-logs.md
Normal file
34
misc/splitter-for-logs.md
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
# Разбивает лог-файл на отдельные логи по ip-адресам
|
||||||
|
|
||||||
|
Все необходимые описания есть в комментариях в скрипте. Предполагается, что скрипт будет запускаться по расписанию
|
||||||
|
(cron), при этом процесс который создает логи tacacs (обычно tac_plus) будет создавать лог заново, т.к. скрипт
|
||||||
|
удаляет исходный лог.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# log_file_name -- имя лог-файла который надо разобрать (лучше указать полный путь).
|
||||||
|
log_file_name="tac_1.acc"
|
||||||
|
|
||||||
|
# out_directory -- каталог, в который надо складывать расщепленные логи
|
||||||
|
# * -- каталог должен существовать
|
||||||
|
# * -- если пустая строка "расщепление" будет происходить в текущем каталоге
|
||||||
|
# * -- несли не пустая строка, то значение переменной должно заканчиваться '/'.
|
||||||
|
out_directory=""
|
||||||
|
|
||||||
|
# ext2split -- расширение для сплит-логов
|
||||||
|
ext2split=".split_log"
|
||||||
|
|
||||||
|
# читаем файл лога построчно
|
||||||
|
cat "$log_file_name" | while IFS= read -r line; do
|
||||||
|
# обрабатываем строку (она в $line)
|
||||||
|
|
||||||
|
# находим ipv4 (первое ipv4 в строке)
|
||||||
|
ipv4=$(echo "$line" | awk '{for (i=1; i<=NF; i++) if ($i ~ /^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$/) {print $i; exit}}')
|
||||||
|
# добавление строку в соответствующий сплит-лог
|
||||||
|
echo "$line" >> "$out_directory$ipv4$ext2split"
|
||||||
|
done
|
||||||
|
|
||||||
|
# удаляем исходный лог. т.к. его уже нарезали на плит-логи.
|
||||||
|
rm -rf "$log_file_name"
|
||||||
|
```
|
Loading…
Reference in New Issue
Block a user