doc_memo/misc/splitter-for-logs.md

35 lines
1.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Разбивает лог-файл на отдельные логи по 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"
```