(c) Larry Ewing, Simon Budig, Garrett LeSage
с 1994 г.

Кафедра Информатики и Математического Обеспечения

ПетрГУ | ИМиИТ | О кафедре | Мобильные платформы | Лаборатория ИТС | Семинары НФИ/AMICT
Сотрудники | Выпускники | Учебный процесс | Табель-календарь | Курсовые и выпускные работы
Вычислительные ресурсы | Публикации | Архив новостей | Контактная информация

Цель работы

Изучить возможности языка sed по пакетной обработке текстовых файлов и языка awk по фильтрации структурированных текстов.

Описание работы

В рамках лабораторной работы необходимо написать сценарии shell scamlist.sh и webanalizer.sh, позволяющие, соответственно, построить список адресов отправителей "нигерийских писем" и подсчитать статистику использования web-сервера.

Нигерийские письма

Нигерийские письма (nigerian scam) — разновидность мошенничества на основе массовых электронных рассылок (спама). В предлагаемом задании необходимо написать сценарий shell, который извлекает адреса отправителей писем из специального конфигурационного файла блокирования и выводит в файл по одному адресу на строке.

Файл настроек блокирования имеет следующий формат: любой текст после символа # считается комментарием и игнорируется, остальной текст может представлять либо директивы, либо адреса, причем, не вдаваясь в специфику, будем считать адресом: а) любую последовательность из четырех чисел, разделенных точкой, и пятым числом через косую черту, б) любую последовательность из четырех чисел, разделенных точкой, в) любую последовательность из одного, двух или трех чисел, разделенных точками и оканчивающуюся на точку. Пример файла настроек для тестирования размещен здесь.

Сценарий должен получать два параметра, первый задает имя файла настроек, второй — имя выходного файла. Если сценарий получает меньше параметров, чем необходимо, файл, заданный первым параметром, не существует, или файл, заданный вторым параметром не доступен для записи, должны выводиться соответствующие диагностические сообщения.

Статистика использования web-сервера

Web-сервер фиксирует все запросы, поступающие с клиентских машин в лог-файле — внутреннем журнале событий. Лог-файл имеет четкую структуру, каждая строка состоит из набора полей. Пример лог-файла размещен здесь. Лог-файлы размещены в /var/log/apache2.

Вам необходимо написать сценарий shell, который получает единственный параметр — путь к лог-файлу, подсчитывает и выводит следующую статистику: а) в файл addresses — список адресов клиентов, с которых поступали запросы (адрес размещен в первом поле записи, строки, имеющие в первом поле двоеточие должны быть проигнорированы), б) в файл users — имена пользователей, к домашним страницам которых осуществлялся доступ (имя владельца домашней странички следует в запросе после символа ~ или комбинации %7E, обозначающей тильду) и количество обращений к страничке каждого пользователя, в) в файл traffic — суммарный объем данных за каждый из дней (набор строк вида дата объем, объем размещается после кода ответа сервера, а тот в свою очередь после запроса, например, в строке 172.16.181.220 - - [26/Feb/2007:14:54:27 +0300] "GET /~afomin/skidka.gif HTTP/1.1" 404 1174 "http://tourauto.ru/" "Mozilla/4.0 объем данных в ответе сервера равен 1174 байта, строки, имеющие в поле объем прочерк, должны быть проигнорированы).

Критерии оценки работы

Оценивание задания осуществляется по следующей таблице, в которой каждое значение может быть умножено на поправочный вещественнозначный коэффициент в интервале [0; 1], отражающий степень самостоятельности выполнения задания. Всего за работу можно получить до 10 баллов

 #   Релизовано   Баллы 
1 В scamlist.sh каждый встречающийся в файле адрес выводится в отдельную строку 0 - 2
2 В scamlist.sh успешно отфильтровываются и не попадают в выходной файл комментарии, директивы и пустые строки 0 - 1
3 Сценарий scamlist.sh обрабатывает все предусмотренные требованиями ошибки 0 - 2
4 Сценарий webanalyzer.sh успешно формирует список адресов клиентов 0 - 1
5 Сценарий webanalyzer.sh успешно формирует список владельцев страниц со статистикой посещаемости 0 - 2
6 Сценарий webanalyzer.sh успешно формирует список дат, зафиксированных в журнале со статистикой по объему трафика 0 - 2

Возможные штрафы приведены в таблице. Баллы по двум сценариям усредняются. Всего можно получить до 10 штрафных баллов.

 #   Описание   Штраф 
1 Отсутствие заголовочного комментария, несоответствие заголовочного комментария общепринятым соглашениям 0 - 2
2 Отсутствие пояснительных комментариев, комментирование самоочевидных конструкций (дублирование кода, а не пояснение смысла) 0 - 2
3 Присутствует дополнительный вывод, не предусмотренный требованиями (например, диагностические сообщения shell и использованных команд) 0 - 1
4 Неверно устанавливается статус завершения сценария 0 - 1
5 Неструктурированный код, непоследовательность в стиле 0 - 2
6 Возможны (достаточно маловероятные) условия, при которых сценарий будет работать некорректно, не предусмотренные требованиями. 0 - 2

Итоговая оценка определяется суммой баллов. Работа, оцененная менее чем на 0 баллов не засчитывается.