Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
unix_shell_lab2.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
262.66 Кб
Скачать
      1. Задание для выполнения лаб. Работы №2

  1. Напишите скрипт, создающий в текущем каталоге файлы с именами, переданными в качестве пераметров.

Зайдите в каталог /home/LOGS/CHEL_bio3k/squid. Там расположен журнальный файл прокси-сервера SQUID. ВНИМАНИЕ! Файл имеет ОЧЕНЬ большой размер! Работайте с ним аккуратно! Напишите скрипты (пп. 2 – 7). В каждом задании файл access.log можно читать только один раз. Промежуточные результаты нельзя сохранять во внешних файлах. Желательно сделать каждый скрипт одним конвейером.

  1. Сколько запросов GET, POST, CONNECT, OPTIONS, HEAD и т.д. было выполнено всеми клиентами? Сколько это в % от общего числа запросов?

  2. Найдите в выводе столбец, содержащий имя учетной записи на прокси-сервере и подведите статистику по суммарному количеству запросов, сделанных каждым пользователем. Упорядочить вывод по убыванию количества.

  3. Для заданного пользователя (имя передается в качестве параметра скрипту) покажите информацию по количеству сделанных запросов: GET, POST, CONNECT и т.д. Выведите в порядке возрастания.

  4. Посчитайте общее количество скачанной заданным пользователем (имя пользователя передается скрипту в качестве параметра) информации (поле №5 от начала).

  5. Найдите столбец, содержащий информацию о HTTP-коде возврата прокси-сервера (2xx – успешно, 3xx – перенаправление, 4xx – ошибка, 5xx – ошибка конфигурации сервера). Модифицируйте п.5 таким образом, чтобы скрипт отображал по заданному пользователю суммарный объем успешно загруженных веб-страниц (2xx, 3xx) и суммарный объем сообщений об ошибках (4xx, 5xx)

  6. Найдите клиентский IP-адрес (поле №3), с которого было сделано больше всего запросов? Больше всех запросов с ошибками (4xx,5xx)?

      1. Контрольные вопросы

  1. Как задать переменную? Массив? Как получить значение переменной? Длину в символах? Количество элементов массива?

  2. Что такое переменные окружения? Зачем они нужны? Приведите примеры.

  3. Что такое специальные переменные Shell? Приведите примеры использования.

  4. Объясните смысл одинарных, двойных и обратных кавычек. В чем разница? Приведите примеры использования.

  5. Как вычисляются арифметические выражения в Shell? Можно ли производить вычисления с плавающей точкой? Как? Приведите примеры.

  6. Что такое перенаправление ввода-вывода? Как оно работает? Зачем применяется? Приведите примеры

  7. Что такое конвейер? Зачем он нужен? Приведите примеры

  8. Поясните смысл операторов ||, &&, {}, (), ;. Где удобнее всего их использовать?

  9. Расскажите о достоинствах и недостатках размещения текста скриптов в файлах и программирования в командной строке.

  10. Как можно удобно записать длинную цепочку команд с конвейерами при расположении текста скрипта в файле?

  11. Как вставить комментарии в текст программы?

  12. Приведите примеры разных способов запуска скрипта, расположенного в файле. В чем преимущества и недостатки каждого способа?

  13. Приведите примеры использования test в скриптах.

  14. Объясните конструкцию cat file | while read –a a; do echo “${a[2]}” done. Сделайте аналог без цикла.

  15. Объясните конструкцию: for i in `ls -1 ~/*.txt`; do cat ${i}; done. Придумайте несколько аналогов.

24