Ответ:
Готовая программа:
from collections import Counter
ip_counts = Counter()
unauthorized_lines = []
with open('access.log', 'r', encoding='utf-8') as log_file:
for line in log_file:
line = line.rstrip('
')
if not line.strip():
continue
parts = line.split()
ip = parts[0]
status_code = parts[-2]
ip_counts[ip] += 1
if status_code == '401':
unauthorized_lines.append(line)
with open('unauthorized.log', 'w', encoding='utf-8') as output_file:
for line in unauthorized_lines:
output_file.write(line + '
')
max_requests = max(ip_counts.values())
most_active_ips = [ip for ip, count in ip_counts.items()
if count == max_requests]
print('Количество запросов по IP:')
for ip, count in ip_counts.items():
print(f'{ip}: {count}')
print(f'Максимальное количество запросов: {max_requests}')
print('IP-адреса с максимальным количеством запросов:',
', '.join(most_active_ips))Для приведённого файла результаты будут такими:
- 192.168.1.1 — 2 запроса;
- 192.168.1.2 — 1 запрос;
- 192.168.1.3 — 1 запрос.
В файл unauthorized.log будет записана строка с IP-адресом 192.168.1.2 и кодом ответа 401.
Ответ: наиболее активный IP-адрес — 192.168.1.1, количество запросов — 2.
![Фото задания: Задание 2. Информатика (алгоритмизация): дан файл access.log в формате: 192.168.1.1 - - [01/Oct/2025:10:15:30 +0000] "GET…](https://photoai.euroki.org/img_1788104436484.jpg)