26 lines
1.4 KiB
Markdown
26 lines
1.4 KiB
Markdown
# Задача 08 — bash: разбор лога доступа
|
|
|
|
Написать `solution.sh`, который принимает путь к файлу лога (формат nginx/apache access.log)
|
|
и печатает ровно четыре строки:
|
|
|
|
```
|
|
TOTAL <число строк в файле>
|
|
TOP <ip> <число запросов>
|
|
TOP <ip> <число запросов>
|
|
TOP <ip> <число запросов>
|
|
5XX <число ответов со статусом 500-599>
|
|
```
|
|
|
|
Правила:
|
|
- IP — первое поле строки;
|
|
- TOP — три самых частых IP по убыванию числа запросов; при равенстве — по возрастанию
|
|
строки IP (лексикографически);
|
|
- если уникальных IP меньше трёх — печатать столько строк TOP, сколько есть;
|
|
- файл может быть большим (миллион строк): построчный bash-цикл по строкам не пройдёт
|
|
по времени — нужен awk/sort или один-два прохода;
|
|
- пустой файл: `TOTAL 0`, `5XX 0`, строк TOP нет.
|
|
|
|
Запуск: `bash solution.sh access.log`
|
|
Проверка: `python3 grade.py 08` (тест гоняет скрипт на фикстуре и на большом логе).
|
|
Критерий: точное совпадение вывода, код возврата 0.
|